mcpField
L
lowdown-proxy

lowdown-proxy

远程服务
github.com/PetShopBros开发工具1今天更新
代码仓库

关于 lowdown-proxy

lowdown-proxy 是记录 MCP 工具与服务交互并查询其历史的透明 stdio 代理,也提供 Lowdown 查询 MCP 服务。它面向使用 Agent 的开发者,提供注册信息、包状态、扫描观察和实际调用记录。

主要功能

  1. 01代理 MCP 通信并记录结果与延迟
  2. 02查询 Registry 声明和 npm 状态
  3. 03查看每日扫描及工具定义变化
  4. 04比较工具并记录交互结果
  5. 05将匹配的应用日志附加到结果

适用场景

  1. 01连接 MCP 服务前检查其记录
  2. 02比较多个工具的历史成功率
  3. 03排查调用中应用日志暴露的错误

MCP 相关

可作为 stdio 代理包装 MCP 服务,并将调用交互记录至 Lowdown。也可作为 MCP 服务向 Agent 提供查询、比较、记录交互和节点统计工具。

配置

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

服务地址https://lowdown-proxy.vercel.app/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 配置后重启。需要授权的服务会在首次连接时提示登录。

安装包
npmlowdown-proxy0.1.19

工具

4
参数类型必填说明
targetstring是带 mcp: 前缀的 MCP Registry 名称(例如 'mcp:io.github.user/server')、短名称,或类似 'agent:some-agent-id' 的 ID

详细介绍

lowdown-proxy

已在 mcpservers.org 上列出

Agent 不应该被迫信任从未打过交道的任何人。

lowdown-proxy 会记录 AI Agent、工具和服务之间的交互,并让任何人都能查询这些历史记录。在选择工具、调用 API 或委派任务给其他 Agent 之前,你可以先问:网络从这个对象身上观察到了什么?

用于 MCP 服务的透明 stdio 代理是第一个入口。交互历史层向任何 Agent、工具或服务开放,而不仅限于 MCP。

背景和设计原则请参阅 DESIGN.md。

快速开始

npx lowdown-proxy -- npx some-mcp-server

就是这样。无需注册或配置。首次运行时,会自动在 ~/.lowdown/node.json 创建节点身份。你的交互会贡献给网络,作为回报,你也能获得更深入的数据。

在客户端配置中包装任意 MCP 服务:

// before
{
  "mcpServers": {
    "search": { "command": "npx", "args": ["search-mcp-server"] }
  }
}

// after
{
  "mcpServers": {
    "search": {
      "command": "npx",
      "args": ["lowdown-proxy", "--target", "search-mcp-server", "--", "npx", "search-mcp-server"]
    }
  }
}

面向 Agent 的查询工具(MCP 服务)

同一软件包还提供了 MCP 服务(stdio),让 Agent 可以直接查询 Lowdown:

{
  "mcpServers": {
    "lowdown": { "command": "npx", "args": ["-y", "-p", "lowdown-proxy", "lowdown-mcp"] }
  }
}
工具返回内容
get_lowdown在安装或连接 MCP 服务之前,获取关于它的记录事实:Registry 声明、所声明软件包的 npm 状态、Scanner 观察结果(参见 Scanner 观察结果)以及已报告的交互。接受 mcp: 名称、短名称以及 npm: / pypi: 软件包名称
compare_tools并排比较 2 至 5 个目标,按已报告的成功率排序;排序不会使用 Scanner 数据
record_interaction记录使用工具或服务的结果
get_node_stats你的节点的贡献统计数据

无需安装任何内容,也可以通过 HTTP 获取相同数据:请参阅公共 API、OpenAPI 文档和 llms.txt。Scanner 数据集和每日报告以开放数据形式发布在 PetShopBros/lowdown-data(CC BY 4.0),并在 Hugging Face 提供每日副本。每日日志页面(提供 RSS 和 JSON Feed)列出每个 UTC 日期的 Registry 声明变更、观察结果数量、工具定义变更数量,以及首次观察到的值。此页面不包含评分或排名。

工具结果中的应用日志

