Agno中使用MCP
1 简介
模型上下文协议(MCP)能够通过标准化的接口与外部系统进行交互。使用Agno集成的MCP客户端,可以连接到任何MCP服务器。本文使用Agno连接MCP服务。
参考地址
# MCP服务 https://github.com/modelcontextprotocol/python-sdk # Agno中MCP调用 https://docs.agno.com/basics/tools/mcp/overview安装MCP和Agno
pip install "mcp[cli]" pip install agno2 实现MCP服务
MCP服务代码
mcp_server.py
frommcp.server.fastmcpimportFastMCP# 创建MCP,Demo是MCP名字mcp=FastMCP("Demo")# Add an addition tool@mcp.tool(# 默认工具的名称name="add",# 说明title="加法",# 详细描述,大模型解析description="加法",# 是否结构化输出structured_output=None)defadd(a:int,b:int)->int:"""Add two numbers"""print("加法")returna+b# Add a subtraction tool@mcp.tool()defsubtraction(a:int,b:int)->int:"""Add two numbers"""print("减法")returna-b# Add a dynamic greeting resource@mcp.resource("greeting://{name}")defget_greeting(name:str)->str:"""Get a personalized greeting"""returnf"Hello,{name}!"# Add a prompt@mcp.prompt()defgreet_user(name:str,style:str="friendly")->str:"""Generate a greeting prompt"""styles={"friendly":"Please write a warm, friendly greeting","formal":"Please write a formal, professional greeting","casual":"Please write a casual, relaxed greeting",}returnf"{styles.get(style,styles['friendly'])}for someone named{name}."# Run with streamable HTTP transportif__name__=="__main__":# 使用SSE# mcp.run(transport="sse")mcp.run(transport="streamable-http")输出
3 使用Agno实现MCP客户端
mcp_client.py
importasynciofromtextwrapimportdedentfromagno.agentimportAgentfromagno.models.openaiimportOpenAILikefromagno.tools.mcpimportMCPToolsasyncdefrun_agent(message:str)->None:# 初始化工具# 使用SSE# mcp_tools = MCPTools(# transport="sse",# url="http://127.0.0.1:8000/sse"# )mcp_tools=MCPTools(transport="streamable-http",url="http://127.0.0.1:8000/mcp")# 连接MCPawaitmcp_tools.connect()# 打印工具print(mcp_tools)# 自定义模型model=OpenAILike(# 设置自定义模型名称id="llm-v1",api_key="EMPTY",# 自定模型地址base_url="http://192.168.0.106:8000/v1")try:# 智能体agent=Agent(model=model,tools=[mcp_tools],instructions=dedent("测试"),markdown=True,)# 运行智能体,并打印awaitagent.aprint_response(message,stream=True)finally:# 关闭服务awaitmcp_tools.close()if__name__=="__main__":# 调用加法asyncio.run(run_agent("1加1等多少"))# 调用减法asyncio.run(run_agent("1减1等多少"))输出
4 使用MCP Inspector
启动服务,第一次会初始化配置。
mcp dev .\mcp_server.py启动服务界面
MCP Inspector连接界面
MCP Inspector简单使用