One MCP, unlimited tools.
Reason this release was yanked:
RC
Project description
One tool to rule them all, one tool to find them, one tool to bring them all, and in the development bind them.
v1.0.0 Pre-Release - API stable, actively tested.
OneTool is a local-first MCP server that exposes a single run tool for code execution, giving your AI assistant access to unlimited capabilities through one interface.
The Problem
Connect 5 MCP servers and you've burned 55K tokens before the conversation starts. Connect 10+ and you're at 100K tokens. Your AI gets worse as you add more tools - that's not a bug, it's how context windows work.
The Solution
98.7% fewer tokens. Same accuracy. 10x lower cost.
Instead of loading 50 separate tool schemas, you write Python directly:
__ot brave.search(query="AI trends 2026")
No JSON schema parsing. No tool selection loops. No hoping the model guesses correctly. You write explicit code to call APIs - deterministic, visible, no hidden magic.
Based on Anthropic's research, which found token usage dropped from 150,000 to 2,000 when presenting tools as code APIs.
Core Capabilities
- 30-second setup - Install with uv or pip
- Drop-in extensibility - Add a Python file, get a new pack
- AST security - All code validated before execution
- Benchmark harness - Test LLM + MCP combinations with
bench
Batteries Included with 100+ Tools
See Tool Reference for the complete list of packs and tools.
Installation
uv tool install onetool-mcp
Or with pip: pip install onetool-mcp
With optional dependencies (for convert, excel, code search):
uv tool install onetool-mcp \
--with pymupdf --with python-docx --with python-pptx \
--with openpyxl --with Pillow --with duckdb --with openai
Add to Claude Code (~/.claude/settings.json):
{
"mcpServers": {
"onetool": {
"command": "onetool"
}
}
}
Extending
Drop a Python file, get a pack. No registration, no config:
# tools/mytool.py
pack = "mytool"
def search(*, query: str) -> str:
"""Search for something."""
return f"Results for: {query}"
Why this approach
LLMs write Python instead of parsing JSON schemas. You see what's being called. 2K tokens instead of 150K. Adding your own packs is just dropping in a file.
Documentation
- Why OneTool - The problem and our solution
- Getting Started - 2-minute setup
- Tools Reference - All built-in tools
- Extending - Create your own tools
References
- Code Execution with MCP - Anthropic Engineering
- Context Rot - Chroma Research
Licensing
GPLv3 - Will transition to MIT at v2.0. Contribute via PRs to help us get there.
Support
If you use or like this project, please consider buying me a coffee:
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file onetool_mcp-1.0.0b1.tar.gz.
File metadata
- Download URL: onetool_mcp-1.0.0b1.tar.gz
- Upload date:
- Size: 3.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3eddff81cf0927bcf640b55da08d341d41bbde8bac6f481add41c297eff02077
|
|
| MD5 |
6c5ff0ab8a7ec99f93262434811049ae
|
|
| BLAKE2b-256 |
a0a1ae9af522e8e132719bec1a844e0a7e3538cf364b44e8c9212e9d9e1e420c
|
Provenance
The following attestation bundles were made for onetool_mcp-1.0.0b1.tar.gz:
Publisher:
publish.yml on beycom/onetool-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
onetool_mcp-1.0.0b1.tar.gz -
Subject digest:
3eddff81cf0927bcf640b55da08d341d41bbde8bac6f481add41c297eff02077 - Sigstore transparency entry: 888664260
- Sigstore integration time:
-
Permalink:
beycom/onetool-mcp@dc0bc0d8d9516ff6f7c523a9c72aada4ad7b471b -
Branch / Tag:
refs/tags/v1.0.0b1 - Owner: https://github.com/beycom
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@dc0bc0d8d9516ff6f7c523a9c72aada4ad7b471b -
Trigger Event:
release
-
Statement type:
File details
Details for the file onetool_mcp-1.0.0b1-py3-none-any.whl.
File metadata
- Download URL: onetool_mcp-1.0.0b1-py3-none-any.whl
- Upload date:
- Size: 314.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
53defec6cc53d3baec3a460ccdbc6ade28a87a2a8b0debba159c4cdc3f57f74d
|
|
| MD5 |
1ddbd9a09b98fb6f30146baa3be767d6
|
|
| BLAKE2b-256 |
53925b1526b845b4043455e518442b504270d310bb11b58d7e592d33bee0cac0
|
Provenance
The following attestation bundles were made for onetool_mcp-1.0.0b1-py3-none-any.whl:
Publisher:
publish.yml on beycom/onetool-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
onetool_mcp-1.0.0b1-py3-none-any.whl -
Subject digest:
53defec6cc53d3baec3a460ccdbc6ade28a87a2a8b0debba159c4cdc3f57f74d - Sigstore transparency entry: 888664307
- Sigstore integration time:
-
Permalink:
beycom/onetool-mcp@dc0bc0d8d9516ff6f7c523a9c72aada4ad7b471b -
Branch / Tag:
refs/tags/v1.0.0b1 - Owner: https://github.com/beycom
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@dc0bc0d8d9516ff6f7c523a9c72aada4ad7b471b -
Trigger Event:
release
-
Statement type: