OneTool MCP

🧿 Um MCP para desenvolvedores - Sem taxa de ferramentas, sem degradação de contexto. Mais de 100 ferramentas incluindo Brave, Gemini, Context7, Version Checker, Excel, File Ops, Database, Chrome DevTools.

Documentação

OneTool

🧿 One MCP para desenvolvedores - sem imposto de ferramentas, sem degradação de contexto.
Mais de 250 ferramentas que seu agente chama como código Python: busca, documentação, arquivos, bancos de dados, diagramas, visão, memória - além de um proxy para cada servidor MCP que você já usa.

PyPI License Python GitHub stars

Funciona com Claude Code, Cursor, Codex - qualquer cliente MCP


O Problema

Todo servidor MCP reenvia suas definições de ferramentas a cada requisição: 3K-30K tokens cada. Conecte 5 servidores e você queimou 55K tokens antes da conversa começar. Conecte 10+ e você está em 100K.

A matemática é brutal: Claude Opus 4.5 a $5/M tokens de entrada, 20 dias × 10 conversas × 10 mensagens × 3K tokens = $30/mês por servidor MCP - mesmo que você nunca use as ferramentas.

E ainda há a degradação de contexto - sua IA literalmente fica mais burra conforme você adiciona mais ferramentas (Chroma Research, 2025).

A Solução

OneTool é um servidor MCP que expõe ferramentas como uma API Python. Em vez de ler definições de ferramentas, seu agente escreve código:

__onetool brave.search(query="react 19 server components")

Configure um servidor MCP. Use ferramentas ilimitadas - ~2K tokens, não importa quantas você adicione.

"Agentes escalam melhor escrevendo código para chamar ferramentas em vez disso. Isso reduz o uso de tokens de 150.000 tokens para 2.000 tokens... uma economia de custo de 98,7%"

Anthropic Engineering

97% menos tokens. 30× menor custo. Sem degradação de contexto. (Medido - 47.660 → 1.131 tokens de entrada contra 18 servidores MCP.)

📖 Leia a história completa


Código É a Interface

Como as ferramentas são funções Python, seu agente faz coisas que o JSON de chamada de ferramenta não consegue: lote, encadeamento, loop, composição.

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

Três pacotes, uma requisição. Resultados intermediários fluem entre ferramentas como variáveis - o corpo da página nunca toca sua janela de contexto, e o resumo roda em um modelo barato em vez do seu agente de codificação caro.

Cada chamada é explícita e revisável - __onetool brave.search(query="...") mostra exatamente o que é executado. Sem adivinhação de seleção de ferramentas.

E o runtime é construído para como os agentes realmente digitam:

  • mem.search(q="auth") funciona - qualquer prefixo de parâmetro inequívoco resolve (q=query=)
  • wb.draw(...) funciona - pacotes têm aliases curtos (wb, ctx, img)
  • github.listRepositories() funciona em servidores proxy - snake/camel/Pascal todos resolvem
  • Uma ferramenta com erro de digitação recebe um "você quis dizer", um servidor desconectado nomeia o comando que o corrige
  • Resultados superdimensionados voltam como um identificador pesquisável em vez de inundar a janela

Instalação

Bootstrap (instala uv se ausente, instala OneTool, inicializa a configuração, imprime a configuração MCP):

curl -LsSf https://onetool.beycom.online/install.sh | sh          # macOS / Linux
irm https://onetool.beycom.online/install.ps1 | iex               # Windows (PowerShell)

Ou instale manualmente com uv:

uv tool install 'onetool-mcp[all]'   # everything
onetool init --config ~/.onetool

Depois imprima a configuração do cliente MCP pronta para colar, com caminhos absolutos resolvidos, e adicione-a ao seu cliente (claude-code, claude-desktop, cursor, ou vscode):

onetool init mcp-config --client claude-code   # or omit --client for all four

É isso. Todas as 250+ ferramentas funcionam imediatamente.

Verifique: onetool init validate --config ~/.onetool/onetool.yaml

Instale a skill ot-ref no seu agente com vercel-labs/skills - ela ensina as convenções de chamada e inclui um índice pesquisável de cada assinatura de ferramenta:

npx skills add https://github.com/beycom/onetool-mcp --skill ot-ref --agent claude

📖 Guia de instalação completo


O Que Está Incluído

Busca e documentaçãoBrave, Google-grounded e Tavily (cada um com modos de lote e resposta), documentação de bibliotecas Context7, fetch web com controles de extração
Arquivos e dadosOperações de arquivo com limites de caminho, controle completo de Excel, bancos de dados SQL, PDF/Word/PowerPoint → Markdown, ripgrep, versões de pacotes
Economia de contextoIdentificadores ctx para saídas grandes, leituras parciais de arquivo (toc/slice), visão de imagem em um modelo barato dedicado (zero tokens do host), delegação de LLM (economia de 10×)
Estado persistenteMemória mem com busca semântica e por palavras-chave, histórico e rollback; bases RAG knowledge com enriquecimento de IA; snapshots de projeto localhist com backup Git
VisualQuadro branco Excalidraw ao vivo com DSL compatível com Mermaid e layout automático offline, diagramas Mermaid/PlantUML/D2, modelos de arquitetura → SVG editável no draw.io
RuntimeProxy de servidor MCP com ativar/desativar/reiniciar em tempo de execução, CLI/API direta no processo em execução, skill de agente ot-ref, forja de ferramentas em conversa
ConfiançaSegredos criptografados com age protegidos pelo keychain do seu SO, validação AST, limites de caminho, sanitização de saída, estatísticas de runtime com economia estimada

