MCPHost
Um aplicativo host de linha de comando que permite que Modelos de Linguagem de Grande Escala (LLMs) interajam com ferramentas externas através do Protocolo de Contexto de Modelo (MCP).
Documentação
⚠️ MCPHost não é mais mantido ativamente
O desenvolvimento ativo do MCPHost foi interrompido. Este projeto foi sucedido pelo Kit, que se baseia nos fundamentos do MCPHost com uma arquitetura mais poderosa e extensível.
👉 Recomendamos que todos os usuários migrem para o Kit.
Este repositório agora está arquivado e não receberá mais atualizações ou correções de bugs.
MCPHost 🤖
Um aplicativo host de CLI que permite que Modelos de Linguagem de Grande Porte (LLMs) interajam com ferramentas externas por meio do Protocolo de Contexto de Modelo (MCP). Atualmente suporta modelos Claude, OpenAI, Google Gemini e Ollama.
Discuta o projeto no Discord
Sumário
- Visão Geral
- Recursos
- Requisitos
- Configuração do Ambiente
- Instalação
- Uso do SDK
- Configuração
- Uso
- Automação e Scripts
- Compatibilidade com Servidores MCP
- Contribuindo
- Licença
- Agradecimentos
Visão Geral 🌟
O MCPHost atua como host na arquitetura cliente-servidor do MCP, onde:
- Hosts (como o MCPHost) são aplicações LLM que gerenciam conexões e interações
- Clientes mantêm conexões 1:1 com servidores MCP
- Servidores fornecem contexto, ferramentas e capacidades aos LLMs
Essa arquitetura permite que os modelos de linguagem:
- Acessem ferramentas externas e fontes de dados 🛠️
- Mantenham contexto consistente entre interações 🔄
- Executem comandos e recuperem informações com segurança 🔒
Atualmente suporta:
- Modelos Anthropic Claude (Claude 3.5 Sonnet, Claude 3.5 Haiku, etc.)
- Modelos OpenAI (GPT-4, GPT-4 Turbo, GPT-3.5, etc.)
- Modelos Google Gemini (Gemini 2.0 Flash, Gemini 1.5 Pro, etc.)
- Qualquer modelo compatível com Ollama com suporte a chamada de funções
- Qualquer endpoint de API compatível com OpenAI
Recursos ✨
- Conversas interativas com múltiplos modelos de IA
- Modo não interativo para scripts e automação
- Modo de script para scripts de automação executáveis baseados em YAML
- Suporte a múltiplos servidores MCP simultâneos
- Filtragem de ferramentas com
allowedToolseexcludedToolspor servidor - Descoberta e integração dinâmicas de ferramentas
- Capacidades de chamada de ferramentas em todos os modelos suportados
- Locais e argumentos de servidor MCP configuráveis
- Interface de comando consistente entre tipos de modelo
- Janela de histórico de mensagens configurável para gerenciamento de contexto
- Suporte a autenticação OAuth para Anthropic (alternativa às chaves de API)
- Sistema de hooks para integrações personalizadas e políticas de segurança
- Substituição de variáveis de ambiente em configurações e scripts
- Servidores integrados para funcionalidades comuns (filesystem, bash, todo, http)
Requisitos 📋
- Go 1.23 ou posterior
- Para OpenAI/Anthropic: chave de API do respectivo provedor
- Para Ollama: instalação local do Ollama com os modelos desejados
- Para Google/Gemini: chave de API do Google (veja https://aistudio.google.com/app/apikey)
- Um ou mais servidores de ferramentas compatíveis com MCP
Configuração do Ambiente 🔧
- Chaves de API:
# For all providers (use --provider-api-key flag or these environment variables)
export OPENAI_API_KEY='your-openai-key' # For OpenAI
export ANTHROPIC_API_KEY='your-anthropic-key' # For Anthropic
export GOOGLE_API_KEY='your-google-key' # For Google/Gemini
- Configuração do Ollama:
- Instale o Ollama a partir de https://ollama.ai
- Baixe o modelo desejado:
ollama pull mistral
- Certifique-se de que o Ollama está em execução:
ollama serve
Você também pode configurar o cliente Ollama usando variáveis de ambiente padrão, como OLLAMA_HOST para a URL base do Ollama.
- Chave de API do Google (para Gemini):
export GOOGLE_API_KEY='your-api-key'
- Configuração compatível com OpenAI:
- Obtenha a URL base do servidor de API, a chave de API e o nome do modelo
- Use as flags
--provider-urle--provider-api-keyou defina variáveis de ambiente
- Certificados Autoassinados (TLS): Se o seu provedor usa certificados autoassinados (ex.: Ollama local com HTTPS), você pode pular a verificação de certificado:
mcphost --provider-url https://192.168.1.100:443 --tls-skip-verify
⚠️ AVISO: Use --tls-skip-verify apenas para desenvolvimento ou ao conectar a servidores confiáveis com certificados autoassinados. Isso desativa a verificação de certificados TLS e é inseguro para uso em produção.
Instalação 📦
go install github.com/mark3labs/mcphost@latest
Uso do SDK 🛠️
O MCPHost também fornece um SDK Go para acesso programático sem gerar processos do sistema operacional. O SDK mantém comportamento idêntico ao CLI, incluindo carregamento de configuração, variáveis de ambiente e padrões.
Exemplo Rápido
package main
import (
"context"
"fmt"
"github.com/mark3labs/mcphost/sdk"
)
func main() {
ctx := context.Background()
// Create MCPHost instance with default configuration
host, err := sdk.New(ctx, nil)
if err != nil {
panic(err)
}
defer host.Close()
// Send a prompt and get response
response, err := host.Prompt(ctx, "What is 2+2?")
if err != nil {
panic(err)
}
fmt.Println(response)
}
Recursos do SDK
- ✅ Acesso programático sem gerar processos
- ✅ Comportamento de configuração idêntico ao CLI
- ✅ Gerenciamento de sessão (salvar/carregar/limpar)
- ✅ Callbacks de execução de ferramentas para monitoramento
- ✅ Suporte a streaming
- ✅ Compatibilidade total com todos os provedores e servidores MCP
Para documentação detalhada do SDK, exemplos e referência de API, consulte o README do SDK.
Configuração ⚙️
Servidores MCP
O MCPHost criará automaticamente um arquivo de configuração no seu diretório inicial se ele não existir. Ele procura arquivos de configuração nesta ordem:
.mcphost.ymlou.mcphost.json(preferido).mcp.ymlou.mcp.json(compatibilidade com versões anteriores)
Locais do arquivo de configuração por SO:
- Linux/macOS:
~/.mcphost.yml,~/.mcphost.json,~/.mcp.yml,~/.mcp.json - Windows:
%USERPROFILE%\.mcphost.yml,%USERPROFILE%\.mcphost.json,%USERPROFILE%\.mcp.yml,%USERPROFILE%\.mcp.json
Você também pode especificar um local personalizado usando a flag --config.
Substituição de Variáveis de Ambiente
O MCPHost suporta substituição de variáveis de ambiente em arquivos de configuração e frontmatter de scripts usando a sintaxe:
${env://VAR}- Variável de ambiente obrigatória (falha se não estiver definida)${env://VAR:-default}- Variável de ambiente opcional com valor padrão
Isso permite manter informações sensíveis, como chaves de API, em variáveis de ambiente enquanto mantém uma configuração flexível.
Exemplo:
mcpServers:
github:
type: local
command: ["docker", "run", "-i", "--rm", "-e", "GITHUB_PERSONAL_ACCESS_TOKEN=${env://GITHUB_TOKEN}", "ghcr.io/github/github-mcp-server"]
environment:
DEBUG: "${env://DEBUG:-false}"
LOG_LEVEL: "${env://LOG_LEVEL:-info}"
model: "${env://MODEL:-anthropic/claude-sonnet-4-5-20250929}"
provider-api-key: "${env://OPENAI_API_KEY}" # Required - will fail if not set
Uso:
# Set required environment variables
export GITHUB_TOKEN="ghp_your_token_here"
export OPENAI_API_KEY="your_openai_key"
# Optionally override defaults
export DEBUG="true"
export MODEL="openai/gpt-4"
# Run mcphost
mcphost
Esquema de Configuração Simplificado
O MCPHost agora suporta um esquema de configuração simplificado com três tipos de servidor:
Servidores Locais
Para servidores MCP locais que executam comandos na sua máquina:
{
"mcpServers": {
"filesystem": {
"type": "local",
"command": ["npx", "@modelcontextprotocol/server-filesystem", "${env://WORK_DIR:-/tmp}"],
"environment": {
"DEBUG": "${env://DEBUG:-false}",
"LOG_LEVEL": "${env://LOG_LEVEL:-info}",
"API_TOKEN": "${env://FS_API_TOKEN}"
},
"allowedTools": ["read_file", "write_file"],
"excludedTools": ["delete_file"]
},
"github": {
"type": "local",
"command": ["docker", "run", "-i", "--rm", "-e", "GITHUB_PERSONAL_ACCESS_TOKEN=${env://GITHUB_TOKEN}", "ghcr.io/github/github-mcp-server"],
"environment": {
"DEBUG": "${env://DEBUG:-false}"
}
},
"sqlite": {
"type": "local",
"command": ["uvx", "mcp-server-sqlite", "--db-path", "${env://DB_PATH:-/tmp/foo.db}"],
"environment": {
"SQLITE_DEBUG": "${env://DEBUG:-0}",
"DATABASE_URL": "${env://DATABASE_URL:-sqlite:///tmp/foo.db}"
}
}
}
}
Cada entrada de servidor local requer:
type: Deve ser definido como"local"command: Array contendo o comando e todos os seus argumentosenvironment: (Opcional) Objeto com variáveis de ambiente como pares chave-valorallowedTools: (Opcional) Array de nomes de ferramentas a incluir (whitelist)excludedTools: (Opcional) Array de nomes de ferramentas a excluir (blacklist)
Servidores Remotos
Para servidores MCP remotos acessíveis via HTTP:
{
"mcpServers": {
"websearch": {
"type": "remote",
"url": "${env://WEBSEARCH_URL:-https://api.example.com/mcp}",
"headers": ["Authorization: Bearer ${env://WEBSEARCH_TOKEN}"]
},
"weather": {
"type": "remote",
"url": "${env://WEATHER_URL:-https://weather-mcp.example.com}"
}
}
}
Cada entrada de servidor remoto requer:
type: Deve ser definido como"remote"url: A URL onde o servidor MCP está acessívelheaders: (Opcional) Array de cabeçalhos HTTP para autenticação e cabeçalhos personalizados
Servidores remotos usam automaticamente o transporte StreamableHTTP para desempenho ideal.
Servidores Integrados
Para servidores MCP integrados que executam em processo para desempenho ideal:
{
"mcpServers": {
"filesystem": {
"type": "builtin",
"name": "fs",
"options": {
"allowed_directories": ["${env://WORK_DIR:-/tmp}", "${env://HOME}/documents"]
},
"allowedTools": ["read_file", "write_file", "list_directory"]
},
"filesystem-cwd": {
"type": "builtin",
"name": "fs"
}
}
}
Cada entrada de servidor integrado requer:
type: Deve ser definido como"builtin"name: Nome interno do servidor integrado (ex.:"fs"para filesystem)options: Opções de configuração específicas do servidor integrado
Servidores Integrados Disponíveis:
fs(filesystem): Acesso seguro ao sistema de arquivos com diretórios permitidos configuráveisallowed_directories: Array de caminhos de diretório que o servidor pode acessar (padrão: diretório de trabalho atual se não especificado)
bash: Executa comandos bash com restrições de segurança e controles de timeout- Nenhuma opção de configuração necessária
todo: Gerencia listas de tarefas efêmeras para acompanhamento de tarefas durante sessões- Nenhuma opção de configuração necessária (as tarefas são armazenadas em memória e redefinidas na reinicialização)
http: Busca conteúdo da web e converte para formatos de texto, markdown ou HTML- Ferramentas:
fetch(busca e converte conteúdo da web),fetch_summarize(busca e resume conteúdo da web usando IA),fetch_extract(busca e extrai dados específicos usando IA),fetch_filtered_json(busca JSON e filtra usando sintaxe de caminho gjson) - Nenhuma opção de configuração necessária
- Ferramentas:
Exemplos de Servidores Integrados
{
"mcpServers": {
"filesystem": {
"type": "builtin",
"name": "fs",
"options": {
"allowed_directories": ["/tmp", "/home/user/documents"]
}
},
"bash-commands": {
"type": "builtin",
"name": "bash"
},
"task-manager": {
"type": "builtin",
"name": "todo"
},
"web-fetcher": {
"type": "builtin",
"name": "http"
}
}
}
Filtragem de Ferramentas
Todos os tipos de servidor MCP suportam filtragem de ferramentas para restringir quais ferramentas estão disponíveis:
allowedTools: Whitelist - apenas as ferramentas especificadas estão disponíveis no servidorexcludedTools: Blacklist - todas as ferramentas, exceto as especificadas, estão disponíveis
{
"mcpServers": {
"filesystem-readonly": {
"type": "builtin",
"name": "fs",
"allowedTools": ["read_file", "list_directory"]
},
"filesystem-safe": {
"type": "local",
"command": ["npx", "@modelcontextprotocol/server-filesystem", "/tmp"],
"excludedTools": ["delete_file"]
}
}
}
Nota: allowedTools e excludedTools são mutuamente exclusivos - você só pode usar um por servidor.
Suporte a Configuração Legada
O MCPHost mantém compatibilidade total com versões anteriores do formato de configuração. Nota: Uma correção de bug recente melhorou a confiabilidade do transporte stdio legado para servidores MCP externos (Docker, NPX, etc.).
Formato STDIO Legado
{
"mcpServers": {
"sqlite": {
"command": "uvx",
"args": ["mcp-server-sqlite", "--db-path", "/tmp/foo.db"],
"env": {
"DEBUG": "true"
}
}
}
}
Formato SSE Legado
{
"mcpServers": {
"server_name": {
"url": "http://some_host:8000/sse",
"headers": ["Authorization: Bearer my-token"]
}
}
}
Formato Docker/Container Legado
{
"mcpServers": {
"phalcon": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/mark3labs/phalcon-mcp:latest",
"serve"
]
}
}
}
Formato Streamable HTTP Legado
{
"mcpServers": {
"websearch": {
"transport": "streamable",
"url": "https://api.example.com/mcp",
"headers": ["Authorization: Bearer your-api-token"]
}
}
}
Tipos de Transporte
O MCPHost suporta quatro tipos de transporte:
stdio: Inicia um processo local e comunica via stdin/stdout (usado por servidores"local")sse: Conecta a um servidor usando Server-Sent Events (formato legado)streamable: Conecta a um servidor usando o protocolo Streamable HTTP (usado por servidores"remote")inprocess: Executa servidores integrados em processo para desempenho ideal (usado por servidores"builtin")
O esquema simplificado mapeia automaticamente:
- tipo
"local"→ transportestdio - tipo
"remote"→ transportestreamable - tipo
"builtin"→ transporteinprocess
Prompt do Sistema
Você pode especificar um prompt de sistema personalizado usando a flag --system-prompt. Você pode:
-
Passar o prompt diretamente como texto:
mcphost --system-prompt "You are a helpful assistant that responds in a friendly tone." -
Passar um caminho para um arquivo de texto contendo o prompt:
mcphost --system-prompt ./prompts/assistant.mdExemplo de arquivo
assistant.md:You are a helpful coding assistant. Please: - Write clean, readable code - Include helpful comments - Follow best practices - Explain your reasoning
Uso 🚀
O MCPHost é uma ferramenta CLI que permite interagir com vários modelos de IA por meio de uma interface unificada. Ele suporta várias ferramentas por meio de servidores MCP e pode ser executado em modos interativo e não interativo.
Modo Interativo (Padrão)
Inicie uma sessão de conversa interativa:
mcphost
Modo de Script
Execute scripts de automação executáveis baseados em YAML com suporte a substituição de variáveis:
# Using the script subcommand
mcphost script myscript.sh
# With variables
mcphost script myscript.sh --args:directory /tmp --args:name "John"
# Direct execution (if executable and has shebang)
./myscript.sh
Formato do Script
Os scripts combinam configuração YAML com prompts em um único arquivo executável. A configuração deve ser envolvida em delimitadores de frontmatter (---). Você pode incluir o prompt na configuração YAML ou colocá-lo após o delimitador de frontmatter de fechamento:
#!/usr/bin/env -S mcphost script
---
# This script uses the container-use MCP server from https://github.com/dagger/container-use
mcpServers:
container-use:
type: "local"
command: ["cu", "stdio"]
prompt: |
Create 2 variations of a simple hello world app using Flask and FastAPI.
Each in their own environment. Give me the URL of each app
---
Ou, alternativamente, omita o campo prompt: e coloque o prompt após o frontmatter:
#!/usr/bin/env -S mcphost script
---
# This script uses the container-use MCP server from https://github.com/dagger/container-use
mcpServers:
container-use:
type: "local"
command: ["cu", "stdio"]
---
Create 2 variations of a simple hello world app using Flask and FastAPI.
Each in their own environment. Give me the URL of each app
Substituição de Variáveis
Os scripts suportam tanto a substituição de variáveis de ambiente quanto a substituição de argumentos de script:
- Variáveis de Ambiente:
${env://VAR}e${env://VAR:-default}- Processadas primeiro - Argumentos de Script:
${variable}e${variable:-default}- Processados após as variáveis de ambiente
As variáveis podem ser fornecidas via argumentos de linha de comando:
# Script with variables
mcphost script myscript.sh --args:directory /tmp --args:name "John"
Sintaxe de Variáveis
O MCPHost suporta estas sintaxes de variáveis:
- Variáveis de Ambiente Obrigatórias:
${env://VAR}- Devem ser definidas no ambiente - Variáveis de Ambiente Opcionais:
${env://VAR:-default}- Usa o padrão se não for definida - Argumentos de Script Obrigatórios:
${variable}- Devem ser fornecidos via--args:variable value - Argumentos de Script Opcionais:
${variable:-default}- Usa o padrão se não for fornecido
Exemplo de script com variáveis de ambiente e argumentos de script misturados:
#!/usr/bin/env -S mcphost script
---
mcpServers:
github:
type: "local"
command: ["gh", "api"]
environment:
GITHUB_TOKEN: "${env://GITHUB_TOKEN}"
DEBUG: "${env://DEBUG:-false}"
filesystem:
type: "local"
command: ["npx", "-y", "@modelcontextprotocol/server-filesystem", "${env://WORK_DIR:-/tmp}"]
model: "${env://MODEL:-anthropic/claude-sonnet-4-5-20250929}"
---
Hello ${name:-World}! Please list ${repo_type:-public} repositories for user ${username}.
Working directory is ${env://WORK_DIR:-/tmp}.
Use the ${command:-gh} command to fetch ${count:-10} repositories.
Exemplos de Uso
# Set environment variables first
export GITHUB_TOKEN="ghp_your_token_here"
export DEBUG="true"
export WORK_DIR="/home/user/projects"
# Uses env vars and defaults: name="World", repo_type="public", command="gh", count="10"
mcphost script myscript.sh
# Override specific script arguments
mcphost script myscript.sh --args:name "John" --args:username "alice"
# Override multiple script arguments
mcphost script myscript.sh --args:name "John" --args:username "alice" --args:repo_type "private"
# Mix of env vars, provided args, and default values
mcphost script myscript.sh --args:name "Alice" --args:command "gh api" --args:count "5"
Recursos de Valores Padrão
- Padrões vazios:
${var:-}- Usa string vazia se não for fornecido - Padrões complexos:
${path:-/tmp/default/path}- Suporta caminhos, URLs, etc. - Espaços em padrões:
${msg:-Hello World}- Suporta espaços em valores padrão - Compatibilidade retroativa: A sintaxe existente
${variable}continua funcionando sem alterações
Importante:
- Variáveis de ambiente sem padrão (ex.:
${env://GITHUB_TOKEN}) são obrigatórias e devem ser definidas no ambiente - Argumentos de script sem padrão (ex.:
${username}) são obrigatórios e devem ser fornecidos via sintaxe--args:variable value - Variáveis com padrão são opcionais e usarão seu valor padrão se não forem fornecidas
- Variáveis de ambiente são processadas primeiro, depois os argumentos de script
Recursos de Script
- Executável: Use a linha shebang para execução direta (
#!/usr/bin/env -S mcphost script) - Configuração YAML: Defina servidores MCP diretamente no script
- Prompts Incorporados: Inclua o prompt no YAML
- Substituição de Variáveis: Use a sintaxe
${variable}e${variable:-default}com--args:variable value - Validação de Variáveis: Variáveis obrigatórias ausentes fazem o script sair com erro útil
- Modo Interativo: Se o prompt estiver vazio, entra em modo interativo (útil para scripts de configuração)
- Fallback de Configuração: Se nenhum
mcpServersfor definido, usa a configuração padrão - Filtragem de Ferramentas: Suporta
allowedTools/excludedToolspor servidor - Saída Limpa: Sai automaticamente após a conclusão
Nota: A linha shebang requer env -S para lidar com o comando de múltiplas palavras mcphost script. Isso é suportado na maioria dos sistemas Unix-like modernos.
Exemplos de Script
Consulte examples/scripts/ para scripts de exemplo:
example-script.sh- Script com servidores MCP personalizadossimple-script.sh- Script usando fallback de configuração padrão
Sistema de Hooks
O MCPHost suporta um poderoso sistema de hooks que permite executar comandos personalizados em pontos específicos durante a execução. Isso possibilita políticas de segurança, registro de logs, integrações personalizadas e fluxos de trabalho automatizados.
Início Rápido
-
Inicialize uma configuração de hooks:
mcphost hooks init -
Visualize hooks ativos:
mcphost hooks list -
Valide sua configuração:
mcphost hooks validate
Configuração
Os hooks são configurados em arquivos YAML com a seguinte precedência (da maior para a menor):
.mcphost/hooks.yml(hooks específicos do projeto)$XDG_CONFIG_HOME/mcphost/hooks.yml(hooks globais do usuário, padrão para~/.config/mcphost/hooks.yml)
Exemplo de configuração:
hooks:
PreToolUse:
- matcher: "bash"
hooks:
- type: command
command: "/usr/local/bin/validate-bash.py"
timeout: 5
UserPromptSubmit:
- hooks:
- type: command
command: "~/.mcphost/hooks/log-prompt.sh"
Eventos de Hook Disponíveis
- PreToolUse: Antes de qualquer execução de ferramenta (bash, fetch, todo, ferramentas MCP)
- PostToolUse: Após a conclusão da execução da ferramenta
- UserPromptSubmit: Quando o usuário envia um prompt
- Stop: Quando o agente termina de responder
- SubagentStop: Quando um subagente (ferramenta Task) termina
- Notification: Quando o MCPHost envia notificações
Segurança
⚠️ AVISO: Os hooks executam comandos arbitrários no seu sistema. Use apenas hooks de fontes confiáveis e sempre revise os comandos dos hooks antes de ativá-los.
Para desativar temporariamente todos os hooks, use o sinalizador --no-hooks:
mcphost --no-hooks
Consulte os scripts de hook de exemplo em examples/hooks/:
bash-validator.py- Valida e bloqueia comandos bash perigososprompt-logger.sh- Registra todos os prompts do usuário com carimbos de data/horamcp-monitor.py- Monitora e aplica políticas no uso de ferramentas MCP
Modo Não Interativo
Execute um único prompt e saia - perfeito para scripts e automação:
# Basic non-interactive usage
mcphost -p "What is the weather like today?"
# Quiet mode - only output the AI response (no UI elements)
mcphost -p "What is 2+2?" --quiet
# Use with different models
mcphost -m ollama/qwen2.5:3b -p "Explain quantum computing" --quiet
Parâmetros de Geração do Modelo
O MCPHost suporta ajuste fino do comportamento do modelo através de vários parâmetros:
# Control response length
mcphost -p "Explain AI" --max-tokens 1000
# Adjust creativity (0.0 = focused, 1.0 = creative)
mcphost -p "Write a story" --temperature 0.9
# Control diversity with nucleus sampling
mcphost -p "Generate ideas" --top-p 0.8
# Limit token choices for more focused responses
mcphost -p "Answer precisely" --top-k 20
# Set custom stop sequences
mcphost -p "Generate code" --stop-sequences "```","END"
Esses parâmetros funcionam com todos os provedores suportados (OpenAI, Anthropic, Google, Ollama) onde suportados pelo modelo subjacente.
Modelos Disponíveis
Os modelos podem ser especificados usando o sinalizador --model (-m):
- Anthropic Claude (padrão):
anthropic/claude-sonnet-4-5-20250929,anthropic/claude-3-5-sonnet-latest,anthropic/claude-3-5-haiku-latest - OpenAI:
openai/gpt-4,openai/gpt-4-turbo,openai/gpt-3.5-turbo - Google Gemini:
google/gemini-2.0-flash,google/gemini-1.5-pro - Modelos Ollama:
ollama/llama3.2,ollama/qwen2.5:3b,ollama/mistral - Compatível com OpenAI: Qualquer modelo via endpoint personalizado com
--provider-url
Exemplos
Modo Interativo
# Use Ollama with Qwen model
mcphost -m ollama/qwen2.5:3b
# Use OpenAI's GPT-4
mcphost -m openai/gpt-4
# Use OpenAI-compatible model with custom URL and API key
mcphost --model openai/<your-model-name> \
--provider-url <your-base-url> \
--provider-api-key <your-api-key>
Modo Não Interativo
# Single prompt with full UI
mcphost -p "List files in the current directory"
# Compact mode for cleaner output without fancy styling
mcphost -p "List files in the current directory" --compact
# Quiet mode for scripting (only AI response output, no UI elements)
mcphost -p "What is the capital of France?" --quiet
# Use in shell scripts
RESULT=$(mcphost -p "Calculate 15 * 23" --quiet)
echo "The answer is: $RESULT"
# Pipe to other commands
mcphost -p "Generate a random UUID" --quiet | tr '[:lower:]' '[:upper:]'
Sinalizadores
--provider-url string: URL base para a API do provedor (aplica-se a OpenAI, Anthropic, Ollama e Google)--provider-api-key string: Chave de API para o provedor (aplica-se a OpenAI, Anthropic e Google)--tls-skip-verify: Ignorar verificação de certificado TLS (AVISO: inseguro, use apenas para certificados autoassinados)--config string: Localização do arquivo de configuração (padrão é $HOME/.mcphost.yml)--system-prompt string: Localização do arquivo de prompt do sistema--debug: Ativar registro de depuração--max-steps int: Número máximo de etapas do agente (0 para ilimitado, padrão: 0)-m, --model string: Modelo a usar (formato: provedor/modelo) (padrão "anthropic/claude-sonnet-4-5-20250929")-p, --prompt string: Executar em modo não interativo com o prompt fornecido--quiet: Suprimir toda a saída exceto a resposta da IA (funciona apenas com --prompt)--compact: Ativar modo de saída compacta sem estilos sofisticados (ideal para scripts e automação)--stream: Ativar respostas em streaming (padrão: true, use--stream=falsepara desativar)
Subcomandos de Autenticação
mcphost auth login anthropic: Autenticar com Anthropic usando OAuth (alternativa às chaves de API)mcphost auth logout anthropic: Remover credenciais OAuth armazenadasmcphost auth status: Mostrar status de autenticação
Nota: Credenciais OAuth (quando presentes) têm precedência sobre chaves de API de variáveis de ambiente e sinalizadores --provider-api-key.
Parâmetros de Geração do Modelo
--max-tokens int: Número máximo de tokens na resposta (padrão: 4096)--temperature float32: Controla a aleatoriedade nas respostas (0.0-1.0, padrão: 0.7)--top-p float32: Controla a diversidade via amostragem de núcleo (0.0-1.0, padrão: 0.95)--top-k int32: Controla a diversidade limitando os K tokens principais para amostragem (padrão: 40)--stop-sequences strings: Sequências de parada personalizadas (separadas por vírgula)
Suporte a Arquivo de Configuração
Todos os sinalizadores de linha de comando podem ser configurados via arquivo de configuração. O MCPHost procurará a configuração nesta ordem:
~/.mcphost.ymlou~/.mcphost.json(preferido)~/.mcp.ymlou~/.mcp.json(compatibilidade retroativa)
Exemplo de arquivo de configuração (~/.mcphost.yml):
# MCP Servers - New Simplified Format
mcpServers:
filesystem-local:
type: "local"
command: ["npx", "@modelcontextprotocol/server-filesystem", "/path/to/files"]
environment:
DEBUG: "true"
filesystem-builtin:
type: "builtin"
name: "fs"
options:
allowed_directories: ["/tmp", "/home/user/documents"]
websearch:
type: "remote"
url: "https://api.example.com/mcp"
# Application settings
model: "anthropic/claude-sonnet-4-5-20250929"
max-steps: 20
debug: false
system-prompt: "/path/to/system-prompt.txt"
# Model generation parameters
max-tokens: 4096
temperature: 0.7
top-p: 0.95
top-k: 40
stop-sequences: ["Human:", "Assistant:"]
# Streaming configuration
stream: false # Disable streaming (default: true)
# API Configuration
provider-api-key: "your-api-key" # For OpenAI, Anthropic, or Google
provider-url: "https://api.openai.com/v1" # Custom base URL
tls-skip-verify: false # Skip TLS certificate verification (default: false)
Nota: Sinalizadores de linha de comando têm precedência sobre valores do arquivo de configuração.
Comandos Interativos
Durante a conversa, você pode usar:
/help: Mostrar comandos disponíveis/tools: Listar todas as ferramentas disponíveis/servers: Listar servidores MCP configurados/history: Exibir histórico da conversa/quit: Sair do aplicativoCtrl+C: Sair a qualquer momento
Comandos de Autenticação
Autenticação OAuth opcional para Anthropic (alternativa às chaves de API):
mcphost auth login anthropic: Autenticar usando OAuthmcphost auth logout anthropic: Remover credenciais OAuth armazenadasmcphost auth status: Mostrar status de autenticação
Sinalizadores Globais
--config: Especificar localização personalizada do arquivo de configuração
Automação e Scripts 🤖
O modo não interativo do MCPHost o torna perfeito para automação, scripts e integração com outras ferramentas.
Casos de Uso
Scripts de Shell
#!/bin/bash
# Get weather and save to file
mcphost -p "What's the weather in New York?" --quiet > weather.txt
# Process files with AI
for file in *.txt; do
summary=$(mcphost -p "Summarize this file: $(cat $file)" --quiet)
echo "$file: $summary" >> summaries.txt
done
Integração CI/CD
# Code review automation
DIFF=$(git diff HEAD~1)
mcphost -p "Review this code diff and suggest improvements: $DIFF" --quiet
# Generate release notes
COMMITS=$(git log --oneline HEAD~10..HEAD)
mcphost -p "Generate release notes from these commits: $COMMITS" --quiet
Processamento de Dados
# Process CSV data
mcphost -p "Analyze this CSV data and provide insights: $(cat data.csv)" --quiet
# Generate reports
mcphost -p "Create a summary report from this JSON: $(cat metrics.json)" --quiet
Integração de API
# Use as a microservice
curl -X POST http://localhost:8080/process \
-d "$(mcphost -p 'Generate a UUID' --quiet)"
Dicas para Scripts
- Use o sinalizador
--quietpara obter saída limpa adequada para análise (apenas resposta da IA, sem interface) - Use o sinalizador
--compactpara saída simplificada sem estilos sofisticados (quando quiser ver elementos da interface) - Nota:
--compacte--quietsão mutuamente exclusivos ---compactnão tem efeito com--quiet - Use variáveis de ambiente para dados sensíveis como chaves de API em vez de codificá-los
- Use a sintaxe
${env://VAR}em arquivos de configuração e scripts para substituição de variáveis de ambiente - Combine com ferramentas Unix padrão (
grep,awk,sed, etc.) - Defina timeouts apropriados para operações de longa duração
- Trate erros adequadamente em seus scripts
- Use variáveis de ambiente para chaves de API em produção
Melhores Práticas para Variáveis de Ambiente
# Set sensitive variables in environment
export GITHUB_TOKEN="ghp_your_token_here"
export OPENAI_API_KEY="your_openai_key"
export DATABASE_URL="postgresql://user:pass@localhost/db"
# Use in config files
mcpServers:
github:
environment:
GITHUB_TOKEN: "${env://GITHUB_TOKEN}"
DEBUG: "${env://DEBUG:-false}"
# Use in scripts
mcphost script my-script.sh --args:username alice
Compatibilidade com Servidores MCP 🔌
O MCPHost pode trabalhar com qualquer servidor compatível com MCP. Para exemplos e implementações de referência, consulte o Repositório de Servidores MCP.
Contribuindo 🤝
Contribuições são bem-vindas! Sinta-se à vontade para:
- Enviar relatórios de bugs ou solicitações de recursos através de issues
- Criar pull requests para melhorias
- Compartilhar seus servidores MCP personalizados
- Melhorar a documentação
Por favor, garanta que suas contribuições sigam boas práticas de codificação e incluam testes apropriados.
Licença 📄
Este projeto é licenciado sob a Licença MIT - consulte o arquivo LICENSE para detalhes.
Agradecimentos 🙏
- Agradecimentos à equipe Anthropic por Claude e a especificação MCP
- Agradecimentos à equipe Ollama por seu runtime LLM local
- Agradecimentos a todos os contribuidores que ajudaram a melhorar esta ferramenta