项目简介
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等多种传输协议,方便不同客户端集成。
安装步骤
- 克隆仓库:
git clone https://github.com/JayLiuMLP/incident-agent.git cd incident-agent - 安装依赖:
uv sync - 验证安装:
请注意,运行PagerDuty相关功能需要有效的PagerDuty API密钥。您可以通过以下方式设置:uv run python -c "import fastmcp; print('FastMCP installed successfully!')"- 使用环境变量:'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': 在客户端界面中显示的服务器名称。
基本使用方法
- 启动HTTP服务器 (在一个终端):
服务器将在后台启动,监听HTTP请求。uv run fastmcp run main.py --transport http --port 8000 - 使用Python客户端测试 (在另一个终端):
此命令将运行一个内置的客户端脚本,演示如何调用服务器上的'hello'、'echo'和'server_info'工具,并打印它们的输出,确认服务器正常运行。uv run python mcp_client_utils.py - 通过Python代码调用:
您也可以在自己的Python代码中使用提供的'MCPClient'类或便利函数来与服务器交互:
请注意,调用PagerDuty相关工具前,请确保服务器已启动并且您已按照安装步骤配置了PagerDuty API密钥。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())
信息
分类
AI与计算