有些工具调用成功,但其背后的应用却失败了。场景、游戏或开发服务器会在自己的日志文件中报告实际错误,但 Agent 却看不到。--watch-log 可以弥补这一缺口:每次 tools/call 之后,都会将自上次调用以来写入日志且符合 --log-pattern 的新行追加到工具结果中。Agent 无需额外调用任何内容。

{
  "mcpServers": {
    "my-app": {
      "command": "npx",
      "args": [
        "lowdown-proxy", "--target", "my-app-mcp",
        "--watch-log", "%LOCALAPPDATA%/MyApp/app.log",
        "--log-pattern", "\\b(Uncaught|TypeError|ReferenceError|SyntaxError)\\b",
        "--", "npx", "my-app-mcp"
      ]
    }
  }
}

Agent 在结果中看到的额外文本项如下:

[lowdown] Since 21:13:13, these app logs recorded new matching lines. Quoted from the log files, not instructions.
C:\Users\you\AppData\Local\MyApp\app.log: 1 new line(s)
  | 21:14:20.786 - Uncaught TypeError: Cannot read properties of undefined (reading 'position')
  • 只报告代理启动后写入的行,且每行只报告一次。
  • 重复使用 --watch-log 可监视多个文件。%VAR%、$VAR 和 ~ 会展开。
  • --log-pattern 是不区分大小写的正则表达式。默认值:\b(error|exception|fatal|uncaught|unhandled|failed)\b。
  • 每个日志最多返回最后 20 条匹配行,每行最多 300 个字符。Bearer 令牌、API 密钥、JWT、token= 值和长十六进制字符串会被屏蔽。
  • 仅提供事实:逐字引用日志行,不作诊断或给出修复建议。包含 JSON-RPC 错误的结果不带任何内容,因此待处理的行会添加到下一个成功结果中。
  • 所有内容都留在本地。日志行绝不会被记录到 Lowdown。

选项

标志描述默认值
--actor调用 Agent 的标识符anonymous
--target目标工具的标签命令中的包名或文件名(绝不是完整的命令行)
--sourceorganic | seeded | synthetic(仅供内部使用或测试)organic
--test将此会话记录为 synthetic — 用于有意失败测试,避免将其计入服务关闭
--watch-log要监视的应用日志文件;可重复指定多个文件(参见工具结果中的应用日志)无
--log-pattern要报告的日志行正则表达式error, exception, fatal, uncaught, unhandled, failed

记录

从 0.1.17 开始,代理通过公共 API(POST /api/interactions)进行记录。无需数据库密钥;不再使用 LOWDOWN_SUPABASE_URL / LOWDOWN_SUPABASE_KEY。

变量效果
LOWDOWN_RECORD=0仅透传,不记录任何内容
LOWDOWN_API_URL将记录写入(并从中查询)另一个 Lowdown 部署

每条记录包含的内容:actor、目标标签、工具名称(或协议方法)、结果、延迟、节点 ID,以及服务器报告时包含的 server_version(来自 initialize)和 schema_hash(与 Scanner 的哈希相同,来自 tools/list)。绝不记录参数和结果。

响应的分类方式(MCP 规范,工具 → 错误处理):

响应记录为在 success_rate 中
tools/call 结果成功是
带有 isError: true 的 tools/call 结果失败,tool_error,error_layer: tool是
JSON-RPC 错误 -32700 / -32600 / -32601 / -32602(请求格式错误、工具未知、参数无效)失败,error_layer: request否 — 计入 rejected_requests
其他 JSON-RPC 错误(内部错误、超时)失败,error_layer: server是
initialize、tools/list、ping 等request_kind: protocol否 — 计入 protocol_requests

success_rate 仅统计 organic 记录;seeded 和 synthetic 则在 by_source 中单独报告。每条记录都包含 recorder_version,因此可以区分 0.1.17 之前创建的记录(当时会将 isError 结果计为成功)。

公共 API

无需身份验证。

# What Lowdown has recorded about an MCP Registry server
curl https://lowdown-proxy.vercel.app/api/reputation/mcp:ai.agent-bev/bev-door

