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 分