关于 LogBrew
LogBrew 是供 AI Agent 读取已授权 LogBrew 项目遥测数据的托管 MCP 服务。两个只读工具用于发现可用操作并执行查询,涵盖问题、日志、追踪、指标、发布和分析数据。
主要功能
- 01搜索只读操作目录
- 02执行获准的遥测读取
- 03读取问题、日志、追踪和指标
- 04查看发布和产品分析
- 05将访问限制在已授权项目
适用场景
- 01利用项目遥测调查问题
- 02检查日志、追踪和指标
- 03查看发布与产品分析数据
MCP 相关
托管服务通过 Streamable HTTP 连接 MCP 客户端,并使用 OAuth 授权。它提供只读的 `search` 和 `execute` 工具,项目访问范围仅限授权时批准的项目。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp.logbrew.co/mcpclaude mcp add --transport http co-logbrew https://mcp.logbrew.co/mcp{"mcpServers":{"co-logbrew":{"type":"http","url":"https://mcp.logbrew.co/mcp"}}}在 Cursor 中打开{"servers":{"co-logbrew":{"type":"http","url":"https://mcp.logbrew.co/mcp"}}}在 VS Code 中打开{"mcpServers":{"co-logbrew":{"type":"http","url":"https://mcp.logbrew.co/mcp"}}}{"mcpServers":{"co-logbrew":{"serverUrl":"https://mcp.logbrew.co/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
LogBrew MCP
托管的 LogBrew MCP 服务可让 AI Agent 读取你的 LogBrew 项目中的遥测数据。无需安装。将其 URL 添加到你的 MCP 客户端:
https://mcp.logbrew.co/mcp
- 传输方式: Streamable HTTP。该服务接受 MCP 协议版本
2026-07-28、2025-11-25和2025-06-18。 - 授权: OAuth。你的客户端会打开 LogBrew 授权页面,你登录后选择 Agent 可读取的项目。
read范围允许 Agent 读取数据。更改数据的操作需要单独的write范围,你可以在批准连接时拒绝授予此范围。 - 只读: Agent 无法更改问题、项目或账户设置。读取你未批准的项目会返回
permission_denied。 - 连接有效期: 访问令牌的有效期为 1 小时,使用连接期间,客户端会刷新令牌。连接闲置 30 天后,或在你批准连接 90 天后,连接会终止。你可以在 LogBrew 控制面板的 Settings > MCP connections 下撤销连接,也可以使用
logbrew mcp revoke撤销。
Agent 可以读取的内容
该服务有 2 个工具,且都标注为只读:
| 工具 | 功能 |
|---|---|
search | 查找读取操作,并返回某个操作的契约:其输入和输出架构、权限、成本、安全性及稳定性。 |
execute | 执行 search 找到的一个操作,并返回结构化数据,或返回包含稳定代码和后续操作的错误。 |
这些操作可读取问题(调查、列表、活动、负责人和归属规则)、日志、追踪、跨度、指标、产品操作、发布、信号量和产品分析。操作参考列出了已发布目录中的所有操作及其限制。
支持的客户端
任何完成 LogBrew 授权的 MCP 客户端都可以连接。客户端可以发布客户端 ID 元数据文档,也可以动态注册。
使用 MCP 连接 AI Agent介绍了多种客户端的设置方法。例如,在 Claude Code 中:
claude mcp add --transport http logbrew https://mcp.logbrew.co/mcp
claude mcp login logbrew
开发
使用 Rust 1.99.1、cargo-deny 0.20.2 和 Tombi 1.7.2。从仓库根目录运行所有必需的检查:
scripts/check-all.sh
CI 会运行同一脚本。测试使用本地 HTTPS 服务和合成凭据。
server.json 描述了 MCP Registry 中的托管服务。更改后,使用 mcp-publisher validate 检查。
deny.toml 中的依赖策略涵盖已解析依赖图中的常规、构建和测试依赖。该策略会检查许可证要求和注册表来源,拒绝通配符版本,并将已审核的功能限制为精确的依赖版本。五项精确的重复版本例外用于保留不兼容的上游 API;不排除任何依赖子树。未使用的许可证和来源许可会导致检查失败,且任何警告都会导致失败。
工具链文件将 rustfmt 和 Clippy 固定为 Rust 1.99.1。该服务使用官方 MCP Rust SDK rmcp 3.5.1,以及 Axum 和 Tokio。Cargo.lock 记录了已解析的依赖图。
操作验证器接受以对象为根的 JSON,拒绝任意深度的重复键,并保留数字的精确值。限制为最多 64 层嵌套容器、每个数字最多 256 个字符,且十进制指数范围为 -1024 至 1024。输入、输出和架构的字节数限制会在解析前生效。架构默认使用 JSON Schema 2020-12,并启用格式断言且不进行外部加载。
启动文件加载支持 Linux 和 macOS。它要求使用由运维人员管理的目录和绝对常规文件路径,检查字节数和权限是否在范围内,并拒绝最终路径组件为符号链接的文件。打开文件时不会等待 FIFO 写入方,并且会在读取前检查文件身份。
配置读取器接受大小不超过 16 KiB 的私有文件,且仅支持版本 "5"。每个字段都必须存在且只出现一次,并且值必须是非空字符串:listen、resource、issuer、
introspection_endpoint、execution_endpoint、service_client_id、
service_secret_file、catalog_file、catalog_sha256、certificate_file 和
private_key_file。admission 对象也为必填项(见下文)。读取器会拒绝未知字段、大小写别名、解码后重复的键、无效 UTF-8、尾随文档以及内联密钥字段。它会保留密钥文件引用,但不会打开这些文件。
两个可选字段可将请求遥测发送到 LogBrew 项目。它们必须同时出现:telemetry_endpoint,即 HTTPS 数据接收 URL;以及 telemetry_key_file,即存放项目数据接收密钥且末尾没有换行符的私有文件。每个已完成的请求、搜索和执行都会生成一个包含持续时间和固定结果(例如 completed、
unauthorized 或 unavailable)的 span。执行还会记录其操作,但仅限目录中包含该操作的情况。由本服务或 API 导致的结果(configuration、invalid_output、unavailable 或 deadline)还会创建一个问题,例如 mcp execute logs.read.v1 unavailable。遥测绝不会包含工具参数、结果、令牌、客户端身份或错误文本。等待发送的记录最多为 1,024 条,且服务每秒最多发送一个请求。如果队列已满或请求失败,服务会丢弃相应记录,并在下一次请求中报告丢弃数量。遥测绝不会延迟或拒绝 MCP 请求。
admission 按客户端限制尚未证明其权限的请求数:
"admission": {"burst": 16, "per_minute": 600, "tracked_clients": 10000,
"rejected_token_seconds": 30, "trusted_proxy": "127.0.0.1"}
每个 MCP 请求都会在占用请求槽位或启动内省之前,预留其客户端预算中的一个单位;通过令牌验证的请求会返还该单位。客户端每次最多可同时启动 burst 个(1 至 64)未经验证的请求,并按 per_minute(1 至 60000)补充预算。超过限制时,服务会以 HTTP 429 响应,并在不进行内省的情况下返回以整秒为单位的 Retry-After 和正文 too many unauthenticated requests。最多有 tracked_clients 个(1 至 100000)客户端拥有各自的预算;空闲客户端会被逐出,其余客户端共用一个溢出预算,因此内存占用保持有界。IPv6 客户端按 /64 网段分组。客户端身份取自 TCP 对端;如果对端是可选的 trusted_proxy,则取唯一的 X-Real-IP 地址。对于内省拒绝的令牌(未激活、无效或缺少作用域),服务会在 rejected_token_seconds 秒内拒绝再次查询(0 至 300,0 表示禁用);最多保留 4096 个令牌摘要,绝不保留令牌本身。内省服务不可用的情况绝不会被记住。
一组服务登录凭据(service_client_id 和 service_secret_file 中的密钥)同时用于身份验证和执行。签发方与 API 必须持有相同的一组凭据。issuer 必须与授权服务器的签发方标识符逐字节完全一致,resource 必须与签发方绑定到令牌中的受众完全一致。启动时会拒绝以 / 结尾的签发方,因为这会导致所有请求都被拒绝。只有内省结果决定哪些客户端可以连接。只要授权服务器确认客户端 ID,且其长度为 1 至 2048 个可打印 ASCII 字符,服务器便会接受该 ID。每个请求都需要委派的 read 作用域。权限为 write 的操作还需要单独授予的 write 作用域。如果缺少该作用域,execute 会在联系 API 之前返回 HTTP 403,并附带请求 read write 的 insufficient_scope 挑战。作用域不可配置。服务器会在资源路径后附加 /.well-known/oauth-protected-resource,发布 RFC 9728 受保护资源元数据。该文档将签发方列为唯一授权服务器,并列出 read 和 write 作用域。401 挑战仅请求 read,且每个 401 和 403 挑战都会链接到该文档。
独立的服务加载器会读取所引用的材料,并构建经过身份验证的处理程序,而不会打开监听器或联系上游服务。它要求使用数字 IP 和非零端口,验证目录 SHA-256,解析匹配的 TLS 证书/密钥对,并验证服务端点和凭据。文件大小上限分别为:目录 8 MiB、证书 256 KiB、私钥 64 KiB,每个机器密钥 8 KiB。密钥文件和密钥字符串文件不得具有组或其他用户的权限。密钥字符串字节会按原样使用,不会去除换行符。组装完成后会清除临时加载的密钥/密钥字符串缓冲区;服务会保留所需凭据。
操作员提供配置后,可从源代码运行服务器:
cargo run --locked -- /absolute/path/to/config.json
服务器会在绑定配置的地址之前验证启动材料。出站连接使用系统 TLS 信任设置,不会继承代理或自定义拨号钩子。SIGINT 和 SIGTERM 会请求正常关闭。启动和服务失败时会以非零状态退出,且不会打印路径、凭据或上游响应。从源代码构建的版本会将自身标识为 development。使用 cargo run --locked -- --version 可在不加载配置的情况下检查软件包版本。
启动或替换进程之前,请检查配置及其引用的文件:
cargo run --locked -- --check-config /absolute/path/to/config.json
该检查使用与启动相同的加载器,然后退出,不会绑定监听器或联系任一上游服务。服务器在配置地址上监听时,也可以运行此检查。退出状态为 0 表示本地验证通过;状态为 1 表示验证失败。可执行文件不会打印任何配置或凭据值。此检查无法证明上游服务可用、授权有效、证书已续期或客户端可连接。服务器启动并开始服务时会再次检查文件。
原生进程测试涵盖离线启动、两种关闭信号、监听器释放、拒绝不匹配的证书/密钥,以及连接停滞等情况。进程最多接纳 64 个连接,包括 TLS 协商;超出上限的连接会被关闭,不会进入队列。TLS 协商和 HTTP/1 标头读取各有五秒期限。经过身份验证的请求期限为十秒;正常关闭最多等待十二秒。未能完成排空时,进程会以非零状态退出。 本地 HTTPS 测试涵盖待处理执行的取消、当前请求授权、撤销和响应边界。 独立进程测试与 HTTPS 回归测试共用同一套服务代码。 测试会验证:优雅关闭会在活动执行完成前关闭监听器,同时保留完整响应并释放连接。取消 服务 future 会关闭活动请求并停止其上游工作。取消后请求容量会恢复,且不会启动超额的 内省工作。
当前版本的请求测试要求每个请求都携带协议版本和客户端能力。
客户端身份是可选的。缺少路由标头或标头不匹配时,会返回 HTTP 400 和 HeaderMismatch 错误。
不支持的版本会收到受支持版本列表;未知方法会收到 HTTP 404 和 JSON-RPC 方法错误。
客户端响应消息、批处理请求和无效请求 ID 会在执行前被拒绝。
处理程序验证错误使用 HTTP 200 和 JSON-RPC 错误响应。缺少必需的请求元数据仍会返回
HTTP 400 错误。
服务器接受 MCP 2026-07-28、2025-11-25 和 2025-06-18。使用
2025-11-25 或 2025-06-18 的客户端会先发送 initialize,然后在
MCP-Protocol-Version 标头中发送协商后的版本。服务器以无会话方式响应这些客户端:
不会返回 Mcp-Session-Id,且每个请求都携带自己的 bearer token,并获得与
2026-07-28 请求相同的授权。早于 2025-06-18 的版本不受支持,因为这些版本没有
OAuth 资源指示符,也没有结构化工具结果。
内容协商会解析完整媒体类型、接受大小写变体和重复的 Accept 字段,并要求 JSON 和 event-stream 均受支持且质量值为正。当前版本的 GET 和 DELETE 请求会收到 HTTP 405。 传入的旧版会话 ID 和事件 ID 会被忽略,且不会创建会话。实际 TLS HTTP/2 测试涵盖已配置的 authority、授权、标头验证、完整结果和取消。
内省得到的 iat 和 nbf 时间最多可以比本地时钟快 60
秒;更晚的时间会被拒绝。授权测试会在执行前拒绝已过期的凭据、不匹配的 issuer 或 audience、
缺少必需的 scopes、无效的身份引用,以及不完整或格式错误的内省响应。过大的内省响应正文和
标头,以及意外的媒体类型也会导致安全拒绝。合成 HTTPS 测试夹具会验证一次服务登录,以及两个上游端点的 OAuth 组件编码。
请求路由器要求每个请求都使用已配置的资源主机,包括其端口。若提供了 Origin,则必须是唯一的已配置 HTTPS origin; 即使是读取元数据,空、null、重复、外部或协议不同的 origin 也会被拒绝。 转发标头不会改变这两项检查。SDK 的环回主机启发式判断已替换为此已配置主机检查,以便环回 代理跳转能够保留公共主机。浏览器跨站保护仍处于启用状态。
catalog/operations.json 是托管服务器加载的操作目录。
LogBrew API 根据其公共读取端点的请求和响应类型生成该文件;本仓库原样提供生成后的文件。
catalog/operations.json.sha256 以 sha256sum 格式固定其 SHA-256 摘要。
部署时将 catalog_sha256 设置为该摘要;如果文件、摘要固定值和
docs/operations.md 中的操作引用不一致,测试就会失败。要更新目录,请在同一次更改中替换这两个文件,并更新引用。
目录加载器接受格式版本 1,并要求从受信任的发布配置中提供预期的 SHA-256 摘要。它会拒绝超过 8 MiB 的文件、重复键、未知元数据字段、不受支持的格式、无效的操作契约,以及除 read 或 write 以外的任何权限。read 操作必须为 read_only。write 操作必须声明 safety: write、标题,以及非只读的提示信息。search 始终为只读。除非目录中存在写入操作,否则 execute 为只读;若存在写入操作,则声明 readOnlyHint: false,并且如果任何操作可能删除数据,还要声明 destructiveHint: true。加载目录不会授予对其操作的访问权限。
这些工具会返回包含目录来源信息的 data/error 信封。操作输入限制为 4 KiB,输出数据限制为 2 MiB。信封元数据有单独的有界配额,不会占用操作的配额。本地 HTTPS 测试会验证结构化 JSON 和文本内容中的完整最大尺寸结果,并拒绝超出限制 1 字节的输出。provenance.definition_sha256 标识用于发现或执行的、经排序序列化后的操作定义。它不是原始目录文件摘要、部署回执,也不能证明返回的遥测数据是最新的。如果请求在目录处理前失败,或结果无法在限制范围内编码,则来源信息为 null。原始制品完整性仍会在启动时单独通过配置的 SHA-256 进行检查。
这两个工具会公布相同的结果架构。该架构区分成功数据和错误,要求成功结果包含有效的目录来源信息,并对错误代码、对应的恢复操作和重试延迟进行约束。本地测试会验证该架构并拒绝不一致的信封。
错误包含 code、next_action 和 retry_after_ms。无效输入会指向输入契约;无效的服务输出则属于单独的错误,且不会返回被拒绝的数据。未知的重试延迟为 null,与零不同。服务器不会自动重试操作。对于结果不可用的情况,会要求调用方在重复可能改变状态的请求前检查操作状态。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。