Commit 9611672
Olivier Gintrand
feat(api): comprehensive Virtual Meta-Server with 12 meta-tools
Implements the Virtual Meta-Server feature (#2230) — a tool aggregation
layer that enables AI agents to discover and invoke thousands of underlying
tools through a unified interface.
Meta-tools:
- search_tools: hybrid semantic + keyword search with scope filtering
- list_tools: paginated tool listing with sorting and filtering
- describe_tool: detailed tool info with schema and metadata
- execute_tool: tool execution with JSON schema validation and routing
- get_tool_categories: aggregated categories with counts
- get_similar_tools: vector similarity search for related tools
- authorize_gateway: interactive OAuth authorization with token refresh
- authorize_all_gateways: one-click authorization for all OAuth gateways
- list_resources: paginated MCP resource listing
- read_resource: read MCP resource content by URI
- list_prompts: paginated MCP prompt listing
- get_prompt: prompt template retrieval with optional rendering
Features:
- OAuth integration: propagates user identity through the call chain
- Chained OAuth flow: authorize-all endpoint chains multiple gateways
- camelCase normalization for MCP clients
- Flat argument tolerance for Copilot Studio
- Post-login redirect via cookie with safe path validation
- Observability: prompt.render and resource.read spans
- JSON serialization: orjson.dumps() for proper JSON output
- Admin UI: meta-server checkbox and hide-underlying-tools in server forms
- Preserves protect_oauth_config_for_storage() on server update
- RBAC enforcement via middleware on all meta endpoints
Closes #2230
Supersedes #3653
Signed-off-by: Olivier Gintrand <olivier.gintrand@forterro.com>1 parent a02a04b commit 9611672
File tree
126 files changed
+43484
-2959
lines changed- .github/workflows
- a2a-agents/go/a2a-echo-agent
- charts/mcp-stack
- docs
- docs
- architecture
- deployment
- development
- faq
- manage
- observability
- media/kit
- overview
- tutorials
- using
- clients
- mcp-servers
- go
- benchmark-server
- fast-time-server
- slow-time-server
- python
- data_analysis_server
- graphviz_server
- mcp-rss-search
- mcp_eval_server
- output_schema_test_server
- python_sandbox_server
- qr_code_server
- url_to_markdown_server
- rust
- fast-test-server
- filesystem-server
- src/tools
- tests
- mcpgateway
- admin_ui
- alembic/versions
- common
- meta_server
- middleware
- routers
- services
- static
- templates
- transports
- utils
- plugins/external
- cedar
- llmguard
- opa
- scripts
- tests
- load
- playwright
- entities
- operations
- security/owasp
- teams
- populate
- unit
- mcpgateway
- services
- transports
- tools_rust
- mcp_runtime
- src
- request_logging_masking_native_extension
- wrapper
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
126 files changed
+43484
-2959
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| |||
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
27 | | - | |
28 | | - | |
29 | | - | |
30 | | - | |
31 | | - | |
32 | | - | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | | - | |
37 | | - | |
38 | | - | |
39 | | - | |
40 | | - | |
41 | | - | |
42 | | - | |
43 | | - | |
44 | | - | |
45 | | - | |
46 | | - | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
872 | 872 | | |
873 | 873 | | |
874 | 874 | | |
875 | | - | |
876 | | - | |
877 | | - | |
878 | | - | |
879 | | - | |
880 | | - | |
881 | | - | |
882 | | - | |
883 | | - | |
884 | 875 | | |
885 | 876 | | |
886 | 877 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
39 | 39 | | |
40 | 40 | | |
41 | 41 | | |
42 | | - | |
| 42 | + | |
43 | 43 | | |
44 | 44 | | |
45 | 45 | | |
| |||
0 commit comments