Ferramentas

28 pacotes, 253 ferramentas prontas para uso (console em beta):

PacoteFerramentasExtraDescrição
archgenerate, validate, bundle_solution, …[dev]Modelos de arquitetura → SVG editável no draw.io
bravesearch, news, image, video, search_batch[util]Busca web Brave
chrome_utilhighlight_element, guide_user, …[dev]Anotações de navegador (Chrome DevTools)
console (beta)show, display, list, read, clearMensagens para o próximo aplicativo onetool-console
context7search, doc[dev]Documentação de bibliotecas
convertpdf, word, powerpoint, excel, auto[util]Documentos → Markdown
dbquery, schema, tables, sample[dev]Bancos de dados SQL
diagramrender_diagram, batch_render, get_template, …[dev]Mermaid / PlantUML / D2 via Kroki
excelread, write, formula, create_table, … (24 ferramentas)[util]Controle completo de Excel
fileread, write, edit, grep, slice, toc, … (16 ferramentas)[util]Operações de arquivo com limites de caminho
groundsearch, dev, docs, reddit, search_batch[util]Busca Google-grounded com fontes
knowledgesearch, ask, write, related, … (15 ferramentas)[util]Bases de conhecimento RAG (busca híbrida)
localhistsave, diff, restore, autosave_start, … (15 ferramentas)[dev]Snapshots de histórico local com backup Git
memwrite, search, ask, history, rollback, … (31 ferramentas)[util]Memória persistente com busca semântica
othelp, tools, stats, status, result, … (18 ferramentas)Introspecção e gerenciamento
ot_context (ctx)write, read, grep, slice, toc, ask, … (13 ferramentas)Armazenamento de contexto inteligente para saídas grandes
ot_forgecreate_ext, validate_extEstrutura para novos pacotes de ferramentas
ot_image (img)load, ask, clip_ask, summary, … (9 ferramentas)Visão de imagem via modelo dedicado
ot_llmtransform, transform_fileTransformações com LLM
ot_secretsset, encrypt, audit, rotate, … (8 ferramentas)Gerenciamento de segredos criptografados
ot_serversenable, disable, restart, statusControle de runtime de servidores proxy
ot_timerstart, stop, elapsed, list, clearTemporizadores nomeados
packagepypi, npm, version, audit, models[dev]Versões de pacotes e desatualização
play_utilhighlight_element, guide_user, …[dev]Anotações de navegador (Playwright)
ripgrepsearch, count, files, types[dev]Busca rápida de código
tavilysearch, research, extract, search_batch, …[util]Busca e extração nativas de IA
webfetchfetch, fetch_batch[dev]Extração de conteúdo web
whiteboard (wb)open, draw, layout, screenshot, … (22 ferramentas)[util]Canvas Excalidraw ao vivo

📖 Referência completa de ferramentas — cada assinatura, gerada a partir do código-fonte


Proxy de Servidor MCP

Mantenha os servidores MCP que você já usa. Envolva-os em YAML e chame-os explicitamente - como namespaces Python, sem o imposto de ferramentas deles:

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

Servidores proxy podem ser ativados, desativados e reiniciados no meio da conversa com ot_servers - sem reiniciar o cliente.

📖 Guia de configuração


Segredos Que Você Pode Versionar

onetool init orienta você pelos segredos criptografados: valores em secrets.yaml são criptografados com age, a chave privada vive no keychain do seu SO, e a descriptografia acontece de forma transparente no carregamento.

# secrets.yaml - safe to inspect, safe to commit
brave_api_key: age1enc:YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNT...

📖 Guia de segurança


Uso pela CLI

Funciona como um servidor MCP e como uma ponte CLI direta para o mesmo processo em execução - configuração carregada, segredos e conexões proxy permanecem ativos. Útil para harnesses de agentes, scripts e automação:

# 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

📖 Guia de uso direto


Extensão

Coloque um arquivo Python, ganhe um pacote. Sem registro, sem configuração:

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

📖 Guia de criação de ferramentas


Documentação


Referências


Telemetria

O OneTool envia pings anônimos de inicialização (tipo de evento, versão, sistema operacional). Nenhum dado pessoal. Para desativar: export DO_NOT_TRACK=1 ou defina telemetry.enabled: false em onetool.yaml. Detalhes


Problemas

Verifique primeiro se já existem problemas:

Abra um novo problema: github.com/beycom/onetool-mcp/issues/new


Suporte

Se você achar o OneTool útil:

Ko-fi


Licença

GPLv3