mcpField
L
LogBrew

LogBrew

远程服务
docs.logbrew.co数据与分析0今天更新

关于 LogBrew

LogBrew 是供 AI Agent 读取已授权 LogBrew 项目遥测数据的托管 MCP 服务。两个只读工具用于发现可用操作并执行查询,涵盖问题、日志、追踪、指标、发布和分析数据。

主要功能

  1. 01搜索只读操作目录
  2. 02执行获准的遥测读取
  3. 03读取问题、日志、追踪和指标
  4. 04查看发布和产品分析
  5. 05将访问限制在已授权项目

适用场景

  1. 01利用项目遥测调查问题
  2. 02检查日志、追踪和指标
  3. 03查看发布与产品分析数据

MCP 相关

托管服务通过 Streamable HTTP 连接 MCP 客户端,并使用 OAuth 授权。它提供只读的 `search` 和 `execute` 工具,项目访问范围仅限授权时批准的项目。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://mcp.logbrew.co/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;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,与零不同。服务器不会自动重试操作。对于结果不可用的情况,会要求调用方在重复可能改变状态的请求前检查操作状态。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。