Teukhos

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

Documentação

Teukhos

CI PyPI Python License


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 existeO que falta
FastMCP puro — escreva em PythonConfig-como-código → servidor MCP em execução
any-cli-mcp-server — extrai --helpMapeamento 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

How Teukhos Works


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:

ClienteSlugEscopo do ProjetoFormato de Configuração
Claude Desktopclaude-desktop—JSON (somente stdio; sem --url)
Claude Codeclaude-codeSimJSON
CursorcursorSimJSON
GitHub Copilot / VS Codegithub-copilotSimJSON
Gemini CLIgemini-cliSimJSON
CodexcodexSimTOML
WindsurfwindsurfSimJSON
Clinecline—JSON
Roo Coderoo-codeSimJSON
Continue.devcontinueSimJSON
KirokiroSimJSON
Augment Codeaugment—JSON
CodeBuddycodebuddySimJSON
OpenCodeopencodeSimJSON (chave mcp)
TraetraeSimJSON
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:

  1. Teste/depuração — verifique se sua configuração YAML inicia sem erros antes de registrá-la
  2. 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 clientes
  • servers — 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 transformar path em --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 um flag:. Ferramentas do Windows que aceitam opções /X (robocopy, findstr, reg) não são cobertas; forneça a elas enum ou 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 -c ou node -e é código. examples/database-tools.yaml executa sqlite3 -safe -readonly e fixa comandos de ponto com enum; psql não tem modo seguro, então apenas consultas fixas são expostas.
  • Padrões de secret permanecem com o operador. Um argumento secreto com default nã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 prefira cli.env para 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_code apenas moldam um resultado bem-sucedido; não confie neles para reter campos.
  • A saída é limitada a max_output_bytes por fluxo. json_field precisa do JSON inteiro, então aumente o limite para ferramentas com saída JSON grande.
  • Arquivos batch do Windows. Um nome simples como npx ou az que não tem .exe recorre ao seu shim .cmd/.bat. Como cmd.exe reanalisa argumentos de batch, valores contendo " % ! ^ & | < > ( ) , ; = ou quebras de linha são rejeitados para essas ferramentas; aponte command para o .exe real (por exemplo, node mais 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 recebem noglob, 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çãoResolvido 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 install com detecção automática, --client, --all, --project, --url
  • teukhos install --dest para gravar em qualquer arquivo de configuração JSON arbitrário
  • teukhos install --config-key para escolher formato JSON mcpServers ou servers
  • teukhos uninstall para remover registros
  • teukhos clients para 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 --help com opções --max-depth, --filter e --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

Contributors


Licença

MIT — veja LICENSE.

Veja CHANGELOG para o histórico de versões.

Construído por Mihai Ciprian Chezan