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

OneTool

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

PyPI License Python GitHub stars

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

Ingeniería de Anthropic

97% menos tokens. 30× menor costo. Sin deterioro del contexto. (Medido - 47,660 → 1,131 tokens de entrada contra 18 servidores MCP.)

📖 Lee la historia completa


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ónBú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 datosOperaciones 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 contextoIdentificadores 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 persistenteMemoria 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
VisualPizarra 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
RuntimeProxy 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
ConfianzaSecretos 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):

PaqueteHerramientasExtraDescripción
archgenerate, validate, bundle_solution, …[dev]Modelos de arquitectura → SVG editable con draw.io
bravesearch, news, image, video, search_batch[util]Búsqueda web Brave
chrome_utilhighlight_element, guide_user, …[dev]Anotaciones de navegador (Chrome DevTools)
console (beta)show, display, list, read, clearMensajes para la próxima aplicación onetool-console
context7search, doc[dev]Documentación de bibliotecas
convertpdf, word, powerpoint, excel, auto[util]Documentos → Markdown
dbquery, schema, tables, sample[dev]Bases de datos SQL
diagramrender_diagram, batch_render, get_template, …[dev]Mermaid / PlantUML / D2 vía Kroki
excelread, write, formula, create_table, … (24 herramientas)[util]Control completo de Excel
fileread, write, edit, grep, slice, toc, … (16 herramientas)[util]Operaciones de archivos con límites de ruta
groundsearch, dev, docs, reddit, search_batch[util]Búsqueda con base en Google con fuentes
knowledgesearch, ask, write, related, … (15 herramientas)[util]Bases de conocimiento RAG (búsqueda híbrida)
localhistsave, diff, restore, autosave_start, … (15 herramientas)[dev]Instantáneas de historial local respaldadas por Git
memwrite, search, ask, history, rollback, … (31 herramientas)[util]Memoria persistente con búsqueda semántica
othelp, 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_forgecreate_ext, validate_extCrear 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_llmtransform, transform_fileTransformaciones impulsadas por LLM
ot_secretsset, encrypt, audit, rotate, … (8 herramientas)Gestión de secretos cifrados
ot_serversenable, disable, restart, statusControl de runtime de servidores proxy
ot_timerstart, stop, elapsed, list, clearTemporizadores con nombre
packagepypi, npm, version, audit, models[dev]Versiones de paquetes y obsolescencia
play_utilhighlight_element, guide_user, …[dev]Anotaciones de navegador (Playwright)
ripgrepsearch, count, files, types[dev]Búsqueda rápida de código
tavilysearch, research, extract, search_batch, …[util]Búsqueda y extracción nativa de IA
webfetchfetch, 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.

📖 Guía de configuración


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

📖 Guía de seguridad


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

📖 Guía de uso directo


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


Referencias


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:

Abra un nuevo problema: github.com/beycom/onetool-mcp/issues/new


Soporte

Si encuentra OneTool útil:

Ko-fi


Licencia

GPLv3