OneTool MCP

io.github.beycom由 GitHub 账号 beycom 发布v2.2.2更新于 Oct 24, 2026

One MCP for devs incl Brave,Google,Tavily,Context7,AWS,Excalidraw,DB,GitHub,DevTools,Playwright

概览

AI 生成的概览

一个本地 MCP 服务器,把 250 多个开发工具以 Python API 形式提供,并可代理其他 MCP 服务器。

可以做什么
OneTool 将 28 个工具包整合在一起,助手以 Python 代码方式调用,而不是逐个读取工具定义,涵盖网页搜索、库文档、文件操作、SQL 数据库、文档转换、图表、图像识别、持久记忆和 RAG 知识库。它还能代理已有的 MCP 服务器,以命名空间方式调用,并可在运行中启用、禁用或重启这些服务器。过大的输出可存为句柄,密钥使用 age 加密,私钥保存在操作系统钥匙串中。
适用场景
当助手需要同时使用大量开发工具、而每个服务器重复发送工具定义造成 token 开销时值得考虑;也适合希望把搜索、文件、数据库、图表和记忆集中在一个 MCP 入口的场景。若已运行多个 MCP 服务器,想保留它们又不想承担每次请求的工具开销,也可使用。
运行要求
以 stdio 方式在用户机器上本地运行,仅支持桌面端,无网页版。可通过引导脚本安装,或用 uv 安装(uv tool install 'onetool-mcp[all]'),再执行 onetool init 初始化。清单中未声明认证、环境变量或请求头,但搜索类工具包和被代理的服务器需要各自在 onetool.yaml 中配置 API 密钥或令牌。
安装前请注意
安装说明把远程脚本直接管道给 sh 或 PowerShell 执行,运行前应先审阅。被代理的服务器可配置 bearer 令牌(如 PRIVATE_MCP_TOKEN),搜索工具包需要服务商 API 密钥,这些以 age 加密保存,私钥在操作系统钥匙串中。工具可以写入、编辑和删除文件、执行 SQL、恢复 Git 快照,需注意路径边界与权限。除非设置 DO_NOT_TRACK=1 或 telemetry.enabled: false,否则会发送匿名启动遥测。

安装

在 SourceWeft 中

  1. 打开 控制台中的 OneTool MCP,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

[OneTool]

🧿 One MCP for developers - no tool tax, no context rot.
250+ tools your agent calls as Python code: search, docs, files, databases, diagrams, vision, memory - plus a proxy for every MCP server you already use.

[PyPI] [License] [Python] [GitHub stars]

Works with Claude Code, Cursor, Codex - any MCP client


The Problem

Every MCP server re-sends its tool definitions on every request: 3K-30K tokens each. Connect 5 servers and you've burned 55K tokens before the conversation starts. Connect 10+ and you're at 100K.

The math is brutal: Claude Opus 4.5 at $5/M input tokens, 20 days × 10 conversations × 10 messages × 3K tokens = $30/month per MCP server - even if you never use the tools.

And then there's context rot - your AI literally gets dumber as you add more tools (Chroma Research, 2025).

The Solution

OneTool is one MCP server that exposes tools as a Python API. Instead of reading tool definitions, your agent writes code:

python
__onetool brave.search(query="react 19 server components")

Configure one MCP server. Use unlimited tools - ~2K tokens no matter how many you add.

"Agents scale better by writing code to call tools instead. This reduces the token usage from 150,000 tokens to 2,000 tokens...a cost saving of 98.7%"

— Anthropic Engineering

97% fewer tokens. 30× lower cost. No context rot. (Measured - 47,660 → 1,131 input tokens against 18 MCP servers.)

📖 Read the full story


Code Is the Interface

Because tools are Python functions, your agent does things tool-call JSON can't: batch, chain, loop, compose.

python
__onetoolpage = webfetch.fetch(url="https://fastmcp.dev/changelog", output_format="markdown")notes = ot_llm.transform(data=page, prompt="Summarise the breaking changes")mem.write(topic="deps/fastmcp", content=notes)

