mcpField
J
jmunch-mcp

jmunch-mcp

本地服务
github.com/jgravelleAI 与智能体338 周前更新

关于 jmunch-mcp

jmunch-mcp 是一个透明的 MCP 代理,包装单个上游 MCP 服务,并将体积较大的工具响应转换为可查询的句柄,以减少 token 消耗。面向需要调用大型结果的 Agent 使用者。

主要功能

  1. 01透明转发上游 MCP 调用
  2. 02将大型响应转为句柄
  3. 03通过 peek、slice、search 等动词查询
  4. 04按内容类型路由到 SQLite 或 JSON 后端
  5. 05提供本地指标仪表板
  6. 06网关模式支持 OpenAI 与 Anthropic HTTP API

适用场景

  1. 01减少 GitHub MCP 服务返回大量 issue 时的 token 消耗
  2. 02降低 Firecrawl 抓取页面后的上下文占用
  3. 03为 LangChain、Aider 等应用的工具结果做句柄化处理

MCP 相关

jmunch-mcp 作为 MCP 服务的代理运行,客户端连接它而非上游服务。它转发每次调用,并向客户端暴露 peek、slice 等查询工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"jgravelle-jmunch": {
"command": "uvx",
"args": [
"jmunch-mcp"
]
}
}
}
启动命令uvx jmunch-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypijmunch-mcp0.2.3

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

jmunch-mcp

适用于几乎所有其他 MCP 服务的透明 MCP 代理,可降低大型上游工具响应的 Token 成本。它封装单个上游 MCP、转发每次调用,并将庞大的载荷转换为内容感知后端,供 Agent 使用一组通用动词(peek、slice、search、aggregate、describe、list_handles)查询。

基准测试

针对两个热门的真实 MCP 服务进行端到端测量。每次运行都会执行一组固定的工具调用两次——一次直接调用,一次通过 jmunch-mcp 调用;在代理调用侧,还会执行三次后续 jmunch.* 动词调用,以模拟 Agent 深入查询大型结果,而不是将其全部读入。

套件上游直接调用 Token 数通过 jmunch-mcp节省
GitHub(facebook/react issues/PR/commits)@modelcontextprotocol/server-github379,87844,328335,550(88.3%)
Firecrawl(Wikipedia 抓取 + 站点地图 + 搜索)firecrawl-mcp259,5742,928256,646(98.9%)

尽管增加了额外的动词调用,在这两个测试套件中,使用代理的实际耗时也更短——Agent 无需逐页读取庞大的载荷:

套件直接调用通过 jmunch-mcp差值
GitHub8.4s6.8s−1.6s(−19.0%)
Firecrawl16.4s9.2s−7.2s(−43.9%)

表格内容(GitHub)会路由到 SQLite 后端,并支持 peek/slice/aggregate;JSON 内容(Firecrawl 抓取结果/站点地图)会路由到 JSON 树后端,并支持 peek/slice(JSONPath)/search。请参阅 bench/README.md 了解复现方法。

安装

pip install jmunch-mcp

从源码安装:

git clone https://github.com/jgravelle/jmunch-mcp
cd jmunch-mcp
pip install -e .

快速开始

jmunch-mcp init

init 会扫描三个来源——你的 MCP 客户端配置(Claude Desktop、Claude Code、Cursor、Windsurf、Continue)、正在运行的进程,以及包含热门上游服务(GitHub、Firecrawl、filesystem、fetch、Brave Search、Slack)的小型目录——然后生成一份清单。勾选要封装的上游服务后,它会将每项选择分别写入一个 ./configs/ 下的 <name>.toml 文件。非交互式选项:--yes(选择客户端中已注册的所有服务)、--dry-run、--overwrite、--out <dir>、--no-running、--no-catalog。

手动配置
jmunch-mcp --config examples/config.toml

配置 MCP 客户端,使其启动 jmunch-mcp --config <path>,而不是直接启动上游服务。添加 --report 可在关闭时打印会话摘要。

网关模式(v2 — 通用代理)

上面的 MCP 代理可为 MCP 客户端节省 Token。网关则可为任何使用 OpenAI 或 Anthropic HTTP API 的 AI 应用节省 Token——包括 LangChain、LlamaIndex、CrewAI、AutoGen、Continue、Cline、Aider 或原始 SDK。应用无需修改代码,只需将 base_url 指向 jmunch。

pip install 'jmunch-mcp[gateway]'
jmunch-mcp gateway --config configs/gateway.example.toml
# listening on http://127.0.0.1:7879

配置应用:

# OpenAI SDK, LangChain, Aider, Continue, Cline, Ollama-compat apps:
export OPENAI_API_BASE=http://127.0.0.1:7879/v1

# Native Anthropic SDK / Claude Code:
export ANTHROPIC_BASE_URL=http://127.0.0.1:7879

它会透明地执行以下操作:

  • 将庞大的 tool_results 转换为句柄:应用的工具返回 100KB 的 JSON,模型看到的则是 1KB 摘要和不透明句柄。
  • 将 jmunch 动词(peek、slice、search、aggregate、describe、summarize、list_handles)注入请求的 tools 数组,让模型可以深入查询。
  • 在本地处理动词调用:当模型调用 jmunch_peek 时,网关会根据句柄注册表在本地解析,并合成后续轮次。应用不会看到 jmunch tool_calls;这些调用的完成过程不会消耗上游 Token。
  • 持久化句柄至 ~/.jmunch/handles.db,并支持配置 TTL,以便在重启后保留句柄并跨会话读取。
  • 双向流式传输:OpenAI SSE 和 Anthropic 事件流会先缓冲再重放,并正确解析动词调用。

可通过请求头控制每次请求:

  • X-Jmunch-Upstream: <name> — 覆盖已配置的上游服务。
  • X-Jmunch-Inject: false — 禁用本次调用的工具注入(仅透传 + 在请求侧转换句柄)。

指标会汇入与 MCP 代理相同的仪表板。在 /api/stats 和 /api/calls 上使用 ?surface=gateway 或 ?surface=mcp 进行筛选。

仪表板

一个只读的本地 Web UI,展示各代理写入的指标数据库内容。显示累计总量、按上游服务划分的明细,以及转发调用的时间序列。

jmunch-mcp dashboard              # http://127.0.0.1:7878
jmunch-mcp dashboard --open       # also open in your default browser

标志:--port(默认值为 7878)、--host(默认值为 127.0.0.1)、--db <path>(用于指定非默认指标数据库),以及 --open(用于启动浏览器)。只有在代理记录了调用后,指标才会显示,因此请先通过封装后的上游服务运行客户端。

许可证

jmunch-mcp 基于 MIT 许可证 发布,可免费用于使用、修改、分发,并嵌入商业产品。

请注意,你通过 jmunch-mcp 代理的上游 MCP 服务的许可由这些服务各自的条款约束。这适用于第三方 MCP 服务(GitHub、文件系统提供商、供应商 API),也适用于你可能会组合使用的更广泛检索生态中的任何同类工具——重新分发前,请检查各上游服务的许可证。

评论

支持 Markdown

第一次接触 MCP?

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

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