Observe MCP Server是一个模型上下文协议(MCP)服务器,通过向量搜索提供对 Observe API 功能、OPAL 查询协助和故障排除手册的访问。
首先,克隆仓库:
git clone https://github.com/rustomax/observe-experimental-mcp.git
cd observe-experimental-mcp
创建并激活虚拟环境:
python3 -m venv .venv
source .venv/bin/activate
安装所需依赖:
pip install -r requirements.txt
将 .env.template 复制为 .env 并填写相应的值。
在服务器提供语义搜索功能之前,需要用 OPAL 参考数据填充向量数据库。
python populate_docs_index.py
注意:
--force 标志重新创建索引。此脚本将处理 observe-docs 目录中的所有 markdown 文件,并为语义搜索创建向量嵌入。脚本将:
observe-docs 目录(包括文档和提示)读取 markdown 文件。选项:
--force:即使索引已经存在,也强制重新创建。--verbose:启用详细日志记录。--limit :限制要处理的文件数量(0 表示无限制)。python populate_runbooks_index.py
注意:如果你之前已经创建了索引,并且想要重新开始,可以使用 --force 标志重新创建索引。
此脚本将:
runbooks 目录中的所有 markdown (.md) 文件。选项:
--force:即使索引已经存在,也强制重新创建。--runbooks_dir
:指定故障排除手册目录的自定义路径。python observe_server.py
服务器默认使用 Server-Sent Events (SSE) 传输协议,运行在 8000 端口。如果需要,可以在 observe_server.py 文件中修改端口和传输方法。
请参考上述快速开始部分的安装步骤。
# 假设存在一个可以调用 execute_opal_query 函数的客户端
execute_opal_query("your_opal_query")
# 仅指定时间范围
export_worksheet("42566610", time_range="1h")
# 指定开始和结束时间
export_worksheet("42566610", start_time="2025-07-21T00:00:00Z", end_time="2025-07-22T00:00:00Z")
# 假设存在一个可以调用 recommend_runbook 函数的客户端
recommend_runbook("Find root cause of high CPU usage on production servers")
execute_opal_query:在数据集上执行 OPAL 查询。export_worksheet:以灵活的时间参数从 Observe 工作表导出数据(默认为 15 分钟间隔)。list_datasets:列出 Observe 中可用的数据集。get_dataset_info:获取数据集的详细信息。create_monitor:在 Observe 中创建新的监视器。list_monitors:列出 Observe 中的所有监视器。get_monitor:获取特定监视器的详细信息。get_relevant_docs:使用 Pinecone 向量搜索获取与查询相关的文档。recommend_runbook:分析用户查询并推荐最相关的故障排除手册。get_system_prompt:获取 Observe MCP 服务器的系统提示。worksheet_id(必需):要导出的工作表的 ID。time_range(可选):导出的时间范围(例如,"15m"、"1h"、"24h")。如果未提供时间参数,则默认为 "15m"。start_time(可选):ISO 格式的开始时间(例如,"2025-07-21T00:00:00Z")。end_time(可选):ISO 格式的结束时间(例如,"2025-07-22T00:00:00Z")。export_worksheet("42566610", time_range="1h")export_worksheet("42566610", start_time="2025-07-21T00:00:00Z", end_time="2025-07-22T00:00:00Z")export_worksheet("42566610", start_time="2025-07-21T00:00:00Z", time_range="24h")export_worksheet("42566610", end_time="2025-07-22T00:00:00Z", time_range="24h")该工具以 NDJSON(换行分隔的 JSON)格式返回数据。对于大型数据集,响应将自动截断,显示前 50 行和总行数的摘要。
pinecone_reference_helpers.py 模块提供了查询 Pinecone 向量数据库的函数:
initialize_pinecone():初始化 Pinecone 客户端并确保索引存在。get_embedding(pc, text, is_query):使用 Pinecone 的集成嵌入模型获取文本的嵌入。semantic_search(query, n_results):使用 Pinecone 进行语义搜索。list_all_entities():列出 Pinecone 索引中的所有文档。get_document_by_id(doc_id):按 ID 获取特定文档。系统使用多索引向量数据库架构,提供文档协助和故障排除手册推荐功能。主要有两个工作流程:索引过程和运行时查询过程。
该图展示了文档和故障排除手册如何被处理并加载到 Pinecone 向量数据库中。
该图展示了用户查询在运行时如何被处理。
get_relevant_docs 函数处理查询。recommend_runbook 函数处理查询。文档中未提及相关信息。
⚠️ 重要提示
这是一个实验性且不受支持的 MCP 服务器,专为与 Observe AI 设计合作伙伴进行测试和协作而创建。Observe 对该服务器的任何使用不承担任何责任,也不会以任何方式提供支持。Observe 正在开发一个单独的生产就绪 MCP 服务器。
此服务器使用两种身份验证机制:Observe API 身份验证和 MCP 身份验证。Observe API 身份验证使用的令牌继承了创建该令牌的用户在 Observe 平台上的上下文,该令牌应被视为机密信息,不会向 MCP 用户暴露。MCP 身份验证使用的令牌由服务器管理员生成,并向 MCP 用户暴露,例如用于在 Claude Desktop 或其他 MCP 客户端中使用。
请务必阅读并理解身份验证部分的内容,不要跳过。
💡 使用建议
- 使用智能客户端 LLM:该项目假设客户端 LLM 将提供必要的智能,以最有效地使用可用工具。建议使用技术能力较强的 LLM 模型,如 Claude Sonnet 3.7 和 Claude Sonnet 4。
- 理解理想的事件流程:了解 LLM 使用 MCP 服务器的理想流程,有助于更好地指导 LLM 发挥 Observe 的最大作用。
- 硬编码系统提示:为确保最一致地使用 MCP 服务器,建议将系统提示硬编码到 LLM 配置中,而不是依赖 MCP 服务器来配置模型。
- 编写有效提示:通过编写有效的提示,可以加快调查过程。提示应包括明确的调查目标、指定感兴趣的时间范围、识别相关的数据集或系统以及定义预期的输出格式。
- 使用故障排除手册指导 LLM:可以根据需要创建、更新或删除故障排除手册,以适应特定的环境或用例。还可以使用 LLM 改进故障排除手册。
- 提醒 LLM 使用工具:由于在调查过程中大量令牌被推送到 LLM 的上下文窗口中,LLM 可能会“忘记”有效使用可用工具。可以通过提醒 LLM 使用相关工具来引导其正确执行任务。