Pular para o conteúdo principal
O MCP (Model Context Protocol) e um protocolo aberto para interoperabilidade de ferramentas com modelos de IA. O ChatCLI integra com servidores MCP, permitindo que a IA acesse ferramentas externas como sistema de arquivos, buscas web, bancos de dados e qualquer servico compativel.

Visao Geral

ChatCLI <-> MCP Manager <-> MCP Server (stdio/SSE)
                              |
                         Ferramentas externas
                         (filesystem, search, DB, ...)
1

Carrega configuracao

O MCP Manager carrega a configuracao de servidores MCP.
2

Inicia servidores

Inicia os servidores configurados (stdio ou SSE).
3

Descobre ferramentas

Descobre as ferramentas disponíveis em cada servidor.
4

Expoe ao modelo

Expoe as ferramentas ao modelo de IA como ToolDefinition.
5

Roteia chamadas

Roteia chamadas de ferramentas para o servidor correto.

Configuracao

Arquivo de Configuracao

Crie ~/.chatcli/mcp_servers.json:
{
  "mcpServers": [
    {
      "name": "filesystem",
      "transport": "stdio",
      "command": "npx",
      "args": ["-y", "@anthropic/mcp-server-filesystem", "/workspace"],
      "enabled": true
    },
    {
      "name": "web-search",
      "transport": "sse",
      "url": "http://localhost:8080/sse",
      "enabled": true
    },
    {
      "name": "database",
      "transport": "stdio",
      "command": "/usr/local/bin/mcp-postgres",
      "args": ["--connection-string", "postgresql://localhost/mydb"],
      "env": {
        "PGPASSWORD": "secret"
      },
      "enabled": true
    }
  ]
}

Variaveis de Ambiente

CHATCLI_MCP_ENABLED=true
CHATCLI_MCP_CONFIG=~/.chatcli/mcp_servers.json

Via Flag do Servidor

chatcli server --mcp-config ~/.chatcli/mcp_servers.json

Transportes

O transporte stdio inicia um processo local e se comunica via stdin/stdout usando JSON-RPC 2.0:
{
  "name": "filesystem",
  "transport": "stdio",
  "command": "npx",
  "args": ["-y", "@anthropic/mcp-server-filesystem", "/workspace"]
}
Uso: Servidores locais distribuidos como pacotes npm, binarios standalone ou scripts.

Nomeacao de Ferramentas

Ferramentas MCP sao automaticamente prefixadas com mcp_ e recebem a descricao do servidor de origem:
Nome original: read_file
Nome no ChatCLI: mcp_read_file
Descricao: [MCP:filesystem] Reads a file from the filesystem
O prefixo mcp_ evita colisoes com ferramentas nativas do ChatCLI.

Deploy via Helm

# values.yaml
mcp:
  enabled: true
  servers:
    - name: filesystem
      transport: stdio
      command: npx
      args: ["-y", "@anthropic/mcp-server-filesystem", "/workspace"]
      enabled: true
O Helm chart cria automaticamente um ConfigMap com o mcp_servers.json e monta em /etc/chatcli/mcp/.

Verificando Status

O MCP Manager expoe o status de cada servidor:
statuses := mcpMgr.GetServerStatus()
for _, s := range statuses {
    fmt.Printf("Server: %s, Connected: %v, Tools: %d\n",
        s.Name, s.Connected, s.ToolCount)
}
Para verificar se uma ferramenta e MCP:
if mcpMgr.IsMCPTool("mcp_read_file") {
    result, err := mcpMgr.ExecuteTool(ctx, "read_file", args)
}

Servidores MCP Populares

ServidorDescricaoInstalacao
@anthropic/mcp-server-filesystemAcesso ao sistema de arquivosnpx -y @anthropic/mcp-server-filesystem /path
@anthropic/mcp-server-githubIntegracao com GitHubnpx -y @anthropic/mcp-server-github
@anthropic/mcp-server-postgresQueries PostgreSQLnpx -y @anthropic/mcp-server-postgres
@anthropic/mcp-server-slackIntegracao com Slacknpx -y @anthropic/mcp-server-slack
Consulte modelcontextprotocol.io para a lista completa de servidores MCP disponiveis.