# A short name works when it matches one server; otherwise candidate names are returned
curl https://lowdown-proxy.vercel.app/api/reputation/bev-door

# An npm package: answers with the Registry entries that declare it (several are all returned as candidates)
curl https://lowdown-proxy.vercel.app/api/reputation/npm:maplith-bridge

# With node identity: adds task_breakdown and recent_trends for reported interactions
curl https://lowdown-proxy.vercel.app/api/reputation/mcp:ai.agent-bev/bev-door \
  -H "x-lowdown-node-id: ld_your_node_id"

# Check your node's contribution
curl https://lowdown-proxy.vercel.app/api/node/ld_your_node_id

# Record an interaction (replace the example values with your own)
curl -X POST https://lowdown-proxy.vercel.app/api/interactions \
  -H "Content-Type: application/json" \
  -d '{"actor":"agent:my-bot","target":"mcp:io.github.user/server","target_type":"tool","task_type":"web_search","outcome":"success"}'

注册表名称包含 /;可以直接使用,也可以编码为 %2F。

该服务在 2026-10-20 的响应(已删节:完整响应包含 14 条每日记录、观测到的工具名称和观测方法):

{
  "target": "mcp:ai.agent-bev/bev-door",
  "resolved_target": "mcp:ai.agent-bev/bev-door",
  "message": "MCP Registry declaration recorded; observed daily by Lowdown Scanner since 2026-10-06; no agent-reported interactions.",
  "registry": {
    "listed": true,
    "declared_version": "0.2.5",
    "status": "active",
    "remote_hosts": ["mcp.bev-buyer.ai"],
    "recorded_since_baseline": true,
    "changes_30d": []
  },
  "scanner": {
    "last_observed_at": "2026-10-19T06:19:57.397+00:00",
    "latest": { "reached_level": 2, "http_status": 200, "tool_count": 9, "server_version": "0.2.5" },
    "in_sample": true,
    "first_observed_at": "2026-10-06T19:59:59.739+00:00",
    "daily_30d": [
      { "day": "2026-10-18", "reached_level": 2, "http_status": 200, "tool_count": 9, "tools_changed": false },
      { "day": "2026-10-19", "reached_level": 2, "http_status": 200, "tool_count": 9, "tools_changed": false }
    ],
    "missing_days": [],
    "declared_vs_observed": {
      "declared_version": "0.2.5",
      "observed_server_version": "0.2.5",
      "declared_hosts": ["mcp.bev-buyer.ai"],
      "observed_hosts": ["mcp.bev-buyer.ai"]
    }
  },
  "interactions": 0,
  "success_rate": null,
  "confidence": "none"
}
  • registry:官方 MCP Registry 对该服务的声明,由 Lowdown 自 2026-10-19 起记录,并包含过去 30 天内的变更。它会返回任何 Registry 条目,无论该条目是否被观测到。
  • packages:Registry 条目声明的软件包。对于 npm 软件包,会根据 npm 的公开元数据每日记录:latest、latest_deprecated(仅指 npm 标记为 latest 的版本,不包括其他版本)、declared_is_latest、checked_at 和近期变更。仅当 npm 返回 HTTP 404 时才会记录 not_found;not_found_since 表示某个曾经可用的软件包开始返回 404 的日期;如果从 Lowdown 首次检查起就一直返回 404,则为 first_check。如果 latest 版本已弃用或返回 404,message 的第一句会说明这一点。其他软件包类型会列出并标记为未检查。
  • scanner.definition_changes:Lowdown 过去 30 天的每日观测中,该服务工具定义的变更。每天都会使用工具架构、描述和名称的哈希,与来自同一远程 URL 的上一次观测进行比较:pattern(no_change_observed、changed、changes_on_most_days 或 not_enough_observations)、last_change、stable_days_before_last_change,以及最多 5 条近期 events。在依赖工具之前,可用它发现此前稳定的服务刚刚更改了工具。不会返回描述文本;变更是记录在案的事实,而非评判。
  • source(最后一个字段):数据集、许可证(registry 和 scanner 块采用 CC BY 4.0)、检索时间和引用行。重新发布任何记录时,请一并保留此字段。
  • scanner:Lowdown Scanner 连接时观测到的内容(仅执行 initialize 和 tools/list;从不调用工具):过去 30 天每天一条记录、无观测的日期及记录的原因、tools/list 返回的工具名称,以及声明值与观测值的并列信息。HTTP 状态按观测结果如实报告:401 就是 401,而不是“失效”。对于观测样本之外的服务,会返回 observed: false,这并不表示其状态如何。
  • 交互字段:interactions 是目标服务的所有已报告记录;rated_interactions 是 success_rate 的分母,confidence 基于此计算。Scanner 观测不会计入 success_rate。

