Skip to main content
Anything with an MCP server plugs into Scout: Linear, GitHub, Notion, Postgres, Stripe, internal tools. Each server becomes one 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 an MCPContextProvider entry to _create_mcp_providers() in scout/contexts.py. Secrets come from the process env via getenv(...).
Add the secret to .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 a ContextProvider 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.

Next

Deploy Scout to Railway →