Skip to content

feat: add plugins cli, external plugin support, plugin template #722

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 65 commits into from
Aug 18, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
22de2b5
feat: add support for external plugins
Aug 12, 2025
397fee0
feat(plugins): add external mcp server and associated test cases.
Aug 13, 2025
ad99a1d
fix(lint): fixed yamllint issues
Aug 13, 2025
6128d21
fix(lint): fixed flake8 issue.
Aug 13, 2025
fc41960
feat: define plugins cli and implement bootstrap command
araujof Aug 12, 2025
2f3201f
fix: implement install and package CLI commands
araujof Aug 12, 2025
650da9a
fix: remote avoid insecure shell=True in subprocess invocation
araujof Aug 12, 2025
4f7b88b
feat: add external plugin template
araujof Aug 12, 2025
ba20be2
feat: move copier config to repository root
araujof Aug 12, 2025
a0c87c6
feat: update copier template
araujof Aug 12, 2025
36ef966
feat: get default author from git config
araujof Aug 12, 2025
72e8e08
feat: update copier settings
araujof Aug 12, 2025
04aa529
fix: copier config syntax
araujof Aug 13, 2025
f9ba5cf
feat: add external plugin template modules
araujof Aug 13, 2025
442ee9e
fix: template syntax
araujof Aug 13, 2025
8e1dd2a
fix: template syntax
araujof Aug 13, 2025
9203231
fix: make template
araujof Aug 13, 2025
98c7924
feat: fix template issue
araujof Aug 13, 2025
6b4edb9
fix: toml template
araujof Aug 13, 2025
c1dcdc3
fix: plugin mcp server initialization
araujof Aug 13, 2025
2cf7b46
feat: init module for plugin framework
araujof Aug 13, 2025
aecc11b
feat: add chuck runtime and container wrapping
araujof Aug 14, 2025
7b0c382
fix: makefile template
araujof Aug 14, 2025
d216957
fix: plugins config path
araujof Aug 14, 2025
dccd570
feat: add .env.template
araujof Aug 14, 2025
d9169b7
feat: add tools and resources support
araujof Aug 15, 2025
dbcafab
fix: lint yaml
araujof Aug 15, 2025
860dc80
chore: cleanups
araujof Aug 15, 2025
b16397f
feat: update manifest.in
araujof Aug 16, 2025
c01a2db
chore: linting
araujof Aug 16, 2025
371a7d1
fix: plugin config variable
araujof Aug 16, 2025
54f312c
fix(tests): fixed doctests for plugins.
Aug 17, 2025
86ee2f0
refactor: external plugin server and plugin external API
araujof Aug 17, 2025
a8630c7
docs(plugins): removed subpackages from examples
Aug 18, 2025
9afade4
docs: update plugin docs to use public framework API
araujof Aug 18, 2025
3053810
fix(plugin): added resource payloads to base plugin.
Aug 18, 2025
3ea7595
feat: udpate test templates
araujof Aug 18, 2025
9c0efa5
feat: update test templates
araujof Aug 18, 2025
290b4d1
feat: update plugin template
araujof Aug 18, 2025
09c5082
feat: update plugin template
araujof Aug 18, 2025
6f89901
feat: update tempalte makefile
araujof Aug 18, 2025
e80d4e3
feat: add template for native plugin
araujof Aug 18, 2025
8cbd10e
feat: add readme for native template
araujof Aug 18, 2025
a4111a3
feat: force boostrap to be a subcommnand
araujof Aug 18, 2025
a9d522e
tests(plugin): added http streamable and error tests.
Aug 18, 2025
f2045e5
tests: add tests for plugins CLI
araujof Aug 18, 2025
416b969
fix: deprecation warning
araujof Aug 18, 2025
8874503
tests: add CLI tests
araujof Aug 18, 2025
457fdb5
tests: update plugin cli
araujof Aug 18, 2025
429010b
tests(plugins): added client hook tests for external plugins.
Aug 18, 2025
e8c8793
chore: update template readmes
araujof Aug 18, 2025
34c8a14
fix: lint docstrings in cli
araujof Aug 18, 2025
baa3fa4
chore: fix lint errors in docstrings
araujof Aug 18, 2025
09a79c7
chore: fix lint errors
araujof Aug 18, 2025
79cf12c
tests: add external plugin server tests
araujof Aug 18, 2025
3f89f92
chore: cleanup
araujof Aug 18, 2025
73025dc
chore: add missing docstrings
araujof Aug 18, 2025
82c4760
chore: add missing docstrings
araujof Aug 18, 2025
04ad793
tests: fix cli dryrun test
araujof Aug 18, 2025
5bdb7c4
chore: fix lint issues
araujof Aug 18, 2025
6fe7e2b
tests: fix teardown of client http tests
araujof Aug 18, 2025
a9e2011
tests: skipping flaky tests
araujof Aug 18, 2025
094ead2
docs: plugin lifecycle tools
araujof Aug 18, 2025
4e24a9b
docs: add missing plugin lifecycle doc
araujof Aug 18, 2025
cf7df00
Review, rebase and lint
crivetimihai Aug 18, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .coveragerc
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
[run]
branch = True
omit =
mcpgateway/alembic/*
*/__init__.py

[report]
exclude_lines =
Expand Down
11 changes: 11 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -163,3 +163,14 @@ SKIP_SSL_VERIFY=false
# Header Passthrough (WARNING: Security implications)
ENABLE_HEADER_PASSTHROUGH=false
DEFAULT_PASSTHROUGH_HEADERS=["X-Tenant-Id", "X-Trace-Id"]

# Enable auto-completion for plugins CLI
PLUGINS_CLI_COMPLETION=false

# Set markup mode for plugins CLI
# Valid options:
# rich: use rich markup
# markdown: allow markdown in help strings
# disabled: disable markup
# If unset (commented out), uses "rich" if rich is detected, otherwise disables it.
PLUGINS_CLI_MARKUP_MODE=rich
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ command_outputs.md
.ica.env
./snakefood.png
./snakefood.svg
./playground

.attic
.vscode/settings.json
Expand Down
1 change: 1 addition & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ include *.txt
recursive-include async_testing *.py
recursive-include async_testing *.yaml
recursive-include examples *.yaml
recursive-include plugin_templates *

# 3️⃣ Tooling/lint configuration dot-files (explicit so they're not lost)
include .env.make
Expand Down
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ CONTAINER_MEMORY = 2048m
CONTAINER_CPUS = 2

# Virtual-environment variables
VENVS_DIR := $(HOME)/.venv
VENV_DIR := $(VENVS_DIR)/$(PROJECT_NAME)
VENVS_DIR ?= $(HOME)/.venv
VENV_DIR ?= $(VENVS_DIR)/$(PROJECT_NAME)

# -----------------------------------------------------------------------------
# OS Specific
Expand Down
33 changes: 33 additions & 0 deletions copier.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
_subdirectory: plugin_templates/{{template_type}}

template_type:
type: str
help: What plugin template would you like to use?
choices:
- native
- external

plugin_name:
type: str
help: What is the plugin name?
default: MyFilter

version:
type: str
help: What is the initial version of the plugin?
default: 0.1.0

author:
type: str
help: Who is the author?
default: "{{ _copier_conf.data.default_author_name }}"

email:
type: str
help: What's the author's e-mail?
default: "{{ _copier_conf.data.default_author_email }}"

description:
type: str
help: Write a plugin description
default: A filter plugin
Loading
Loading