Teukhos
Gere servidores MCP prontos para produção a partir de um único arquivo YAML.
Documentação
Teukhos

Você descreve a ferramenta. Teukhos a forja como MCP.
Gere servidores MCP prontos para produção a partir de um único arquivo YAML. Sem necessidade de programação em Python.
Status: Beta — Os recursos principais estão estáveis e testados. A API pode mudar antes da v1.0.
pip install teukhos
teukhos serve git-tools.yaml
É isso. Suas ferramentas de CLI agora podem ser chamadas por qualquer agente de IA.
O Problema
O ecossistema MCP tem uma lacuna crítica:
| O que existe | O que falta |
|---|---|
| FastMCP puro — escreva em Python | Config-como-código → servidor MCP em execução |
any-cli-mcp-server — extrai --help | Mapeamento estruturado e tipado de CLI → ferramenta |
| Gateways empresariais (Bifrost, MCPX) | Leve, de propriedade do desenvolvedor, código aberto |
| Construtores visuais (Langflow, n8n) | Runtime nativo para CI/CD, amigável a GitOps |
Teukhos preenche essa lacuna. Defina suas ferramentas em YAML. Execute um comando. Pronto.
Início Rápido em 30 Segundos
Instalação:
pip install teukhos
# or: uvx teukhos
Crie teukhos.yaml:
forge:
name: "my-tools"
tools:
- name: git_log
description: "Show recent git commits"
adapter: cli
cli:
command: git
subcommand: [log, --oneline]
args:
- name: count
type: integer
flag: "-n"
default: 10
output:
type: stdout
Registre com seu cliente de IA:
teukhos install teukhos.yaml # auto-detect & prompt
teukhos install teukhos.yaml --client cursor # specific client
teukhos install teukhos.yaml --client claude-code --project # project-level
teukhos install teukhos.yaml --dest .github/mcp.json # any JSON file
Pergunte ao Claude: "Mostre-me os últimos 5 commits" — ele usará a ferramenta.
Como Funciona
Referência da CLI
teukhos serve [config] Start the MCP server
teukhos validate [config] Validate config, exit 0/1 — use in CI
teukhos install [config] Register with MCP client(s)
teukhos uninstall <server-name> Remove from MCP client(s)
teukhos clients List supported clients & detection status
teukhos wait-ready Poll /health until ready — use in CI
teukhos version Print version
teukhos discover <binary> Auto-generate config from --help
Opções para serve:
--transport -t Override transport: stdio | http (default: from config)
--port -p Override HTTP port (default: 8765)
Opções para install:
--client -c Target a specific client by slug (e.g., cursor, claude-code)
--all Install for all detected clients
--project Use project-level config (e.g., .cursor/mcp.json in cwd)
--url Remote server URL — enables HTTP mode
--key API key for HTTP mode (default: "env:TEUKHOS_API_KEY"; --key "" for a server without auth)
--dest Write to an arbitrary JSON config file (bypasses client detection)
--config-key JSON key for server entries: "mcpServers" (default) or "servers"
Opções para uninstall:
--client -c Target a specific client by slug
--all Remove from all detected clients
--project Target project-level config
Opções para discover:
--output -o Output file path (default: <binary-name>.yaml)
--dry-run Print generated YAML to stdout instead of writing a file
--max-depth -d Max recursion depth for subcommands (default: 2)
--timeout -t Timeout in seconds for each --help call during discovery [default: 15]
--exec-timeout -e Timeout in seconds for tool execution; sets timeout_seconds in generated YAML
--filter -f Only discover subcommands under this prefix (e.g. "vm" for "az vm")
Nomes de arquivos de configuração: Teukhos procura por teukhos.yaml por padrão. O legado mcp-forge.yaml é aceito automaticamente com um aviso de depreciação.
Clientes Suportados
Teukhos pode registrar-se com estes clientes de IA compatíveis com MCP:
| Cliente | Slug | Escopo do Projeto | Formato de Configuração |
|---|---|---|---|
| Claude Desktop | claude-desktop | — | JSON (somente stdio; sem --url) |
| Claude Code | claude-code | Sim | JSON |
| Cursor | cursor | Sim | JSON |
| GitHub Copilot / VS Code | github-copilot | Sim | JSON |
| Gemini CLI | gemini-cli | Sim | JSON |
| Codex | codex | Sim | TOML |
| Windsurf | windsurf | Sim | JSON |
| Cline | cline | — | JSON |
| Roo Code | roo-code | Sim | JSON |
| Continue.dev | continue | Sim | JSON |
| Kiro | kiro | Sim | JSON |
| Augment Code | augment | — | JSON |
| CodeBuddy | codebuddy | Sim | JSON |
| OpenCode | opencode | Sim | JSON (chave mcp) |
| Trae | trae | Sim | JSON |
teukhos clients # see which are detected on your system
teukhos install --all # register with all detected clients
O arquivo de configuração do Claude Desktop aceita apenas servidores locais (stdio), então install --url o recusa; um servidor HTTPS público pode ser adicionado no Claude Desktop em Customizar > Conectores. As entradas do OpenCode usam seu próprio formato ("mcp", type: local/remote, {env:VAR} nos cabeçalhos).
serve vs install — Quando Usar Cada Um
teukhos install é o comando principal para a maioria dos usuários. Ele registra sua configuração com um cliente de IA (Cursor, Claude Code, etc.). O cliente então inicia teukhos serve automaticamente via stdio quando precisar de suas ferramentas. Você não executa teukhos serve manualmente.
teukhos serve é usado em dois cenários:
- Teste/depuração — verifique se sua configuração YAML inicia sem erros antes de registrá-la
- Modo servidor HTTP — execute um servidor MCP persistente acessível pela rede para clientes remotos
# Most users: just install, the client handles the rest
teukhos install git-tools.yaml --client cursor
# Testing: verify config works
teukhos serve git-tools.yaml
# HTTP server: run persistently for remote access
teukhos serve git-tools.yaml --transport http --port 8765
Instalação em Caminhos Personalizados (--dest)
Use --dest para gravar a configuração MCP em qualquer arquivo JSON, ignorando completamente a detecção de cliente. Isso é útil para .github/mcp.json, configurações personalizadas ou clientes que Teukhos ainda não conhece.
# Write to .github/mcp.json (uses "mcpServers" key by default)
teukhos install git-tools.yaml --dest .github/mcp.json
# Use "servers" key (GitHub Copilot / VS Code format)
teukhos install git-tools.yaml --dest .vscode/mcp.json --config-key servers
# HTTP mode to custom path
teukhos install --dest /path/to/config.json --url http://host:8765/mcp
# Absolute path
teukhos install git-tools.yaml --dest C:\projects\myapp\.cursor\mcp.json
A opção --config-key controla a chave JSON usada para entradas de servidor:
mcpServers(padrão) — usado por Claude Desktop, Claude Code, Cursor e a maioria dos clientesservers— usado por GitHub Copilot / VS Code
Executando Vários Servidores
Você pode executar vários servidores Teukhos em paralelo na mesma máquina. Cada configuração recebe um nome de servidor exclusivo derivado de seu forge.name, para que não se sobrescrevam nas configurações do cliente.
stdio (sem conflitos — cada um é um subprocesso separado iniciado pelo cliente):
teukhos install git-tools.yaml --client cursor # registers teukhos-git-tools
teukhos install dev-tools.yaml --client cursor # registers teukhos-dev-tools
# Cursor now has two independent MCP servers, each spawned as its own process
A configuração do cliente conterá entradas separadas:
{
"mcpServers": {
"teukhos-git-tools": {
"command": "teukhos",
"args": ["serve", "C:/path/to/git-tools.yaml"]
},
"teukhos-dev-tools": {
"command": "teukhos",
"args": ["serve", "C:/path/to/dev-tools.yaml"]
}
}
}
HTTP (use portas diferentes):
teukhos serve git-tools.yaml --transport http --port 8765 &
teukhos serve dev-tools.yaml --transport http --port 8766 &
teukhos serve media-tools.yaml --transport http --port 8767 &
# Connect clients to each
teukhos install --client cursor --url http://localhost:8765/mcp
teukhos install --client cursor --url http://localhost:8766/mcp
Referência Completa de Configuração
forge:
name: "my-toolset" # MCP server identity
version: "1.0.0"
description: "What this server does"
server:
transport: stdio # stdio | http
host: "127.0.0.1" # use 0.0.0.0 for remote (add auth!)
port: 8765
cors_origins: ["http://localhost:6274"] # browser origins allowed over HTTP (default: none); "*" only with auth
auth:
mode: none # none | api_key
api_keys:
- "env:TEUKHOS_API_KEY" # reads from environment variable (recommended)
- "env:MY_CUSTOM_KEY" # any env var name with env: prefix
- "literal-key-here" # or use a literal string directly
tools:
- name: tool_name # snake_case — used as MCP tool ID
description: "What the LLM reads to decide when to call this tool"
adapter: cli # cli is the only adapter in v0.2
cli:
command: "mybinary" # must be on PATH or absolute path
subcommand: [] # e.g. ["log", "--oneline"] for git
timeout_seconds: 30
working_dir: null # defaults to the server's cwd (chosen by the MCP client); ~ is expanded
env: {} # extra env vars, added to the server's environment
max_output_bytes: 1000000 # stdout/stderr beyond this are truncated (default 1 MB)
args:
- name: arg_name
type: string # string | integer | number | boolean
description: "Shown to the LLM"
required: false
flag: "--flag" # CLI flag: -f or --flag
positional: false # true = append at end of command
default: null
enum: [] # allowed values: shown to the LLM and enforced
secret: false # with a default: hidden from the LLM and redacted from output
output:
type: stdout # stdout | stderr | json_field | exit_code
field: null # for json_field: dot-notation path e.g. "data.items"
exit_codes: # for exit_code type: map codes to messages
0: "Success"
1: "Not found"
Chaves desconhecidas são rejeitadas, então um erro de digitação como secert: true falha no teukhos validate em vez de ser silenciosamente ignorado.
Modelo de Segurança
Um teukhos.yaml é configuração executável: ele decide quais binários são executados. Leia uma configuração baixada antes de install ou serve. Os valores dos argumentos vêm do LLM e são tratados como não confiáveis:
- Sem shell. Os comandos são executados como uma lista de argumentos, então
;,|e$(...)são passados literalmente. - Sem injeção de opção
-. Um valor posicional ou sem flag que começa com-é rejeitado, então o LLM não pode transformarpathem--output=/etc/x. Valores de enumeração e o padrão configurado são isentos. Passe entrada com prefixo de traço através de umflag:. Ferramentas do Windows que aceitam opções/X(robocopy, findstr, reg) não são cobertas; forneça a elasenumou argumentos vinculados a flags. enumé aplicado. Os valores permitidos são publicados no esquema da ferramenta e qualquer outra coisa é recusada antes da execução do comando. Coloque entre aspas palavras YAML como"on"/"yes", que de outra forma seriam booleanos.- Interpretadores precisam de seu próprio modo seguro. Um argumento de forma livre para
sqlite3,psql,python -counode -eé código.examples/database-tools.yamlexecutasqlite3 -safe -readonlye fixa comandos de ponto comenum;psqlnão tem modo seguro, então apenas consultas fixas são expostas. - Padrões de
secretpermanecem com o operador. Um argumento secreto comdefaultnão é oferecido ao LLM, e um padrão de string é substituído por[REDACTED]na saída da ferramenta. A redação corresponde apenas ao valor literal, então prefiracli.envpara credenciais reais. - Erros são retornados como estão. Em uma saída não zero, o stderr (ou stdout) da ferramenta volta para o LLM.
json_field/stderr/exit_codeapenas moldam um resultado bem-sucedido; não confie neles para reter campos. - A saída é limitada a
max_output_bytespor fluxo.json_fieldprecisa do JSON inteiro, então aumente o limite para ferramentas com saída JSON grande. - Arquivos batch do Windows. Um nome simples como
npxouazque não tem.exerecorre ao seu shim.cmd/.bat. Comocmd.exereanalisa argumentos de batch, valores contendo" % ! ^ & | < > ( ) , ; =ou quebras de linha são rejeitados para essas ferramentas; apontecommandpara o.exereal (por exemplo,nodemais o caminho do script) se precisar deles. - Pesquisa de comandos no Windows. Nomes de comandos simples nunca são resolvidos a partir do diretório atual do servidor. Os processos das ferramentas herdam isso (
NoDefaultCurrentDirectoryInExePath=1), então os arquivos batch de uma ferramenta devem chamar auxiliares pelo caminho ("%~dp0helper.cmd"). Ferramentas MSYS/Cygwin recebemnoglob, então*as alcança literalmente.
Exemplos de Configuração
Ferramentas Git
forge:
name: "git-tools"
tools:
- name: git_log
description: "Show recent git commits"
adapter: cli
cli:
command: git
subcommand: [log, --oneline]
args:
- name: count
type: integer
flag: "-n"
default: 10
output:
type: stdout
- name: git_status
description: "Show working tree status"
adapter: cli
cli:
command: git
subcommand: [status, --short]
output:
type: stdout
- name: git_diff
description: "Show diff of current changes"
adapter: cli
cli:
command: git
subcommand: [diff]
args:
- name: staged
type: boolean
description: "Show staged changes only"
flag: "--staged"
output:
type: stdout
Ferramentas de Sistema (Multiplataforma)
forge:
name: "sysops"
tools:
- name: disk_usage
description: "Show disk usage for a path"
adapter: cli
cli:
command: python
subcommand:
- "-c"
- "import shutil,sys,os; p=sys.argv[1] if len(sys.argv)>1 else '.'; p=os.path.abspath(p); u=shutil.disk_usage(p); print(f'Total: {u.total/1024/1024:.0f} MB Used: {u.used/1024/1024:.0f} MB Free: {u.free/1024/1024:.0f} MB')"
args:
- name: path
type: string
positional: true
default: "."
output:
type: stdout
- name: ping_host
description: "Check if a host is reachable"
adapter: cli
cli:
command: python
subcommand:
- "-c"
- "import subprocess,platform,sys; h=sys.argv[1]; flag='-n' if platform.system()=='Windows' else '-c'; r=subprocess.run(['ping',flag,'3',h],capture_output=True,text=True); print(r.stdout); exit(r.returncode)"
timeout_seconds: 15
args:
- name: host
type: string
required: true
positional: true
output:
type: exit_code
exit_codes:
0: "Host is reachable"
1: "Host is unreachable"
Saída JSON
- name: get_video_info
description: "Get video metadata as JSON"
adapter: cli
cli:
command: ffprobe
subcommand: ["-v", "quiet", "-print_format", "json", "-show_format"]
args:
- name: input_file
type: string
required: true
positional: true
output:
type: json_field
field: "format.duration" # extract a specific field
Servidor Remoto / Transporte HTTP
Execute Teukhos como um servidor acessível pela rede:
# remote-server.yaml
server:
transport: http
host: "0.0.0.0"
port: 8765
auth:
mode: api_key
api_keys:
- "env:TEUKHOS_API_KEY"
# Start the server
export TEUKHOS_API_KEY="your-secret-key"
teukhos serve remote-server.yaml
# Connect a client (from any machine)
teukhos install --client cursor --url http://server-ip:8765/mcp
Resolução de Chave de API
Chaves na configuração usam a convenção de prefixo env::
| Valor de Configuração | Resolvido Para |
|---|---|
"env:TEUKHOS_API_KEY" | Valor da variável de ambiente $TEUKHOS_API_KEY |
"env:MY_CUSTOM_KEY" | Valor da variável de ambiente $MY_CUSTOM_KEY |
"my-literal-key" | Usado como está (não recomendado para produção) |
Com mode: api_key, todo caminho HTTP exceto /health precisa de Authorization: Bearer <key>. Se nenhuma das chaves configuradas resolver (por exemplo, a variável de ambiente não está definida), serve recusa iniciar em vez de executar sem autenticação.
Acesso pelo Navegador (CORS e Origem)
Requisições que carregam um cabeçalho Origin (ou seja, de um navegador) são rejeitadas com 403, a menos que a origem esteja listada em server.cors_origins. Isso bloqueia rebinding de DNS e outros sites chamando um servidor local; clientes MCP que não são navegadores não enviam Origin e não são afetados. "*" permite todas as origens e desativa essa verificação, então precisa de autenticação api_key: sobre HTTP com auth.mode: none, serve recusa iniciar.
Implantação Atrás de um Proxy Reverso
Para produção, execute atrás de nginx ou Caddy para terminação TLS:
# nginx example
server {
listen 443 ssl;
server_name mcp.example.com;
ssl_certificate /etc/letsencrypt/live/mcp.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mcp.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8765;
proxy_set_header Host $host;
}
}
Integração CI/CD
GitHub Actions
- name: Install Teukhos
run: pip install teukhos
- name: Validate config
run: teukhos validate teukhos.yaml
- name: Start MCP server
run: |
teukhos serve teukhos.yaml --transport http --port 8765 &
teukhos wait-ready --timeout 30
- name: Run agent tasks
run: |
claude --mcp http://localhost:8765/mcp \
"Analyse the git log and summarise what changed this week"
- name: Teardown
if: always()
run: pkill -f "teukhos serve" || true
Docker
FROM python:3.12-slim
RUN pip install teukhos
# teukhos.yaml needs server.host: "0.0.0.0" to be reachable through -p, and api_key auth
COPY teukhos.yaml .
EXPOSE 8765
HEALTHCHECK CMD teukhos wait-ready --timeout 5
CMD ["teukhos", "serve", "--transport", "http"]
Execute com a chave definida, por exemplo docker run -e TEUKHOS_API_KEY=... -p 8765:8765 my-mcp-server; sem ela, o servidor recusa iniciar.
Configuração Manual do Cliente
Se preferir configuração manual, adicione à configuração MCP do seu cliente:
stdio (local):
{
"mcpServers": {
"teukhos-my-tools": {
"command": "teukhos",
"args": ["serve", "/path/to/teukhos.yaml"]
}
}
}
HTTP (remoto):
{
"mcpServers": {
"teukhos-remote": {
"url": "http://server:8765/mcp",
"headers": {
"Authorization": "Bearer ${TEUKHOS_API_KEY}"
}
}
}
}
Ou use o comando de instalação: teukhos install teukhos.yaml --client cursor
Receitas
Exemplos prontos para copiar e colar para tarefas comuns. Ajuste caminhos e nomes conforme sua configuração.
Instalar e Registrar
# Install Teukhos
pip install teukhos
# Register git-tools with Cursor (global)
teukhos install git-tools.yaml --client cursor
# Register git-tools with Claude Code (project-level, in current folder)
teukhos install git-tools.yaml --client claude-code --project
# Register with Claude Desktop
teukhos install git-tools.yaml --client claude-desktop
# Register with GitHub Copilot in VS Code (project-level)
teukhos install git-tools.yaml --client github-copilot --project
# Register with Gemini CLI
teukhos install git-tools.yaml --client gemini-cli
# Register with Windsurf
teukhos install git-tools.yaml --client windsurf
# Register with all detected clients at once
teukhos install git-tools.yaml --all
# Auto-detect clients and pick interactively
teukhos install git-tools.yaml
Destino Personalizado (--dest)
# Write to .github/mcp.json for GitHub Copilot in a repo
teukhos install git-tools.yaml --dest .github/mcp.json --config-key servers
# Write to .vscode/mcp.json with "servers" key
teukhos install git-tools.yaml --dest .vscode/mcp.json --config-key servers
# Write to .cursor/mcp.json in another project
teukhos install git-tools.yaml --dest /home/user/myproject/.cursor/mcp.json
# Write to any path with default "mcpServers" key
teukhos install git-tools.yaml --dest /etc/mcp/shared-tools.json
Vários Servidores em Uma Máquina
# Register two different configs with the same client (stdio, no conflicts)
teukhos install git-tools.yaml --client cursor
teukhos install dev-tools.yaml --client cursor
# Run two HTTP servers on different ports
teukhos serve git-tools.yaml --transport http --port 8765 &
teukhos serve dev-tools.yaml --transport http --port 8766 &
# Connect a client to both remote servers
teukhos install --client cursor --url http://localhost:8765/mcp
teukhos install --client cursor --url http://localhost:8766/mcp
Servidor Remoto / HTTP
# Start an HTTP server on localhost (for testing)
teukhos serve git-tools.yaml --transport http
# Start on all interfaces (for network access; set the key first, serve refuses to start without it)
export TEUKHOS_API_KEY="my-secret-key-abc123"
teukhos serve remote-server.yaml
# Connect a client to a remote server
teukhos install --client claude-code --url http://192.168.1.50:8765/mcp
# Connect with a custom API key
teukhos install --client cursor --url http://myserver:8765/mcp --key "env:MY_SERVER_KEY"
# Connect with a literal key (not recommended for production)
teukhos install --client cursor --url http://myserver:8765/mcp --key "s3cret-t0ken"
# Write remote config to a custom file
teukhos install --dest .vscode/mcp.json --config-key servers --url http://myserver:8765/mcp
Validar e Testar
# Validate a config (exits 0 if valid, 1 if not — good for CI)
teukhos validate git-tools.yaml
# Test-run a server locally (Ctrl+C to stop)
teukhos serve git-tools.yaml
# Start HTTP server and wait until ready (CI pipelines)
teukhos serve git-tools.yaml --transport http --port 8765 &
teukhos wait-ready --port 8765 --timeout 30
Desinstalar
# Remove from a specific client
teukhos uninstall teukhos-git-tools --client cursor
# Remove from a specific client (project-level config)
teukhos uninstall teukhos-git-tools --client claude-code --project
# Remove from all detected clients
teukhos uninstall teukhos-git-tools --all
Descobrir Ferramentas de um Binário
# Auto-generate a config (writes <binary-name>.yaml by default, e.g., my-tool.yaml)
teukhos discover my-tool.exe
# Preview without writing a file
teukhos discover my-tool --dry-run
# Scope to a subtree for large CLIs (e.g., Azure CLI)
teukhos discover az.cmd --filter vm
# Limit recursion depth
teukhos discover az.cmd --filter vm --max-depth 1
# Discover, then install in one flow
teukhos discover my-tool -o my-tool.yaml
teukhos install my-tool.yaml --client claude-desktop
Listar e Descobrir
# See all supported clients and which are installed on your system
teukhos clients
# Print Teukhos version
teukhos version
# Enable shell tab-completion (PowerShell)
teukhos --show-completion >> $PROFILE
# Enable shell tab-completion (bash)
teukhos --show-completion >> ~/.bashrc
# Enable shell tab-completion (zsh)
teukhos --show-completion >> ~/.zshrc
Docker
# Build
docker build -t my-mcp-server .
# Run with API key
docker run -e TEUKHOS_API_KEY=my-secret -p 8765:8765 my-mcp-server
# Connect a local client to the container
teukhos install --client cursor --url http://localhost:8765/mcp
Roteiro
v0.3 — Atual
- Instalador multi-cliente: 15 clientes MCP suportados
- Escopo de instalação em nível de projeto e global
teukhos installcom detecção automática,--client,--all,--project,--urlteukhos install --destpara gravar em qualquer arquivo de configuração JSON arbitrárioteukhos install --config-keypara escolher formato JSONmcpServersouserversteukhos uninstallpara remover registrosteukhos clientspara listar clientes suportados- Transporte HTTP Streamable com banner de inicialização
- Resolução de chave de API com prefixo
env: - Configuração CORS para transporte HTTP
- Middleware completo de autenticação (token Bearer)
- Exemplos de configuração multiplataforma (Windows, Linux, macOS)
- Ferramenta de verificação de saúde ping em todos os servidores de exemplo
- Suíte abrangente de testes de integração (62 testes em 20 servidores)
teukhos discover <binary>— gera configuração automaticamente a partir de--helpcom opções--max-depth,--filtere--timeout
v0.4 — Pronto para Produção
- Adaptador
rest(envolva qualquer endpoint HTTP) - Adaptador
shell(scripts bash/pwsh inline) - Recarga a quente — salve o YAML, as ferramentas atualizam sem reiniciar
- Suporte a saída em streaming
- Arquivo de bloqueio (
teukhos.lock) para implantações reproduzíveis
v0.5 — A Plataforma
- Autenticação OAuth 2.1 + JWT
- Suporte a mTLS para implantações empresariais
- RBAC em nível de ferramenta
- Log de auditoria somente anexação
- Interface web incorporada — vidro escuro, visualização de chamadas de ferramentas em tempo real
- Sincronização bidirecional YAML para editor visual
- Adaptador de importação automática OpenAPI
- Composição de ferramentas / mini pipelines
- Métricas Prometheus em
/metrics - Registro público:
teukhos install registry://community/git-tools
Por que Teukhos?
Você fornece a especificação MCP. Teukhos faz a forja.
Contribuindo
git clone https://github.com/MihaiCiprianChezan/teukhos
cd teukhos
python -m venv .venv
Ative o ambiente virtual:
# Windows
.venv\Scripts\activate
# Linux / macOS
source .venv/bin/activate
Instale em modo de desenvolvimento e execute os testes:
pip install -e ".[dev]"
# Run all tests (stdio + cross-transport, skips HTTP subprocess tests if no servers running)
pytest tests/ -v
# Run only stdio server tests (fast, no external dependencies)
pytest tests/test_all_servers.py::TestStdioServers -v
# Run only unit tests
pytest tests/ -v -k "not all_servers"
A suíte de testes cobre:
- Testes unitários — carregamento de configuração, adaptador CLI, mapeamento de saída, autenticação, instaladores
- Testes de protocolo MCP — round-trips completos JSON-RPC via Cliente FastMCP
- Testes de integração — todos os 11 exemplos de configuração: ping, listagem de ferramentas, validação de esquema, concorrência
Pull requests são bem-vindos.
Contribuidores
Licença
MIT — veja LICENSE.
Veja CHANGELOG para o histórico de versões.
Construído por Mihai Ciprian Chezan