Three packs, one request. Intermediate results flow between tools as variables - the page body never touches your context window, and the summarising runs on a cheap model instead of your expensive coding agent.

Every call is explicit and reviewable - __onetool brave.search(query="...") shows you exactly what runs. No tool-selection guessing.

And the runtime is built for how agents actually type:

  • mem.search(q="auth") works - any unambiguous parameter prefix resolves (q= → query=)
  • wb.draw(...) works - packs have short aliases (wb, ctx, img)
  • github.listRepositories() works on proxied servers - snake/camel/Pascal all resolve
  • A typo'd tool gets a did-you-mean, a disconnected server names the command that fixes it
  • Oversized results come back as a searchable handle instead of flooding the window

Install

Bootstrap (installs uv if missing, installs OneTool, initialises config, prints MCP config):

bash
curl -LsSf https://onetool.beycom.online/install.sh | sh          # macOS / Linuxirm https://onetool.beycom.online/install.ps1 | iex               # Windows (PowerShell)

Or install manually with uv:

bash
uv tool install 'onetool-mcp[all]'   # everythingonetool init --config ~/.onetool

Then print ready-to-paste MCP client config with resolved absolute paths and add it to your client (claude-code, claude-desktop, cursor, or vscode):

bash
onetool init mcp-config --client claude-code   # or omit --client for all four

That's it. All 250+ tools work out of the box.

Verify: onetool init validate --config ~/.onetool/onetool.yaml

Install the ot-ref skill into your agent with vercel-labs/skills - it teaches the call conventions and ships a greppable index of every tool signature:

bash
npx skills add https://github.com/beycom/onetool-mcp --skill ot-ref --agent claude

📖 Full installation guide


What's Inside

Search & docsBrave, Google-grounded, and Tavily search (each with batch + answer modes), Context7 library docs, web fetch with extraction controls
Files & dataFile ops with path boundaries, full Excel control, SQL databases, PDF/Word/PowerPoint → Markdown, ripgrep, package versions
Context economyctx handles for large outputs, partial file reads (toc/slice), image vision on a dedicated cheap model (zero host tokens), LLM delegation (10× savings)
Persistent statemem memory with semantic + keyword search, history and rollback; knowledge RAG bases with AI enrichment; localhist Git-backed project snapshots
VisualLive Excalidraw whiteboard with a Mermaid-compatible DSL and offline auto-layout, Mermaid/PlantUML/D2 diagrams, architecture models → draw.io-editable SVG
RuntimeMCP server proxy with runtime enable/disable/restart, direct CLI/API into the running process, ot-ref agent skill, in-conversation tool forging
Trustage-encrypted secrets backed by your OS keychain, AST validation, path boundaries, output sanitisation, runtime stats with estimated savings

Tools

28 packs, 253 tools ready to use (console in beta):

