项目简介

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)的访问控制,确保只有授权用户才能调用特定功能。
  • 模块化架构: 清晰的代码结构,便于维护和功能扩展。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/rustomax/observe-community-mcp.git
    cd observe-community-mcp
  2. 创建并激活虚拟环境:
    python3 -m venv .venv
    source .venv/bin/activate
  3. 安装依赖:
    pip install -r requirements.txt
  4. 配置环境变量:
    • 复制 '.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-----"
  5. 填充向量数据库:
    • 文档索引: 如果您有Observe文档的Markdown文件(通常位于 'observe-docs/' 目录),运行:
      python populate_docs_index.py
      (注意:非Observe员工可能无法获取文档文件,请联系Observe代表获取帮助。)
    • 故障手册索引:
      python populate_runbooks_index.py
      (请注意,Pinecone索引在填充后可能需要几分钟才能最终一致,并返回最准确的数据。)

服务器配置 (为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认证令牌>' 替换为实际生成的令牌字符串。
      • 出于安全最佳实践,请保持令牌的有效期较短(例如几小时),以最小化安全风险。

基本使用方法

  1. 启动服务器: 在项目根目录运行:
    python observe_server.py
    服务器默认在端口8000上以Server-Sent Events (SSE) 传输方式运行。
  2. 配置LLM客户端: 按照上述“服务器配置”部分,将JSON配置添加到您的MCP客户端(例如Claude Desktop的 'claude_desktop_config.json' 文件)中。
  3. 与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与计算