OneTool MCP
Provides web and news search capabilities through the Brave search engine, enabling AI agents to retrieve current information from the internet.
Enables creation and manipulation of live whiteboard diagrams through a Mermaid-compatible DSL, allowing AI agents to draw and visualize diagrams interactively.
Provides proxy access to GitHub MCP server functionality, allowing AI agents to interact with repositories, files, and other GitHub resources through explicit tool calls.
Offers Google Grounding search capabilities, enabling AI agents to retrieve information with source attribution and grounding through Google's search infrastructure.
Supports creation of diagrams using Mermaid syntax through the diagram pack, enabling AI agents to generate visual representations of data and processes.
Provides package version checking capabilities through the package pack, allowing AI agents to retrieve version information for npm packages.
Provides package version checking capabilities through the package pack, allowing AI agents to retrieve version information for Python packages from PyPI.
Enables execution of Python code as the primary interface for tool calls, allowing AI agents to write and run Python code to access all available tools and functionality.
Provides database operations through SQLite with FTS5 support, enabling AI agents to query, manage, and search structured data in local databases.
Supports SVG image format processing through the image vision capabilities, allowing AI agents to analyze and work with SVG graphics.
Enables retrieval of Wikipedia article summaries through extensible tool creation, allowing AI agents to access encyclopedic information programmatically.
Supports YAML configuration parsing and management for MCP server proxy configuration, allowing AI agents to configure and manage external MCP server connections.
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).
Related MCP server: MCP Lite Wrappers
The Solution
OneTool is one MCP server that exposes tools as a Python API. Instead of reading tool definitions, your agent writes code:
__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%"
97% fewer tokens. 30× lower cost. No context rot. (Measured - 47,660 → 1,131 input tokens against 18 MCP servers.)
Code Is the Interface
Because tools are Python functions, your agent does things tool-call JSON can't: batch, chain, loop, compose.
__onetool
page = 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 resolveA 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):
curl -LsSf https://onetool.beycom.online/install.sh | sh # macOS / Linux
irm https://onetool.beycom.online/install.ps1 | iex # Windows (PowerShell)Or install manually with uv:
uv tool install 'onetool-mcp[all]' # everything
onetool init --config ~/.onetoolThen print ready-to-paste MCP client config with resolved absolute paths and add it
to your client (claude-code, claude-desktop, cursor, or vscode):
onetool init mcp-config --client claude-code # or omit --client for all fourThat'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:
npx skills add https://github.com/beycom/onetool-mcp --skill ot-ref --agent claudeWhat's Inside
Search & docs | Brave, Google-grounded, and Tavily search (each with batch + answer modes), Context7 library docs, web fetch with extraction controls |
Files & data | File ops with path boundaries, full Excel control, SQL databases, PDF/Word/PowerPoint → Markdown, ripgrep, package versions |
Context economy |
|
Persistent state |
|
Visual | Live Excalidraw whiteboard with a Mermaid-compatible DSL and offline auto-layout, Mermaid/PlantUML/D2 diagrams, architecture models → draw.io-editable SVG |
Runtime | MCP server proxy with runtime enable/disable/restart, direct CLI/API into the running process, |
Trust | age-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):
Pack | Tools | Extra | Description |
|
|
| Architecture models → draw.io-editable SVG |
|
|
| Brave web search |
|
|
| Browser annotations (Chrome DevTools) |
|
| Messages to the upcoming onetool-console app | |
|
|
| Library documentation |
|
|
| Documents → Markdown |
|
|
| SQL databases |
|
|
| Mermaid / PlantUML / D2 via Kroki |
|
|
| Full Excel control |
|
|
| File ops with path boundaries |
|
|
| Google-grounded search with sources |
|
|
| RAG knowledge bases (hybrid search) |
|
|
| Git-backed local history snapshots |
|
|
| Persistent memory with semantic search |
|
| Introspection and management | |
|
| Smart context store for large outputs | |
|
| Scaffold new tool packs | |
|
| Image vision via a dedicated model | |
|
| LLM-powered transforms | |
|
| Encrypted secrets management | |
|
| Runtime control of proxied servers | |
|
| Named timers | |
|
|
| Package versions and staleness |
|
|
| Browser annotations (Playwright) |
|
|
| Fast code search |
|
|
| AI-native search and extraction |
|
|
| Web content extraction |
|
|
| 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:
# .onetool/onetool.yaml
servers:
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}__onetool private_api.read_resource(path="README.md")Proxied servers can be enabled, disabled, and restarted mid-conversation with ot_servers - no client restart.
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.
# secrets.yaml - safe to inspect, safe to commit
brave_api_key: age1enc:YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNT...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:
# Recommended local MCP root mode: stdio
onetool serve --config .onetool/onetool.yaml
# URL-based MCP root mode for containerized clients
onetool 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 rawExtending
Drop a Python file, get a pack. No registration, no config:
# .onetool/tools/wiki.py
pack = "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")__onetool wiki.summary(title="Python_(programming_language)")Documentation
Quickstart - 30 seconds to first tool call
Installation - All platforms
Configuration - YAML schema
Tools Reference - All 253 tools
Security - The layered security model
Extending - Build your own
Dev Docs - Internal developer documentation
Specifications - OpenSpec specifications index
References
Code Execution with MCP - Anthropic Engineering
Context Rot - Chroma Research
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:
Browse the tracker: github.com/beycom/onetool-mcp/issues
Search with GitHub syntax:
is:issue repo:beycom/onetool-mcp <keyword>
Raise a new issue: github.com/beycom/onetool-mcp/issues/new
Support
If you find OneTool useful:
License
GPLv3
This server cannot be installed
Maintenance
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/beycom/onetool-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server