PackToolsExtraDescription
archgenerate, validate, bundle_solution, …[dev]Architecture models → draw.io-editable SVG
bravesearch, news, image, video, search_batch[util]Brave web search
chrome_utilhighlight_element, guide_user, …[dev]Browser annotations (Chrome DevTools)
console (beta)show, display, list, read, clearMessages to the upcoming onetool-console app
context7search, doc[dev]Library documentation
convertpdf, word, powerpoint, excel, auto[util]Documents → Markdown
dbquery, schema, tables, sample[dev]SQL databases
diagramrender_diagram, batch_render, get_template, …[dev]Mermaid / PlantUML / D2 via Kroki
excelread, write, formula, create_table, … (24 tools)[util]Full Excel control
fileread, write, edit, grep, slice, toc, … (16 tools)[util]File ops with path boundaries
groundsearch, dev, docs, reddit, search_batch[util]Google-grounded search with sources
knowledgesearch, ask, write, related, … (15 tools)[util]RAG knowledge bases (hybrid search)
localhistsave, diff, restore, autosave_start, … (15 tools)[dev]Git-backed local history snapshots
memwrite, search, ask, history, rollback, … (31 tools)[util]Persistent memory with semantic search
othelp, tools, stats, status, result, … (18 tools)Introspection and management
ot_context (ctx)write, read, grep, slice, toc, ask, … (13 tools)Smart context store for large outputs
ot_forgecreate_ext, validate_extScaffold new tool packs
ot_image (img)load, ask, clip_ask, summary, … (9 tools)Image vision via a dedicated model
ot_llmtransform, transform_fileLLM-powered transforms
ot_secretsset, encrypt, audit, rotate, … (8 tools)Encrypted secrets management
ot_serversenable, disable, restart, statusRuntime control of proxied servers
ot_timerstart, stop, elapsed, list, clearNamed timers
packagepypi, npm, version, audit, models[dev]Package versions and staleness
play_utilhighlight_element, guide_user, …[dev]Browser annotations (Playwright)
ripgrepsearch, count, files, types[dev]Fast code search
tavilysearch, research, extract, search_batch, …[util]AI-native search and extraction
webfetchfetch, fetch_batch[dev]Web content extraction
whiteboard (wb)open, draw, layout, screenshot, … (22 tools)[util]Live Excalidraw canvas

📖 Complete tools reference — every signature, generated from source


MCP Server Proxy

Keep the MCP servers you already use. Wrap them in YAML and call them explicitly - as Python namespaces, without their tool tax:

yaml
# .onetool/onetool.yamlservers:  local_tools:    type: stdio    command: npx    args: ["-y", "some-mcp-server@latest"]  private_api:    type: http    url: ${PRIVATE_MCP_URL}    auth:      type: bearer      token: ${PRIVATE_MCP_TOKEN}
python
__onetool private_api.read_resource(path="README.md")

Proxied servers can be enabled, disabled, and restarted mid-conversation with ot_servers - no client restart.

📖 Configuration guide


Secrets You Can Commit

onetool init walks you through encrypted secrets: values in secrets.yaml are age-encrypted, the private key lives in your OS keychain, and decryption happens transparently at load.

yaml
# secrets.yaml - safe to inspect, safe to commitbrave_api_key: age1enc:YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNT...

📖 Security guide


Use from the CLI

Works as an MCP server and as a direct CLI bridge into the same running process - loaded config, secrets, and proxy connections stay warm. Useful for agent harnesses, scripts, and automation:

bash
# Recommended local MCP root mode: stdioonetool serve --config .onetool/onetool.yaml
# URL-based MCP root mode for containerized clientsonetool serve --transport http --config .onetool/onetool.yaml --host 127.0.0.1 --port 8767 --path /mcp
# Enable the MCP-owned direct API in onetool.yaml:# direct.host.enabled: true
# Start OneTool as MCP, then use the port printed in startup logs.onetool direct run --port 8765 "ot.packs()" --format json | jq '.[0].name'onetool direct run --port 8765 "brave.search(query='latest AI news')" --format raw

📖 Direct usage guide


Extending

Drop a Python file, get a pack. No registration, no config:

python
# .onetool/tools/wiki.pypack = "wiki"
def summary(*, title: str) -> str:    """Get Wikipedia article summary."""    import httpx    url = f"https://en.wikipedia.org/api/rest_v1/page/summary/{title}"    return httpx.get(url).json().get("extract", "Not found")
python
__onetool wiki.summary(title="Python_(programming_language)")

📖 Creating tools guide


Documentation


References


Telemetry

OneTool sends anonymous startup pings (event type, version, OS). No personal data. Opt out: export DO_NOT_TRACK=1 or set telemetry.enabled: false in onetool.yaml. Details


Issues

Check for existing issues first:

Raise a new issue: github.com/beycom/onetool-mcp/issues/new


Support

If you find OneTool useful:

[Ko-fi]


License

GPLv3

来源:README.md,提交 0445d6a

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v2.2.2最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分