Openbserve MCP服务器
一种用于查询多个Openbserve的模型上下文协议(MCP)服务器 实例。并行查询、批处理执行、分页和LRU缓存 通过stdio传输。
来源:https://github.com/adarshba/openobserve-mcp
这是什么?
此服务器将Openbserve日志/跟踪/指标查询作为MCP工具公开。 AI代理(Claude、Cursor等)通过stdio连接到此服务器 可以调用工具一次从一个或多个Openbserve实例中获取日志。
快速开始
npm 安装 npm 运行构建
导出PROD_GCP_O2_TOKEN=$(echo-n“user@example.com:密码“|base64) node-dist/index.js——配置。/config/openobserve.config.json
配置
编辑config/openobserve.config.json。每个实例条目都需要:
id-在工具调用中用于引用实例的唯一标识符 名称-人类可读标签 url-Openbserve实例的基本url auth-引用包含Base64令牌的环境变量 默认值-组织、超时、最大结果 功能-日志、跟踪、指标中的哪一个 tags-用于过滤的任意标签(例如生产、暂存、gcp)
顶级选项:
batching.maxBatchSize-每个并行批的最大查询数(默认值:100) batching.maxCurrent-最大并发实例连接数(默认值:5) caching.enabled-启用LRU查询缓存(默认值:true) caching.ttl-缓存ttl(秒)(默认值:300) caching.maxSize-最大缓存条目数(默认值:1000)
身份验证令牌
每个实例都使用Base64编码的“用户名:密码”字符串进行身份验证 通过环境变量传递。切勿将凭据直接放入配置中。
导出PROD_GCP_O2_TOKEN=$(echo-n“admin@example.com:secretpass“|base64)
对于API密钥验证:
导出PROD_GCP_O2_TOKEN=$(echo-n“api_key_id:api_key_secret”|base64)
配置引用了env变量名称:
“auth”:{“type”:“env”,“envVar”:“PROD_GCP_O2_TOKEN”}
MCP客户端设置
添加到您的MCP客户端配置(Claude Desktop、Cursor、OpenCode、Claude Code CLI等):
{ “mcpServers”:{ “开放观察”:{ “命令”:“npx”, “args”:\[ “开放观察mcp”, “--config”, “/path/to/config.json” \], “env”:{ “PROD_GCP_O2_TOKEN”:“您的base64_TOKEN”, “PROD_AWS_O2_TOKEN”:“您的base64_TOKEN” } } } }
配置路径也可以通过环境变量设置:
O2_MCP_CONFIG_PATH=。/config/openobserve.config.json npx openobserve-mcp
工具
o2_search_logs 在一个或多个实例中使用SQL搜索日志。查询并行运行。 结果包括实例属性和分页光标(如果有更多数据) 存在。
要查询的实例ID数组(必需) sql(必填)sql查询字符串 startTime(必需)ISO 8601或Unix毫秒时间戳 endTime(必需)ISO 8601或Unix毫秒时间戳 限制每个实例的结果,默认值为100 游标分页前一个响应中的游标 bypassCache跳过缓存并获取新数据
o2-batch_query 并行执行多个独立查询,按maxBatchSize分块。 每个查询都针对一个特定的实例。部分故障被隔离-- 失败的查询不会阻止其他查询。
查询\[\].instanceId(必需)目标实例ID 查询\[\].sql(必填)sql查询 查询\[\].startTime(必填)开始时间 查询\[\].endTime(必填)结束时间 查询\[\]。限制结果限制,默认值为100
o2_list_instances 列出所有已配置的实例。可选择按标签或功能进行过滤。
标签按任何匹配的标签过滤 按能力筛选:日志、跟踪或指标
o2_list_streams 并行列出来自一个或多个实例的可用流/索引。
要查询的实例ID数组(必需)
SQL引用
Openbserve使用PostgreSQL兼容的SQL方言。
\_时间戳内置时间字段(微秒);始终在场 所有字段的match_all('x')全文搜索 特定字段上的str_match(f,'x')文本匹配 直方图(\_timestamp,“5分钟”)时间分组聚合
时间范围始终通过startTime/endTime强制执行。始终提供两者。
示例:
SELECT\*FROM默认WHERE level='error'ORDER BY \_时间戳DESC
从默认的WHERE match_all中选择\*(“支付失败”)
SELECT服务,COUNT(\*)为错误 FROM默认WHERE级别=“错误” GROUP BY服务ORDER BY错误DESC
选择直方图(\_timestamp,'5分钟')作为桶,COUNT(\*)作为计数 FROM默认分组按桶排序按桶排序
项目布局
src/index.ts入口点、CLI arg解析、stdio传输 src/server.ts MCP服务器、工具注册、请求路由 src/cache.ts带有TTL和基于哈希键的LRU缓存 src/types.ts共享类型定义 src/config/schema.ts用于配置验证的Zod模式 src/config/loader.ts配置加载器,环境变量解析 src/client/instance.ts用于单个Openbserve实例的HTTP客户端 src/client/pool.ts管理所有已配置实例的集合 src/query/types.ts查询结果和策略类型定义 src/query/analyzer.ts SQL意图检测(聚合、GROUP BY、错误) src/query/rewriter.ts将SELECT\*重写为直方图聚合SQL src/query/sampler.ts油藏采样(最新、多种、错误模式) src/query/router.ts根据时间范围和SQL意图选择策略 src/query/strates/aggregate.ts聚合策略:时间分段计数+深入分析 src/query/strates/sample.ts样本策略:油藏采样行 src/query/strates/raw.ts原始策略:passthrough最多200行 src/tools/search-logs.ts o2_search_logs实现 src/tools/batch-query.ts o2-batch_query实现 src/tools/list-instances.ts o2_list_instances实现 src/tools/list-streams.ts o2_list_streams实现
许可证
麻省理工学院
