Code Context MCP Server
Fornece contexto de código de repositórios git locais.
Documentação
Code Context MCP Server
Um servidor Model Context Protocol (MCP) para fornecer contexto de código a partir de repositórios git locais. Este servidor permite que você:
- Clone repositórios git localmente
- Processe branches e arquivos
- Gere embeddings para blocos de código
- Realize busca semântica sobre o código
Recursos
- Usa repositórios git locais em vez da API do GitHub
- Armazena dados em banco de dados SQLite
- Divide o código em blocos semânticos
- Gera embeddings para blocos de código usando Ollama
- Fornece busca semântica sobre o código
Pré-requisitos
- Node.js (v16+)
- Git
- Ollama com um modelo de embedding
Instalação
# Clone the repository
git clone <repository-url>
cd code-context-mcp
# Install dependencies
npm install
# Build the project
npm run build
Configuração
Defina as seguintes variáveis de ambiente:
DATA_DIR: Diretório para o banco de dados SQLite (padrão: '~/.codeContextMcp/data')REPO_CACHE_DIR: Diretório para repositórios clonados (padrão: '~/.codeContextMcp/repos')
Usando Ollama
Para embeddings mais rápidos e poderosos, você pode usar Ollama:
# Install Ollama from https://ollama.ai/
# Pull an embedding model (unclemusclez/jina-embeddings-v2-base-code is recommended)
ollama pull unclemusclez/jina-embeddings-v2-base-code
Uso
Usando com Claude Desktop
Adicione a seguinte configuração ao seu arquivo de configuração do Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"code-context-mcp": {
"command": "/path/to/your/node",
"args": ["/path/to/code-context-mcp/dist/index.js"]
}
}
}
Ferramentas
O servidor fornece a seguinte ferramenta:
queryRepo
Clona um repositório, processa o código e realiza busca semântica:
{
"repoUrl": "https://github.com/username/repo.git",
"branch": "main", // Optional - defaults to repository's default branch
"query": "Your search query",
"keywords": ["keyword1", "keyword2"], // Optional - filter results by keywords
"filePatterns": ["**/*.ts", "src/*.js"], // Optional - filter files by glob patterns
"excludePatterns": ["**/node_modules/**"], // Optional - exclude files by glob patterns
"limit": 10 // Optional - number of results to return, default: 10
}
O parâmetro branch é opcional. Se não for fornecido, a ferramenta usará automaticamente o branch padrão do repositório.
O parâmetro keywords é opcional. Se fornecido, os resultados serão filtrados para incluir apenas blocos que contenham pelo menos uma das palavras-chave especificadas (correspondência sem diferenciar maiúsculas de minúsculas).
Os parâmetros filePatterns e excludePatterns são opcionais. Eles permitem filtrar quais arquivos são processados e pesquisados usando padrões glob (por exemplo, **/*.ts para todos os arquivos TypeScript).
Esquema do Banco de Dados
O servidor usa SQLite com o seguinte esquema:
repository: Armazena informações sobre repositóriosbranch: Armazena informações sobre branchesfile: Armazena informações sobre arquivosbranch_file_association: Associa arquivos a branchesfile_chunk: Armazena blocos de código e seus embeddings
Depuração
Problemas de Arquitetura ARM - Série MAC Mx
Ao instalar better-sqlite3 em chips da série M da Mac (arquitetura ARM), se você encontrar erros como "mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e' or 'arm64')", você precisa garantir que o binário corresponda à sua arquitetura. Veja como resolver esse problema:
# Check your Node.js architecture
node -p "process.arch"
# If it shows 'arm64', but you're still having issues, try:
npm rebuild better-sqlite3 --build-from-source
# Or for a clean install:
npm uninstall better-sqlite3
export npm_config_arch=arm64
export npm_config_target_arch=arm64
npm install better-sqlite3 --build-from-source
Se você estiver usando Rosetta, certifique-se de que todo o seu ambiente seja consistente. Seu erro mostra binários x86_64 sendo compilados, mas seu sistema precisa de arm64. Para configuração persistente, adicione ao seu .zshrc ou .bashrc:
export npm_config_arch=arm64
export npm_config_target_arch=arm64
Testando Embeddings do Ollama
curl http://localhost:11434/api/embed -d '{"model":"unclemusclez/jina-embeddings-v2-base-code","input":"Llamas are members of the camelid family"}' curl http://127.0.01:11434/api/embed -d '{"model":"unclemusclez/jina-embeddings-v2-base-code","input":"Llamas are members of the camelid family"}' curl http://[::1]:11434/api/embed -d '{"model":"unclemusclez/jina-embeddings-v2-base-code","input":"Llamas are members of the camelid family"}'
Licença
MIT