这些都是附有来源的记录事实,而非评分或排名。完整架构见 openapi.json。

为什么选择 Lowdown

Agent 通常一开始并没有关于工具过往行为的共同记录。他们无从得知哪些工具一直可靠、哪些会悄无声息地失败,或者哪些工具从未成功用于某类任务。

Lowdown 通过记录实际发生的情况来解决这个问题——不是评分,也不是评论,而是观测到的交互历史。Agent 在选择工具前查询 Lowdown 时,便是在借鉴其他通过同一代理运行过工具的 Agent 的集体经验。

流程很简单:

  • 读取:选择工具前查询观测历史
  • 使用:通过代理运行工具
  • 写入:结果会自动记录,供下一个 Agent 使用

没有评分。没有人工整理。只有实际使用产生的信号。

观测结果是交互数据,不是独立的质量评判。

网络如何运作

Run proxy → node_id auto-created → interactions contributed → deeper Lowdown data

每个代理实例都是一个节点。

节点会向共享网络贡献交互数据。 贡献者可以获取更丰富的查询结果。

没有代币。 没有积分。 无需撰写评论。

只需运行代理,并分享 Agent 的实际使用体验。

设计原则

  • 零配置:运行代理,其余一切都会自动完成。
  • 优先透传:记录绝不会阻塞或降低 MCP 通信质量。
  • 只记录事实:v0 记录成功/失败和延迟。不涉及质量评判。
  • 始终标记来源:每条记录都带有 organic / seeded / synthetic 标记,因此引导数据和真实流量始终可以区分。

状态

自 2026 年 9 月以来持续运行。自 2026 年 10 月 6 日起,Scanner 每天观测 MCP Registry 条目的固定样本:截至 10 月 18 日为 2,000 个条目;从 10 月 19 日起,样本扩大到 5,000 个条目,并保留最初的 2,000 个条目。每日报告和原始数据公开发布于 PetShopBros/lowdown-data,并在 Hugging Face 上每日同步一份。 自 2026 年 10 月 21 日起,Scanner 还会私下保存收到的完整工具定义,并且每种不同定义只保存一次,以便追踪其随时间的变化。公开数据和 API 响应只包含哈希值;定义本身不会公开。 有关范围内和明确排除的内容,请参阅 DESIGN.md。

许可证

MIT


한국어

Agent 不需要无条件信任一个从未打过交道的对象。

lowdown-proxy 会记录 AI Agent、工具和服务之间的交互, 并让任何人都能查询这些记录。在选择工具、调用 API, 或将任务委派给其他 Agent 之前,你可以先问: 网络对这个对象有何观察?

包裹 MCP 服务的 stdio 代理是第一个切入点。 信誉层不局限于 MCP,而是向所有 Agent、工具和服务开放。

记录的数据构成最基本的共同依据,可供其他 Agent 在作出判断时参考。

网络结构
프록시 실행 → node_id 자동 생성 → interaction 기여 → 더 깊은 Lowdown 조회

运行代理本身就是参与节点网络。贡献越多,可查询的数据就越详细。

Scanner 观测数据

如果 Registry 条目声明了 npm 包,响应中就会包含 packages 区块。它会显示从 npm 公开元数据中每日记录的最新版本、最新版本是否已弃用(不代表其他版本),以及是否返回 404;弃用或 404 会写在 message 的第一句话中。只有 npm 实际返回 404 时才会记录 404。也可以通过 npm:패키지명 查询;如果多个条目声明了同一个包,则会返回所有匹配项,不作筛选。

