OneTool MCP
🧿 Un solo MCP para desarrolladores - Sin impuesto de herramientas, sin deterioro del contexto. Más de 100 herramientas incluyendo Brave, Gemini, Context7, Version Checker, Excel, File Ops, Database, Chrome DevTools.
Documentación
🧿 Un MCP para desarrolladores: sin impuesto de herramientas, sin deterioro del contexto.
Más de 250 herramientas que tu agente invoca como código Python: búsqueda, documentación, archivos, bases de datos, diagramas, visión, memoria, además de un proxy para cada servidor MCP que ya uses.
Funciona con Claude Code, Cursor, Codex: cualquier cliente MCP
El Problema
Cada servidor MCP reenvía sus definiciones de herramientas en cada solicitud: 3K-30K tokens cada uno. Conecta 5 servidores y habrás consumido 55K tokens antes de que comience la conversación. Conecta 10 o más y estarás en 100K.
Las matemáticas son brutales: Claude Opus 4.5 a $5/M tokens de entrada, 20 días × 10 conversaciones × 10 mensajes × 3K tokens = $30/mes por servidor MCP, incluso si nunca usas las herramientas.
Y luego está el deterioro del contexto: tu IA literalmente se vuelve más lenta a medida que agregas más herramientas (Chroma Research, 2025).
La Solución
OneTool es un servidor MCP que expone herramientas como una API de Python. En lugar de leer definiciones de herramientas, tu agente escribe código:
__onetool brave.search(query="react 19 server components")
Configura un servidor MCP. Usa herramientas ilimitadas: ~2K tokens sin importar cuántas agregues.
"Los agentes escalan mejor escribiendo código para invocar herramientas en lugar de leer definiciones. Esto reduce el uso de tokens de 150,000 a 2,000... un ahorro de costos del 98.7%"
97% menos tokens. 30× menor costo. Sin deterioro del contexto. (Medido - 47,660 → 1,131 tokens de entrada contra 18 servidores MCP.)
El Código Es la Interfaz
Como las herramientas son funciones de Python, tu agente hace cosas que el JSON de llamadas a herramientas no puede: lotes, cadenas, bucles, composición.
__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)
Tres paquetes, una solicitud. Los resultados intermedios fluyen entre herramientas como variables: el cuerpo de la página nunca toca tu ventana de contexto, y el resumen se ejecuta en un modelo económico en lugar de tu costoso agente de codificación.
Cada llamada es explícita y revisable: __onetool brave.search(query="...") te muestra exactamente qué se ejecuta. Sin adivinanzas en la selección de herramientas.
Y el runtime está construido para cómo escriben realmente los agentes:
mem.search(q="auth")funciona: cualquier prefijo de parámetro inequívoco se resuelve (q=→query=)wb.draw(...)funciona: los paquetes tienen alias cortos (wb,ctx,img)github.listRepositories()funciona en servidores proxy: snake/camel/Pascal se resuelven todos- Una herramienta mal escrita recibe un "quisiste decir", un servidor desconectado nombra el comando que lo soluciona
- Los resultados sobredimensionados vuelven como un identificador buscable en lugar de inundar la ventana
Instalación
Bootstrap (instala uv si falta, instala OneTool, inicializa la configuración, imprime la configuración MCP):
curl -LsSf https://onetool.beycom.online/install.sh | sh # macOS / Linux
irm https://onetool.beycom.online/install.ps1 | iex # Windows (PowerShell)
O instala manualmente con uv:
uv tool install 'onetool-mcp[all]' # everything
onetool init --config ~/.onetool
Luego imprime la configuración del cliente MCP lista para pegar con rutas absolutas resueltas y agrégala a tu cliente (claude-code, claude-desktop, cursor o vscode):
onetool init mcp-config --client claude-code # or omit --client for all four
Eso es todo. Las más de 250 herramientas funcionan de inmediato.
Verifica: onetool init validate --config ~/.onetool/onetool.yaml
Instala la habilidad ot-ref en tu agente con vercel-labs/skills: enseña las convenciones de llamada e incluye un índice buscable de cada firma de herramienta:
npx skills add https://github.com/beycom/onetool-mcp --skill ot-ref --agent claude
📖 Guía de instalación completa
Qué Incluye
| Búsqueda y documentación | Búsqueda Brave, con base en Google y Tavily (cada una con modos de lote y respuesta), documentación de bibliotecas Context7, extracción web con controles de extracción |
| Archivos y datos | Operaciones de archivos con límites de ruta, control completo de Excel, bases de datos SQL, PDF/Word/PowerPoint → Markdown, ripgrep, versiones de paquetes |
| Economía de contexto | Identificadores ctx para salidas grandes, lecturas parciales de archivos (toc/slice), visión de imágenes en un modelo económico dedicado (cero tokens del host), delegación LLM (ahorro de 10×) |
| Estado persistente | Memoria mem con búsqueda semántica y por palabras clave, historial y reversión; bases RAG knowledge con enriquecimiento de IA; instantáneas de proyectos respaldadas por Git localhist |
| Visual | Pizarra Excalidraw en vivo con DSL compatible con Mermaid y diseño automático sin conexión, diagramas Mermaid/PlantUML/D2, modelos de arquitectura → SVG editable con draw.io |
| Runtime | Proxy de servidor MCP con habilitar/deshabilitar/reiniciar en tiempo de ejecución, CLI/API directa al proceso en ejecución, habilidad de agente ot-ref, creación de herramientas en conversación |
| Confianza | Secretos cifrados con age respaldados por tu llavero del sistema operativo, validación AST, límites de ruta, saneamiento de salidas, estadísticas de runtime con ahorros estimados |
Herramientas
28 paquetes, 253 herramientas listas para usar (console en beta):
| Paquete | Herramientas | Extra | Descripción |
|---|---|---|---|
arch | generate, validate, bundle_solution, … | [dev] | Modelos de arquitectura → SVG editable con draw.io |
brave | search, news, image, video, search_batch | [util] | Búsqueda web Brave |
chrome_util | highlight_element, guide_user, … | [dev] | Anotaciones de navegador (Chrome DevTools) |
console (beta) | show, display, list, read, clear | Mensajes para la próxima aplicación onetool-console | |
context7 | search, doc | [dev] | Documentación de bibliotecas |
convert | pdf, word, powerpoint, excel, auto | [util] | Documentos → Markdown |
db | query, schema, tables, sample | [dev] | Bases de datos SQL |
diagram | render_diagram, batch_render, get_template, … | [dev] | Mermaid / PlantUML / D2 vía Kroki |
excel | read, write, formula, create_table, … (24 herramientas) | [util] | Control completo de Excel |
file | read, write, edit, grep, slice, toc, … (16 herramientas) | [util] | Operaciones de archivos con límites de ruta |
ground | search, dev, docs, reddit, search_batch | [util] | Búsqueda con base en Google con fuentes |
knowledge | search, ask, write, related, … (15 herramientas) | [util] | Bases de conocimiento RAG (búsqueda híbrida) |
localhist | save, diff, restore, autosave_start, … (15 herramientas) | [dev] | Instantáneas de historial local respaldadas por Git |
mem | write, search, ask, history, rollback, … (31 herramientas) | [util] | Memoria persistente con búsqueda semántica |
ot | help, tools, stats, status, result, … (18 herramientas) | Introspección y gestión | |
ot_context (ctx) | write, read, grep, slice, toc, ask, … (13 herramientas) | Almacén de contexto inteligente para salidas grandes | |
ot_forge | create_ext, validate_ext | Crear nuevos paquetes de herramientas | |
ot_image (img) | load, ask, clip_ask, summary, … (9 herramientas) | Visión de imágenes vía un modelo dedicado | |
ot_llm | transform, transform_file | Transformaciones impulsadas por LLM | |
ot_secrets | set, encrypt, audit, rotate, … (8 herramientas) | Gestión de secretos cifrados | |
ot_servers | enable, disable, restart, status | Control de runtime de servidores proxy | |
ot_timer | start, stop, elapsed, list, clear | Temporizadores con nombre | |
package | pypi, npm, version, audit, models | [dev] | Versiones de paquetes y obsolescencia |
play_util | highlight_element, guide_user, … | [dev] | Anotaciones de navegador (Playwright) |
ripgrep | search, count, files, types | [dev] | Búsqueda rápida de código |
tavily | search, research, extract, search_batch, … | [util] | Búsqueda y extracción nativa de IA |
webfetch | fetch, fetch_batch | [dev] | Extracción de contenido web |
whiteboard (wb) | open, draw, layout, screenshot, … (22 herramientas) | [util] | Lienzo Excalidraw en vivo |
📖 Referencia completa de herramientas — cada firma, generada desde el código fuente
Proxy de Servidor MCP
Mantén los servidores MCP que ya usas. Envuélvelos en YAML y llámalos explícitamente, como espacios de nombres de Python, sin su impuesto de herramientas:
# .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")
Los servidores proxy se pueden habilitar, deshabilitar y reiniciar a mitad de conversación con ot_servers: sin reiniciar el cliente.
Secretos Que Puedes Confirmar
onetool init te guía a través de secretos cifrados: los valores en secrets.yaml están cifrados con age, la clave privada vive en tu llavero del sistema operativo y el descifrado ocurre de forma transparente al cargar.
# secrets.yaml - safe to inspect, safe to commit
brave_api_key: age1enc:YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNT...
Uso desde la CLI
Funciona como servidor MCP y como puente CLI directo al mismo proceso en ejecución: la configuración cargada, los secretos y las conexiones proxy permanecen activos. Útil para arneses de agentes, scripts y automatización:
# 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
Extensión
Coloca un archivo Python, obtén un paquete. Sin registro, sin configuración:
# .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)")
📖 Guía para crear herramientas
Documentación
- Inicio rápido - 30 segundos hasta la primera llamada de herramienta
- Instalación - Todas las plataformas
- Configuración - Esquema YAML
- Referencia de herramientas - Las 253 herramientas
- Seguridad - El modelo de seguridad en capas
- Extensión - Construye las tuyas
- Documentación de desarrollo - Documentación interna para desarrolladores
- Especificaciones - Índice de especificaciones OpenSpec
Referencias
- Ejecución de código con MCP - Anthropic Engineering
- Deterioro del contexto - Chroma Research
Telemetría
OneTool envía pings de inicio anónimos (tipo de evento, versión, SO). Sin datos personales. Para excluirse: export DO_NOT_TRACK=1 o establezca telemetry.enabled: false en onetool.yaml. Detalles
Problemas
Compruebe primero los problemas existentes:
- Examine el rastreador: github.com/beycom/onetool-mcp/issues
- Busque con sintaxis de GitHub:
is:issue repo:beycom/onetool-mcp <keyword>
Abra un nuevo problema: github.com/beycom/onetool-mcp/issues/new
Soporte
Si encuentra OneTool útil:
Licencia
GPLv3