You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: EXTERNAL-MCPS.md
+25Lines changed: 25 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -43,3 +43,28 @@ mini-a goal="use the private MCP" \
43
43
```
44
44
45
45
Prefer environment variables for sensitive data and confirm the external MCP's rate limits before automating high-frequency calls.
46
+
47
+
## Aggregating multiple MCPs with mcp-proxy
48
+
49
+
When working with multiple external MCPs (or a mix of external and built-in MCPs), you can use `mcp-proxy` to aggregate them into a single unified endpoint. This simplifies configuration and provides a centralized interface for discovering and calling tools across all connected MCP servers.
50
+
51
+
### Example: Aggregate external and built-in MCPs
52
+
53
+
```bash
54
+
# Start mcp-proxy aggregating Wikipedia, DuckDuckGo, and built-in mcp-time
55
+
ojob mcps/mcp-proxy.yaml onport=9000 \
56
+
mcp="[(cmd: 'docker run --rm -i mcp/wikipedia-mcp'), (cmd: 'docker run --rm -i mcp/duckduckgo'), (cmd: 'ojob mcps/mcp-time.yaml')]"
57
+
58
+
# Now use the proxy with Mini-A
59
+
mini-a goal="search for information about Lisbon and tell me the current time there" \
`mcp-proxy` aggregates multiple downstream MCP connections (STDIO or HTTP remote) into a single unified MCP server. This enables you to expose a consolidated set of tools from various MCP sources through one endpoint, simplifying integration with LLMs and other MCP clients.
44
+
45
+
Key arguments:
46
+
47
+
-`mcp` (required): JSSLON string describing one MCP connection or an array of MCP connection descriptors. Each descriptor follows the same format used with Mini-A's `mcp=` parameter.
48
+
-`onport` (optional): Start an HTTP MCP server on the specified port.
49
+
-`libs` (optional): Comma-separated libraries or `@oPack/library.js` references to preload before connecting (useful for custom helpers or drivers).
50
+
51
+
The proxy exposes a single powerful tool:
52
+
53
+
-`proxy-dispatch`: Interact with downstream MCP connections. Supports three actions:
54
+
-`list`: List all registered connections and their tools (optionally filter by connection).
55
+
-`search`: Search for tools across connections using a text query that matches against tool names, descriptions, and annotations.
56
+
-`call`: Invoke a specific tool on a target connection (automatically resolves which connection hosts the tool if unambiguous).
57
+
58
+
Available parameters for `proxy-dispatch`:
59
+
60
+
-`action` (required): One of `list`, `search`, or `call`.
61
+
-`connection` (optional): Connection identifier or alias to scope the action.
62
+
-`query` (optional): Search text for `search` action.
63
+
-`tool` (optional): Tool name for `call` action.
64
+
-`arguments` (optional): Input arguments to forward to the downstream tool when calling.
65
+
-`meta` (optional): Metadata object forwarded to the downstream MCP call.
66
+
-`limit` (optional): Maximum number of results for `search` actions.
67
+
-`includeTools`, `includeInputSchema`, `includeAnnotations` (optional): Control verbosity of returned metadata.
68
+
-`refresh` (optional): Refresh tool metadata from downstream MCPs before executing the action.
69
+
70
+
Example — aggregate multiple STDIO MCPs and call remotely:
71
+
72
+
```bash
73
+
# Start the proxy as an HTTP server aggregating mcp-time and mcp-net
0 commit comments