代码

cookbook/apps/playground/mcp_demo.py
import asyncio
from os import getenv
from textwrap import dedent

import nest_asyncio
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.playground import Playground
from agno.storage.agent.sqlite import SqliteAgentStorage
from agno.tools.mcp import MCPTools
from mcp import StdioServerParameters

# 允许嵌套事件循环
nest_asyncio.apply()

agent_storage_file: str = "tmp/agents.db"


async def run_server() -> None:
    """运行 GitHub 代理服务器。"""
    github_token = getenv("GITHUB_TOKEN") or getenv("GITHUB_ACCESS_TOKEN")
    if not github_token:
        raise ValueError("需要 GITHUB_TOKEN 环境变量")

    # 初始化 MCP 服务器
    server_params = StdioServerParameters(
        command="npx",
        args=["-y", "@modelcontextprotocol/server-github"],
    )

    # 创建客户端会话以连接到 MCP 服务器
    async with MCPTools(server_params=server_params) as mcp_tools:
        agent = Agent(
            name="MCP GitHub Agent",
            tools=[mcp_tools],
            instructions=dedent("""\
                您是 GitHub 助手。帮助用户探索存储库及其活动。

                - 使用标题组织您的回复
                - 简洁明了,专注于相关信息\
            """),
            model=OpenAIChat(id="gpt-4o"),
            storage=SqliteAgentStorage(
                table_name="basic_agent",
                db_file=agent_storage_file,
                auto_upgrade_schema=True,
            ),
            add_history_to_messages=True,
            num_history_responses=3,
            add_datetime_to_instructions=True,
            markdown=True,
        )

        playground = Playground(
            agents=[agent],
            name="MCP Demo",
            description="一个 MCP 的演示场",
            app_id="mcp-demo",
        )
        playground.get_app()

        # 在保持 MCPTools 上下文管理器活动的同时提供应用程序
        playground.serve(app="mcp_demo:app", reload=True)


if __name__ == "__main__":
    asyncio.run(run_server())

# 可供探索的示例提示:
"""
问题查询:
1. "查找需要关注的问题"
2. "按标签显示问题"
3. "哪些问题正在被积极讨论?"
4. "查找相关问题"
5. "分析问题解决模式"

拉取请求查询:
1. "哪些 PR 需要审核?"
2. "显示最近已合并的 PR"
3. "查找有冲突的 PR"
4. "正在开发哪些功能?"
5. "分析 PR 审核模式"

存储库查询:
1. "显示存储库健康指标"
2. "贡献指南是什么?"
3. "查找文档缺失之处"
4. "分析代码质量趋势"
5. "显示存储库活动模式"
"""

用法

1

创建虚拟环境

打开 Terminal 并创建一个 python 虚拟环境。

python3 -m venv .venv
source .venv/bin/activate
2

设置您的 API 密钥

export OPENAI_API_KEY=xxx
export GITHUB_TOKEN=xxx
3

安装库

pip install -U agno "uvicorn[standard]" openai nest-asyncio mcp
4

运行代理

python cookbook/apps/playground/mcp_demo.py