MCPContextProvider, exposes a query_mcp_<slug> tool on Scout, and runs behind a dedicated sub-agent so tool-name collisions across servers stay isolated.
The full reference, including transport details and the Node-in-Docker gotcha, lives in the Scout repo: MCP_CONNECT.md.
Wire up a server
Add anMCPContextProvider entry to _create_mcp_providers() in scout/contexts.py. Secrets come from the process env via getenv(...).
- stdio (local subprocess)
- streamable-http
- sse
.env, restart Scout, and the new tool shows up:
Constructor parameters
When to pick mode=tools vs mode=default
asetup() connects on startup regardless of mode. That’s required for tools mode to discover the server’s functions, and it keeps the MCP SDK’s anyio cancel scope on the same task that aclose() will exit on.
Node-based servers in Docker
command must be on PATH inside Scout’s runtime. The ship image bundles Python (uv, uvx, python), so Python MCP servers like uvx --from mcp-server-time mcp-server-time work out of the box. Node-based servers (npx @something/mcp) need Node installed in your deploy image. Add RUN apt-get install -y nodejs npm to the Dockerfile before shipping.
Build your own provider
If your source isn’t covered by an MCP server, write aContextProvider directly. Four methods: status, astatus, query, aquery. Override aupdate if the source supports writes.
The agno.context.web.provider module is a complete reference implementation.
Troubleshooting
For more, see MCP_CONNECT.md.