Agno中使用MCP

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简单使用

相关推荐
智购科技自动售卖机厂家1 小时前
2026自动售货机库存热力图分析:从设备分布到补货优先级的数据可视化实践~YH
大数据·python·信息可视化
鹿鹿学长2 小时前
微软把语音转写打到 0.1 美元/小时:5 个月降价 72%,AI 音频进入地板价时代
python·自动化
weixin_440730502 小时前
使用pytest中方法控制执行步骤(test_begin.py、test_end.py,@pytest.mark.run(order=1))
开发语言·python·pytest
小柯南敲键盘2 小时前
跨境电商批量图片翻译与视频字幕翻译,就用跨马AI工具
大数据·人工智能·python·音视频
心易行者2 小时前
Python自动化测试7步落地法:用python在线运行省掉90%环境配置时间
java·开发语言·人工智能·python·log4j·ai编程
Boop_wu3 小时前
[LangGraph] 案例 2 : 支持搜索的智能代理系统
服务器·windows·python·langchain
2601_962297253 小时前
Python、Pytest、Allure、Selenium和Jenkins实现自动化测试集成实例
python·selenium·jenkins·pytest·allure
今天AI了吗3 小时前
Codex 配置自定义 AI API 完整指南:从零到一接入你的专属模型
java·人工智能·python·数据分析·embedding
阿童木写作3 小时前
跨境电商批量图片翻译与视频字幕翻译工具推荐
python·音视频
leihefeng3 小时前
手写数字识别:KNN vs 逻辑回归实战
python·算法·机器学习·逻辑回归·scikit-learn