项目简介

Incident Agent是一个基于FastMCP(Model Context Protocol)构建的Python服务器,旨在为大型语言模型(LLM)客户端提供事件管理和分析的上下文和功能。它集成了问候、消息回显、服务器信息获取等基础功能,并深度整合了PagerDuty API,提供事件查询、统计和搜索能力,帮助LLM更好地理解和响应事件管理需求。

主要功能点

  • 基础工具:
    • 'hello': 返回个性化问候语。
    • 'echo': 回显接收到的消息。
    • 'server_info': 提供服务器的基本信息和运行状态。
  • PagerDuty事件管理工具:
    • 'get_current_incidents': 获取最新的PagerDuty事件,可按状态(如“开放”、“已解决”或“所有”)筛选。
    • 'get_incident_stats': 获取指定时间范围内的PagerDuty事件统计和摘要。
    • 'find_incidents': 根据标题/描述搜索PagerDuty事件。
  • 资源访问:
    • 'config://server/info': 提供服务器的详细配置信息。
    • 'pagerduty://incidents/latest': 提供最新的PagerDuty事件作为可访问的资源。
  • 多传输协议支持: 支持Stdio和HTTP等多种传输协议,方便不同客户端集成。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/JayLiuMLP/incident-agent.git
    cd incident-agent
  2. 安装依赖:
    uv sync
  3. 验证安装:
    uv run python -c "import fastmcp; print('FastMCP installed successfully!')"
    请注意,运行PagerDuty相关功能需要有效的PagerDuty API密钥。您可以通过以下方式设置:
    • 使用环境变量:'export PAGERDUTY_TOKEN="YOUR_PAGERDUTY_API_KEY"'
    • 通过项目中的LocalVault:'from src.base.auth import get_default_vault, VaultKeys; get_default_vault().set(VaultKeys.PAGERDUTY_TOKEN, 'YOUR_API_KEY')'

服务器配置(供MCP客户端使用)

要将Incident Agent MCP服务器与Claude Desktop或其他兼容的MCP客户端集成,您需要在客户端配置中添加以下JSON片段。这会告诉客户端如何启动和连接到Incident Agent服务器。

{
  "mcpServers": {
    "incident-agent": {
      "command": "uv",
      "args": ["run", "fastmcp", "run", "main.py"],
      "cwd": "/path/to/incident-agent",
      "description": "事件管理与分析MCP服务器,集成PagerDuty功能。",
      "displayName": "Incident Agent"
    }
  }
}
  • 'mcpServers': 客户端配置中用于定义MCP服务器的顶级键。
  • 'incident-agent': 这是服务器的唯一名称,用于在客户端中识别此服务器。
  • 'command': 启动服务器所使用的命令,这里是'uv',一个Python包管理器兼任务运行器。
  • 'args': 传递给'command'的参数列表,'run fastmcp run main.py'用于通过FastMCP框架运行'main.py'文件。
  • 'cwd': 服务器的工作目录,需要替换为您的'incident-agent'仓库的实际路径,例如'/Users/your_user/Projects/incident-agent'。
  • 'description': 服务器的简要描述,方便用户了解其功能。
  • 'displayName': 在客户端界面中显示的服务器名称。

基本使用方法

  1. 启动HTTP服务器 (在一个终端):
    uv run fastmcp run main.py --transport http --port 8000
    服务器将在后台启动,监听HTTP请求。
  2. 使用Python客户端测试 (在另一个终端):
    uv run python mcp_client_utils.py
    此命令将运行一个内置的客户端脚本,演示如何调用服务器上的'hello'、'echo'和'server_info'工具,并打印它们的输出,确认服务器正常运行。
  3. 通过Python代码调用: 您也可以在自己的Python代码中使用提供的'MCPClient'类或便利函数来与服务器交互:
    import asyncio
    from mcp_client_utils import MCPClient, say_hello, echo_message
    
    async def example_usage():
        # 使用便利函数
        greeting = await say_hello("User")
        print(f"问候: {greeting}")
    
        # 使用客户端类调用PagerDuty工具(需要服务器启动并配置PagerDuty API密钥)
        client = MCPClient("http://localhost:8000/mcp")
        incident_stats = await client.call_tool("get_incident_stats", {"days": 7})
        print(f"近7天事件统计: {incident_stats}")
    
    asyncio.run(example_usage())
    请注意,调用PagerDuty相关工具前,请确保服务器已启动并且您已按照安装步骤配置了PagerDuty API密钥。

信息

分类

AI与计算