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 agno
2 实现MCP服务
MCP服务代码
mcp_server.py
python
from mcp.server.fastmcp import FastMCP
# 创建MCP,Demo是MCP名字
mcp = FastMCP("Demo")
# Add an addition tool
@mcp.tool(
# 默认工具的名称
name="add",
# 说明
title="加法",
# 详细描述,大模型解析
description="加法",
# 是否结构化输出
structured_output= None
)
def add(a: int, b: int) -> int:
"""Add two numbers"""
print("加法")
return a + b
# Add a subtraction tool
@mcp.tool()
def subtraction(a: int, b: int) -> int:
"""Add two numbers"""
print("减法")
return a - b
# Add a dynamic greeting resource
@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:
"""Get a personalized greeting"""
return f"Hello, {name}!"
# Add a prompt
@mcp.prompt()
def greet_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",
}
return f"{styles.get(style, styles['friendly'])} for someone named {name}."
# Run with streamable HTTP transport
if __name__ == "__main__":
# 使用SSE
# mcp.run(transport="sse")
mcp.run(transport="streamable-http")
输出

3 使用Agno实现MCP客户端
mcp_client.py
python
import asyncio
from textwrap import dedent
from agno.agent import Agent
from agno.models.openai import OpenAILike
from agno.tools.mcp import MCPTools
async def run_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"
)
# 连接MCP
await mcp_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,
)
# 运行智能体,并打印
await agent.aprint_response(message, stream=True)
finally:
# 关闭服务
await mcp_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简单使用
