OneTool MCP

by beycom

Not rated
GitHub

About

🧿 One MCP for developers - No tool tax, no context rot. 100+ tools including Brave, Gemini, Context7, Version Checker, Excel, File Ops, Database, Chrome DevTools.

Details

Author
beycom
Categories
Developer Tools, Other, Database, File Management, Productivity

Setup

Install OneTool MCP in your MCP client (Claude Desktop, Cursor, Windsurf, and others).

Repository: https://github.com/beycom/onetool-mcp

Follow the installation instructions in the repository README, then restart your MCP client.

🧿 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.

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

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'scontext rot- your AI literally gets dumber as you add more tools (Chroma Research, 2025).

OneTool isone MCP serverthat 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.)

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 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

Bootstrap (installsuvif 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)
uv tool install 'onetool-mcp[all]' # everything onetool 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, orvscode):

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 theot-refskill into your agent withvercel-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 claude

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

📖 Complete tools reference— every signature, generated from source

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 withot_servers- no client restart.

onetool initwalks you through encrypted secrets: values insecrets.yamlare 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...

Works as an MCP serverandas 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 raw

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)")

- 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

- Code Execution with MCP- Anthropic Engineering
-
Context Rot- Chroma Research

OneTool sends anonymous startup pings (event type, version, OS). No personal data. Opt out:export DO_NOT_TRACK=1or settelemetry.enabled: falseinonetool.yaml.Details

- 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

This is a web browser that enables your coding agent, such as Claude Code, to visit websites on your behalf and assist you in identifying bugs or creating UI test cases.

Provides utility functions for common tasks like text processing, encoding, decoding, hashing, and system information.

Cross-platform MCP server for system clipboard access. Three tools: get_clipboard, set_clipboard, watch_clipboard. Single Rust binary, zero runtime deps.

Quarkus-based MCP servers for interacting with JDBC databases, filesystems, and Docker containers.

Visualize directory structures with real-time updates, configurable depth, and smart exclusions for efficient project navigation.

A server for programmatic exploration of local files and folders.

Provides essential utility tools for text processing, file operations, and system tasks.

An MCP server for local file management and system operations.

The official developer experience MCP Server for Amazon DynamoDB. This server provides DynamoDB expert design guidance and data modeling assistance.

Official Chrome DevTools MCP server for controlling and inspecting a live Chrome browser from coding agents such as Gemini, Claude, Cursor, and Copilot.

Live browser debugging for AI assistants — DOM, console, network via MCP.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.