Skip to content
Changelog

MCPConfig now publishes only the tools you list

October 1, 20261 min read

In Agno, MCPConfig(tools=[...]) mounts an AgentOS MCP server whose tools/list returns the tools you passed and nothing else, because default_tools and lifecycle_tools now both default to False. Earlier releases added the eight built-in tools, including continue_run and cancel_run, to every config that listed its own.

from agno.db.sqlite import SqliteDb
from agno.os import AgentOS, MCPConfig
 
 
def get_order_status(order_id: str) -> str:
    """Look up the shipping status of an order."""
    return f"Order {order_id} shipped."
 
 
db = SqliteDb(db_file="tmp/agentos.db")
agent_os = AgentOS(db=db, mcp=MCPConfig(tools=[get_order_status]))

We served this config from both releases and called tools/list on /mcp.

Before and now comparison of tools/list for MCPConfig(tools=[get_order_status]), real output from the AgentOS /mcp endpoint. Before, the server listed 9 tools: get_agentos_config, run_agent, run_team, run_workflow, continue_run, cancel_run, get_sessions, get_session_runs and get_order_status. Now it lists 1 tool, get_order_status.

Keep the old tool surface

This change breaks clients that call a built-in tool on a server configured with tools=[...]. Pick the flag that matches what they use:

# All eight built-in tools next to yours, as before
MCPConfig(tools=[get_order_status], default_tools=True)
 
# Only continue_run and cancel_run, for published agents, teams and workflows
MCPConfig(tools=[support_agent], lifecycle_tools=True)

lifecycle_tools=True matters when a published component can pause on a tool that needs confirmation. Without it, the paused result tells the client how to resume the run over REST. AgentOS(mcp=True) keeps all eight built-ins, and a bare MCPConfig() now raises "MCPConfig would register zero tools" at construction. An include_tags filter only scopes default tools, so it logs a warning unless default_tools=True is set.

Auth on the MCP endpoint

The built-in tools on /mcp now run through the same authorization provider and audit log as the matching REST routes. With mcp_auth set, an AgentOS JWT from an issuer outside the Authorization issuer pin fails on /mcp as it does on REST, and a user disabled in the user directory gets a 403 with User is disabled.

See the cookbook, and learn more about publishing selected components in the documentation.

Frequently asked questions

Agno's MCPConfig no longer adds the built-in tools to a tools=[...] list. Add default_tools=True to the config and the server lists all eight built-ins next to your own tools.

Set lifecycle_tools=True on an MCPConfig that publishes agents, teams or workflows. The server then adds continue_run and cancel_run for those components.

Yes. mcp=True still serves all eight built-in tools. The new defaults apply when you pass an MCPConfig object.

An MCPConfig with no tools and default_tools left at False would mount an MCP server with nothing to call, so Agno refuses it at construction. Pass tools=[...] or default_tools=True.

Shipped around the same time