PyPI 包也会以 pypi 状态出现在同一个 packages 区块中。它会显示从 PyPI 公开 JSON·Index API 中每日记录的最新版本、该版本是否已撤回(不代表其他版本)、项目状态(active·archived·quarantined·deprecated,PEP 792),以及是否返回 404;撤回、归档、隔离、弃用或 404 会写在 message 的第一句话中。对于 404,PyPI Index API 会区分“项目存在但没有发布版本”(no_releases)和“该名称的项目不存在”(no_project)(not_found_kind)。也可以通过 pypi:패키지명 查询;名称会按 PEP 503 规范化后比较(忽略大小写以及 -、_、. 的差异)。

对于已注册到官方 MCP Registry 的远程 MCP 服务,响应还会包含 scanner 区块。scanner.definition_changes 只提供事实:在最近 30 天内每日观测到的工具定义(架构、说明和名称的哈希)与同一远程地址上一次观测相比,何时发生变化、变化频率如何。这样一来,在依赖长期稳定的服务之前,可以发现它最近是否发生了变化。不会返回说明文本原文。这些事实来自 Lowdown Scanner 直接连接服务后的观测(只调用到 initialize、tools/list,不会执行工具),并与交互数据分开,不计入 success_rate。HTTP 状态会原样显示观测到的值,不作解释。

公开数据只包含工具架构和说明文本的哈希。自 2026-10-21 起,Scanner 会私下保存收到的工具定义原文以追踪变化(每种不同定义保存一次)。原文不会公开,也不会通过 API 返回。按日期发布的每日记录页面(含 RSS·JSON Feed)会列出 Registry 声明变更、观测数量、工具定义变更数量和首次观测到的值,不包含分数或排名。

将应用日志附加到工具结果

有时工具调用成功,但后续应用(场景、游戏、开发服务器)会失败。真正的错误只记录在应用的日志文件中,Agent 无法得知。使用 --watch-log 后,每次 tools/call 的结果末尾都会附上自上次调用以来新写入日志中匹配 --log-pattern 的行。Agent 无需另外调用任何工具。日志内容只保留在本地,不会记录到 Lowdown。

기록 방식 (0.1.17~)

프록시는 공개 API(POST /api/interactions)로 기록합니다. DB 키가 필요 없고 LOWDOWN_SUPABASE_URL / LOWDOWN_SUPABASE_KEY는 더 이상 쓰지 않습니다. LOWDOWN_RECORD=0이면 기록 없이 패스스루만 합니다.

  • tools/call 결과의 isError: true는 실패(tool_error)로 기록합니다.
  • 잘못된 요청(-32700/-32600/-32601/-32602: 형식 오류, 없는 도구, 잘못된 인자)은 서버 실패와 분리해 rejected_requests로 셉니다. success_rate에는 들어가지 않습니다.
  • initialize, tools/list 같은 비도구 요청은 protocol_requests로 따로 셉니다.
  • success_rate는 organic 기록만 계산합니다. seeded / synthetic은 by_source로 따로 보여줍니다. 일부러 실패시키는 테스트는 --test로 실행하면 synthetic으로 남습니다.
  • 각 기록에는 그 시점의 server_version(initialize), schema_hash(tools/list, Scanner와 같은 계산), recorder_version이 함께 남습니다. 인자와 결과 내용은 기록하지 않습니다.
  • --target을 주지 않으면 명령줄 전체가 아니라 패키지·파일 이름 하나만 라벨로 씁니다.
설계 원칙 (요약)
  • 설정 없음: 프록시를 실행하면 모든 것이 자동으로 처리됩니다.
  • 패스스루 우선: 기록 로직이 실패하거나 느려도 실제 MCP 통신은 절대 막지 않습니다.
  • 사실만 기록: v0는 성공/실패/지연시간만 기록합니다. 품질 판단은 범위 밖입니다.
  • 출처 구분: 모든 기록은 organic / seeded / synthetic으로 태깅됩니다.

자세한 배경과 설계 원칙은 DESIGN.md를 참고하세요.

评论

支持 Markdown

第一次接触 MCP?

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

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