GameCode MCP2
Um servidor Model Context Protocol (MCP) para integração de ferramentas, configurado usando um arquivo tools.yaml.
Documentação
Este repositório foi movido para https://git.navicore.tech/navicore/gamecode-mcp2.
A cópia no GitHub está arquivada e não é mais mantida.
GameCode MCP2
Uma implementação limpa (e possivelmente ingênua) do Model Context Protocol (MCP) para integração de ferramentas.
Motivação - o mínimo de dependências possível, uma configuração tão simples e auditável quanto possível.
⚠️ Aviso de Segurança
MCP é uma tecnologia inicial. Permitir que LLMs executem comandos do sistema é inerentemente arriscado. Esta implementação prioriza auditabilidade em vez de recursos - você pode ler cada linha que processa solicitações de LLM. Mesmo assim, prossiga com cautela. Somente o tempo dirá se a abordagem do MCP é sólida.
Principais Recursos
- Exposição direta de ferramentas - Ferramentas definidas em
tools.yamlsão expostas diretamente via MCP, não por meio de meta-ferramentas - Implementação limpa do protocolo - JSON-RPC 2.0 puro sobre stdio sem dependências externas
- Carregamento dinâmico de ferramentas - Configure ferramentas via YAML sem recompilar
- Ferramentas integradas e externas - Suporte para manipuladores internos e comandos externos
Arquitetura
Este workspace contém duas crates:
mcp-server- O servidor MCP que carrega ferramentas detools.yamle as expõe via protocolomcp-client- Uma biblioteca cliente para testes e integração
Uso
Executando o Servidor
# Build the server
cargo build --release --bin gamecode-mcp2
# Create a tools.yaml file (see examples/tools.yaml)
cp examples/tools.yaml .
# Run the server (it communicates via stdio)
./target/release/gamecode-mcp2
Usando com Claude Desktop
Adicione à sua configuração do Claude Desktop:
{
"mcpServers": {
"gamecode": {
"command": "/path/to/gamecode-mcp2"
}
}
}
Usando com gamecode-cli
A crate mcp-client pode ser usada como dependência no gamecode-cli para integração MCP.
Configuração de Ferramentas
As ferramentas são definidas em tools.yaml:
tools:
- name: my_tool
description: Description for the LLM
command: /path/to/command # or "internal" for built-in
args:
- name: param1
description: Parameter description
required: true
type: string
cli_flag: --param # null for positional
internal_handler: handler_name # for internal tools
Protocolo
Esta implementação segue a especificação MCP:
initialize- Handshake com o clientetools/list- Retorna todas as ferramentas disponíveistools/call- Executa uma ferramenta específica
As ferramentas são expostas diretamente, não por meio de meta-ferramentas como "run".