mctop
Um cliente de terminal para servidores MCP: explore, chame e teste em CI qualquer servidor a partir do seu shell.
Documentação
mctop
Um cliente de terminal para servidores MCP. Conecte-se a qualquer servidor, navegue por suas ferramentas, recursos e prompts, chame-os e veja o resultado, sem sair do shell. Depois, valide o contrato do servidor na CI para que uma ferramenta renomeada ou um esquema alterado falhe no build em vez de quebrar um agente em produção.
Pense em curl e k9s, mas para o Model Context Protocol.

O que ele faz
- Explore um servidor interativamente: navegue por ferramentas, recursos e prompts, preencha os argumentos de uma ferramenta em um formulário guiado por esquema e leia o resultado.
- Automatize sem interface:
mctop lspara listar,mctop callpara chamadas únicas. - Teste na CI:
mctop test spec.yamlexecuta um contrato e sai com código não zero quando ele é quebrado.
Instalação
curl -fsSL https://mctop.org/install | sh
Ou com Homebrew, ou com a toolchain Go:
brew install mctop-org/tap/mctop
go install github.com/mctop-org/mctop@latest
Depois, mctop upgrade mantém tudo atualizado, independentemente de como você instalou.
Uso
mctop <target> open the interactive client against a server
mctop ls <target> list tools, resources, and prompts
mctop call <target> <tool> call one tool and print the result
mctop login <url> log in to an OAuth-protected server
mctop test <spec.yaml> run a contract, exit 0 on pass, 1 on fail
mctop record <target> browse a server and save the calls as a spec
mctop upgrade update to the latest release
Um alvo é ou um comando para executar ("uvx mcp-server-time") ou uma
URL http(s)://. Para um servidor mais antigo que precisa do transporte SSE legado, adicione
--sse.
mctop call "uvx mcp-server-time" get_current_time timezone=UTC
Os argumentos são pares key=value (valores que parecem JSON, como números,
booleanos, arrays e objetos, são tipados; qualquer outra coisa é uma string), ou um
único objeto --json '{...}'.
Modo interativo
Execute mctop <target> sem subcomando para abrir o cliente em tela cheia: navegue por
ferramentas, recursos e prompts; pressione enter em uma ferramenta para preencher seus argumentos em um
formulário guiado por esquema e executá-la; leia o resultado e repita.
↑↓ move enter open / search tab switch section T trace ? keys q quit
Os resultados são exibidos como campos e tabelas legíveis em vez de JSON bruto. Quando o
resultado é uma lista de registros, ↑/↓ selecionam uma linha e enter a expande em uma
visualização completa, sem truncamento; esc recolhe de volta para a lista. Pressione t para o JSON
bruto, y para copiar, r para reexecutar, e para editar os argumentos e esc (ou ←)
para voltar.
Pressione T para ver o protocolo bruto: cada frame JSON-RPC que passou pela
conexão, cada um marcado com sua direção, método e hora, acima do seu JSON. Parece
o painel de rede do Inspector da web, sem sair do terminal, para que você possa ver
exatamente o que um servidor enviou de volta quando uma chamada surpreende você.
Movimentos Vim (h/j/k/l, g/G) estão ativados por padrão; V alterna entre eles e a
escolha é lembrada. As setas do teclado sempre funcionam de qualquer forma. Pressione ? para a
lista completa de teclas.
Autenticação
Para servidores protegidos por OAuth, faça login uma vez e o mctop cuida do token depois disso:
mctop login https://api.example.com/mcp # opens the browser, caches the token
mctop ls https://api.example.com/mcp # uses it automatically
mctop logout https://api.example.com/mcp # forgets it
O token é armazenado em cache por host e renovado conforme necessário, então você faz login uma vez por
servidor, não por comando. Para servidores que aceitam um token estático, passe-o
com -H (repetível):
mctop ls https://api.example.com/mcp -H "Authorization: Bearer $TOKEN"
Testes na CI
Uma especificação descreve o que um servidor deve expor e como suas chamadas devem se comportar. mctop test sai com código não zero quando o contrato é quebrado, então ele bloqueia um build.
server:
url: "https://api.example.com/mcp"
# sse: true # for a legacy HTTP+SSE server
headers:
Authorization: "Bearer ${TOKEN}" # expanded from the environment
expect:
tools: [search, fetch]
calls:
- tool: search
args: { query: "hello" }
assert:
not_error: true
contains: "results"
mctop test spec.yaml --report json
Você não precisa escrever uma especificação manualmente: mctop record <target> -o spec.yaml
abre o cliente interativo e salva cada chamada de ferramenta que você fizer como um passo da especificação,
validando o status de erro observado. Cabeçalhos passados com -H são gravados como
referências de ambiente $NAME, então o arquivo é seguro para commit. Aprimore os
passos gravados com asserções contains onde isso fortalecer o contrato.
Exemplos
O diretório examples/ tem especificações executáveis e um pequeno servidor de demonstração para você
apontar o mctop:
go run ./examples/demoserver
mctop ls http://localhost:8080/mcp
Licença
MIT, veja LICENSE.