使用 GitHub MCP 服务器 来创建一个可以探索、分析并提供 GitHub 存储库见解的 Agent:

"""🐙 MCP GitHub Agent - 您的专属 GitHub 探索者!

此示例展示了如何创建一个使用 MCP 来探索、分析并提供 GitHub 存储库见解的 GitHub Agent。该 Agent 利用模型上下文协议 (MCP) 来与 GitHub 交互,使其能够回答有关 issues、pull requests、存储库详细信息等方面的问题。

可尝试的示例提示:
- "列出存储库中未关闭的 issues"
- "显示我最近的 pull requests"
- "存储库的统计信息是什么?"
- "查找标记为 bugs 的 issues"
- "显示贡献者活动"

运行:`pip install agno mcp openai` 来安装依赖项
需要的环境变量:
- 按照以下步骤创建 GitHub 个人访问令牌:
    - https://github.com/modelcontextprotocol/servers/tree/main/src/github#setup
- export GITHUB_TOKEN: 您的 GitHub 个人访问令牌
"""

import asyncio
import os
from textwrap import dedent

from agno.agent import Agent
from agno.tools.mcp import MCPTools
from mcp import StdioServerParameters


async def run_agent(message: str) -> None:
    """使用给定的消息运行 GitHub Agent。"""

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

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

                - 使用标题来组织您的回复
                - 简明扼要,专注于相关信息\
            """),
            markdown=True,
            show_tool_calls=True,
        )

        # 运行 Agent
        await agent.aprint_response(message, stream=True)


# 示例用法
if __name__ == "__main__":
    # Pull request 示例
    asyncio.run(
        run_agent(
            "告诉我关于 Agno 的信息。Github 存储库: https://github.com/agno-agi/agno。您可以阅读 README 以获取更多信息。"
        )
    )


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

Pull request 查询:
1. "哪些 PRs 需要审查?"
2. "显示我最近合并的 PRs"
3. "查找有冲突的 PRs"
4. "哪些功能正在开发中?"
5. "分析 PR 审查模式"

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