MCP Tools
Connect MCPTools to the filesystem MCP server over a stdio session and summarize a file.
"""
Mcp Tools
=============================
Demonstrates mcp tools.
"""
import asyncio
import sys
from pathlib import Path
from agno.agent import Agent
from agno.tools.mcp import MCPTools
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
# ---------------------------------------------------------------------------
# Create Agent
# ---------------------------------------------------------------------------
async def main(prompt: str) -> None:
# Initialize the MCP server
server_params = StdioServerParameters(
command="npx",
args=[
"-y",
"@modelcontextprotocol/server-filesystem",
str(Path(__file__).parent.parent),
],
)
# Create a client session to connect to the MCP server
async with stdio_client(server_params) as (read, write):
async with ClientSession(read, write) as session:
# Initialize the MCP toolkit
mcp_tools = MCPTools(session=session)
await mcp_tools.initialize()
# Create an agent with the MCP toolkit
agent = Agent(tools=[mcp_tools])
# Run the agent
await agent.aprint_response(prompt, stream=True)
# ---------------------------------------------------------------------------
# Run Agent
# ---------------------------------------------------------------------------
if __name__ == "__main__":
prompt = (
sys.argv[1] if len(sys.argv) > 1 else "Read and summarize the file ./LICENSE"
)
asyncio.run(main(prompt))Choose an allowed file
The server is allowed to access cookbook/, because its root is Path(__file__).parent.parent. The default ./LICENSE is in the repository root, outside that directory. Pass a file under cookbook/ explicitly:
python cookbook/91_tools/mcp_tools.py "Read and summarize the file cookbook/91_tools/mcp_tools.py"The filesystem MCP server also exposes write operations; narrow the imported tool set if your application only needs reading. The nested context managers keep the client session alive through the run and close it afterward.
Run the Example
Set up your virtual environment
uv venv --python 3.12
source .venv/bin/activateInstall dependencies
uv pip install -U "agno[mcp]" openaiPrepare Node.js
The MCP server runs with npx. Install Node.js, then verify the commands:
node --version
npx --versionExport your OpenAI API key
export OPENAI_API_KEY="your_openai_api_key_here"Clone Agno
Clone the pinned Agno source and run the remaining commands from its root:
git clone https://github.com/agno-agi/agno.git
cd agno
git checkout d703c34f3abf3c41275d3fb2da6e0518a8881f24Run the example
Run the example from the repository root:
python cookbook/91_tools/mcp_tools.pyFull source: cookbook/91_tools/mcp_tools.py