项目简介
Observe社区MCP服务器是一个基于Model Context Protocol (MCP) 构建的后端服务,旨在将大型语言模型(LLM,如Claude Sonnet)与Observe可观测性平台无缝集成。它允许LLM以安全、受控的方式执行OPAL查询、导出工作表数据、管理监控器,并提供基于向量搜索的文档和故障排除手册辅助,从而赋能LLM进行复杂的数据分析和故障诊断。
主要功能点
- Observe平台交互: 直接与Observe平台集成,执行OPAL查询、导出工作表数据、列出和检索数据集信息、创建和管理监控器。
- 智能文档辅助: 利用向量数据库(Pinecone)进行语义搜索,提供OPAL参考文档和故障排除手册的上下文信息,帮助LLM更好地理解和使用Observe。
- 安全隔离: 作为LLM与Observe数据之间的桥梁,避免LLM直接访问敏感数据,防止数据泄露。
- 权限控制: 实现基于JWT令牌和范围(read, write, admin)的访问控制,确保只有授权用户才能调用特定功能。
- 模块化架构: 清晰的代码结构,便于维护和功能扩展。
安装步骤
- 克隆仓库:
git clone https://github.com/rustomax/observe-community-mcp.git cd observe-community-mcp - 创建并激活虚拟环境:
python3 -m venv .venv source .venv/bin/activate - 安装依赖:
pip install -r requirements.txt - 配置环境变量:
- 复制 '.env.template' 文件为 '.env'。
- 编辑 '.env' 文件,填入您的Observe API凭据('OBSERVE_CUSTOMER_ID', 'OBSERVE_TOKEN', 'OBSERVE_DOMAIN')和Pinecone API密钥('PINECONE_API_KEY')。
- MCP认证密钥:
- 在安全位置(例如 '_secure' 目录)生成私钥和公钥:
openssl genrsa -out _secure/private_key.pem 2048 openssl rsa -in _secure/private_key.pem -pubout -out _secure/public_key.pem - 将 '_secure/public_key.pem' 的内容复制到 '.env' 文件中的 'PUBLIC_KEY_PEM' 变量。
PUBLIC_KEY_PEM="-----BEGIN PUBLIC KEY----- <您的公钥内容> -----END PUBLIC KEY-----"
- 在安全位置(例如 '_secure' 目录)生成私钥和公钥:
- 填充向量数据库:
- 文档索引: 如果您有Observe文档的Markdown文件(通常位于 'observe-docs/' 目录),运行:
(注意:非Observe员工可能无法获取文档文件,请联系Observe代表获取帮助。)python populate_docs_index.py - 故障手册索引:
(请注意,Pinecone索引在填充后可能需要几分钟才能最终一致,并返回最准确的数据。)python populate_runbooks_index.py
- 文档索引: 如果您有Observe文档的Markdown文件(通常位于 'observe-docs/' 目录),运行:
服务器配置 (为LLM客户端准备)
MCP服务器启动后,LLM客户端(如Claude Desktop)需要知道如何连接。以下是一个示例配置信息,用于在MCP客户端中设置连接到此服务器:
{ "mcpServers": { "observe-epic": { "command": "npx", "args": [ "mcp-remote@latest", "http://localhost:8000/sse", "--header", "Authorization: Bearer <您的MCP认证令牌>" ] } } }
- 'observe-epic': 这是MCP服务器的内部名称,LLM客户端将使用此名称来引用它。
- 'command': 用于启动MCP客户端连接代理的命令。'npx mcp-remote@latest' 表示使用最新版本的 'mcp-remote' 工具。
- 'args': 传递给 'mcp-remote' 命令的参数列表。
- 'http://localhost:8000/sse': 这是MCP服务器的URL,包括传输协议(SSE)和默认端口8000。如果服务器部署在其他地址或端口,请相应修改。
- '--header': 用于指定请求头。
- 'Authorization: Bearer <您的MCP认证令牌>': 这是用于对MCP服务器进行认证的JWT令牌。
- 要生成此令牌,请在仓库根目录运行脚本:'./generate_mcp_token.sh '[email protected]' 'admin,read,write' '4H''。脚本的输出即为令牌。
- 请将 '<您的MCP认证令牌>' 替换为实际生成的令牌字符串。
- 出于安全最佳实践,请保持令牌的有效期较短(例如几小时),以最小化安全风险。
基本使用方法
- 启动服务器:
在项目根目录运行:
服务器默认在端口8000上以Server-Sent Events (SSE) 传输方式运行。python observe_server.py - 配置LLM客户端: 按照上述“服务器配置”部分,将JSON配置添加到您的MCP客户端(例如Claude Desktop的 'claude_desktop_config.json' 文件)中。
- 与LLM交互:
- 设置系统提示: 强烈建议将 'prompts/Observe MCP System Prompt.md' 文件中的内容作为您的LLM客户端的系统提示。这有助于LLM将自身配置为Observe专家,并有效利用服务器功能。
- 调用工具: 配置完成后,LLM现在可以根据其目标和查询,智能地调用服务器提供的工具。例如,LLM可能调用以下工具:
- 'execute_opal_query("filter service_name = 'authservice' | count()", "42566610", time_range="1h")'
- 'get_relevant_docs("如何使用OPAL的timechart函数?")'
- 'recommend_runbook("生产服务器CPU使用率过高")'
- 'list_datasets()'
信息
分类
AI与计算