MCP server codesurface
✓ VerificadoIndexa a API pública de uma base de código e fornece resultados compactos de busca, assinaturas e consulta de classes para clientes de IA via ferramentas MCP.
Também conhecido como Codeturion/codesurface
- Stars
- 21
- Ferramentas
- 7
- Downloads, 30 dias
- 275
- Versão mais recente
- 0.8.0
- Último commit
- 28 de jul. de 2026
- Licença
- MIT
O que é o MCP codesurface?
codesurface é um MCP server. Indexa a API pública de uma base de código e fornece resultados compactos de busca, assinaturas e consulta de classes para clientes de IA via ferramentas MCP. Ele expõe 7 ferramentas, como search, get_signature, get_class.
Resumo gerado a partir do README do projeto
Sobre o MCP server de codesurface
O codesurface permite indexar a API pública de uma base de código para fornecer resultados de busca compactos para agentes de IA. Ele analisa arquivos de origem para extrair classes, métodos, propriedades, campos e eventos, servindo esses dados por meio de ferramentas especializadas. Essa abordagem ajuda a reduzir o uso de tokens em comparação com a leitura de arquivos de origem inteiros, fornecendo informações direcionadas como assinaturas e membros de classe.
Desenvolvedores podem usar este servidor com Claude Code, Cursor, Windsurf ou qualquer cliente compatível com MCP. Ele suporta múltiplas linguagens, incluindo C#, C++, Go, Java, Python e TypeScript/JavaScript. A configuração envolve apontar a ferramenta para um diretório de projeto usando o argumento --project via uvx ou pip. O servidor detecta automaticamente as linguagens e ignora diretórios comuns como node_modules ou .git para manter o índice eficiente.
Para garantir a precisão, o servidor fornece ferramentas para buscar por palavra-chave, recuperar assinaturas exatas e visualizar listas completas de membros de classe. Ele também inclui um comando reindex para atualizações incrementais quando os arquivos mudam. Ao fornecer números de linha específicos para cada registro, ele permite que clientes de IA realizem leituras direcionadas apenas dos segmentos de código necessários.
O que você pode fazer com ele
- 1Localizar membros específicos da APIUm agente de IA pode encontrar um serviço ou classe específica pesquisando por uma palavra-chave dentro da base de código.
- 2Recuperar assinaturas exatas de métodosUm desenvolvedor pode pedir à IA para encontrar os parâmetros exatos e os tipos de retorno de uma função específica.
- 3Inspecionar estruturas de classeVocê pode solicitar uma lista completa de todos os membros públicos pertencentes a uma determinada classe.
- 4Realizar leituras de código direcionadasEm vez de ler um arquivo inteiro, a IA pode usar os números de linha do índice para ler apenas as linhas relevantes.
Escrito a partir do README do projeto. Cada caso de uso é verificado com uma citação dele.
Como instalar o MCP codesurface
Formatos verificados em 10 nov 2026Adicionar ao CursorAdicionar ao GooseInstalar o MCP codesurface no Claude Code
$ claude mcp add codesurface -- uvx codesurfaceInstalar o MCP codesurface no Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"codesurface": {
"command": "uvx",
"args": [
"codesurface"
]
}
}
}Instalar o MCP codesurface no VS Code
.vscode/mcp.json
{
"servers": {
"codesurface": {
"type": "stdio",
"command": "uvx",
"args": [
"codesurface"
]
}
}
}Instalar o MCP codesurface no VS Code CLI
$ code --add-mcp '{"name":"codesurface","type":"stdio","command":"uvx","args":["codesurface"]}'Instalar o MCP codesurface no Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"codesurface": {
"command": "uvx",
"args": [
"codesurface"
]
}
}
}Instalar o MCP codesurface no Codex
$ codex mcp add codesurface -- uvx codesurfaceInstalar o MCP codesurface no Codex config.toml
~/.codex/config.toml
[mcp_servers.codesurface] command = "uvx" args = ["codesurface"]
Instalar o MCP codesurface no Gemini CLI
$ gemini mcp add -s user codesurface uvx -- codesurfaceInstalar o MCP codesurface no Gemini settings.json
~/.gemini/settings.json
{
"mcpServers": {
"codesurface": {
"command": "uvx",
"args": [
"codesurface"
]
}
}
}Ferramentas do MCP codesurface 7
Detectadas a partir do READMEsearchget_signatureget_classget_statsreindexfile_pathinclude_tests
| search | — | |
| get_signature | — | |
| get_class | — | |
| get_stats | — | |
| reindex | — | |
| file_path | — | |
| include_tests | — |
Verificações automatizadas
Executado em 14 de nov. de 2026Relatório completo →Passou em nossas verificações automatizadas. Isso não é uma auditoria de segurança: leia o código e dê ao servidor o acesso mais restrito de que ele precisa. Como as verificações funcionam
- Repositório de origem vinculado e acessívelcodeturion/codesurface is public and reachablegithub.com/codeturion/codesurface ↗Passou
- O pacote indica este repositório como sua origemcodesurface names codeturion/codesurface as sourcepypi.org/project/codesurface/ ↗Passou
- Proveniência da build (atestação Sigstore)Sigstore attestation for codesurfacepypi.org/project/codesurface/ ↗Passou
- Licença de código aberto (OSI)MITspdx.org/licenses/MIT.html ↗Passou
- Commit ou release no último anoLast commit or release 2026-07-28github.com/codeturion/codesurface ↗Passou
- OpenSSF ScorecardNão verificado
- Nome do pacote não é próximo a um pacote popularNo popular package one edit away from codesurfacePassou
- Nenhum aviso crítico no pacote ou em suas dependências37 resolved dependencies checked; no critical advisoryosv.dev ↗Passou
- Sem instruções ocultas para o modelo7 tool descriptions and the README read; no override phrases, credential paths or hidden charactersPassou
- Ferramentas destrutivas estão rotuladasNo tool named like delete, drop or execPassou
- O endpoint remoto responde ao handshake do MCPNão verificado
README
Ver no GitHubcodesurface
MCP server that indexes your codebase's public API at startup and serves it via compact tool responses, saving tokens vs reading source files.
Parses source files, extracts public classes/methods/properties/fields/events, and serves them through 5 MCP tools. Works with Claude Code, Cursor, Windsurf, or any MCP-compatible AI tool.
Supported languages: C# (.cs), C++ headers (.h, .hpp, .hxx, .h++), Go (.go), Java (.java), Python (.py), TypeScript/JavaScript (.ts, .tsx, .js, .jsx)
Quick Start
Add to your .mcp.json:
{
"mcpServers": {
"codesurface": {
"command": "uvx",
"args": ["codesurface", "--project", "/path/to/your/src"]
}
}
}
Point --project at any directory containing supported source files (a Unity Assets/Scripts folder, a Spring Boot project, a .NET src/ tree, a Node.js/React project, a Python package, etc.). Languages are auto-detected.
Restart your AI tool and ask: "What methods does MyService have?"
CLAUDE.md Snippet
Add this to your project's CLAUDE.md (or equivalent instructions file). This step is important. Without it, the AI has the tools but won't know when to reach for them.
## Codebase API Lookup (codesurface MCP)
Use codesurface MCP tools BEFORE Grep, Glob, Read, or Task (subagents) for any class/method/field lookup. This applies to you AND any subagents you spawn.
| Tool | Use when | Example |
|------|----------|---------|
| `search` | Find APIs by keyword | `search("MergeService")` |
| `get_signature` | Need exact signature | `get_signature("TryMerge")` |
| `get_class` | See all members on a class | `get_class("BlastBoardModel")` |
| `get_stats` | Codebase overview | `get_stats()` |
Every result includes file path + line numbers. Use them for targeted reads:
- `File: Service.cs:32` → `Read("Service.cs", offset=32, limit=15)`
- `File: Converter.java:504-506` → `Read("Converter.java", offset=504, limit=10)`
Never read a full file when you have a line number. Only fall back to Grep/Read for implementation details (method bodies, control flow).
Tools
| Tool | Purpose | Example |
|---|---|---|
search |
Find APIs by keyword | "MergeService", "BlastBoard", "GridCoord" |
get_signature |
Exact signature by name or FQN | "TryMerge", "CampGame.Services.IMergeService.TryMerge" |
get_class |
Full class reference card with all public members | "BlastBoardModel" → all methods/fields/properties |
get_stats |
Overview of indexed codebase | File count, record counts, namespace breakdown |
reindex |
Incremental index update (mtime-based) | Only re-parses changed/new/deleted files. Also runs automatically on query misses |
search, get_signature, and get_class accept two optional filters:
file_path: scope results to a directory prefix or exact file (e.g."src/services/"or"src/services/MergeService.ts")include_tests: include test files in results (defaultfalse). Detects__tests__/,tests/,test/,*.test.*,*.spec.*,*_test.*,test_*
Tested On
| Project | Language | Files | Records | Time |
|---|---|---|---|---|
| vscode | TypeScript | 6,611 | 88,293 | 9.3s |
| Paper | Java | 2,909 | 33,973 | 2.3s |
| client-go | Go | 219 | 2,760 | 0.4s |
| langchain | Python | 1,880 | 12,418 | 1.1s |
| pydantic | Python | 365 | 9,648 | 0.3s |
| guava | Java | 891 | 8,377 | 2.4s |
| immich | TypeScript | 919 | 7,957 | 0.6s |
| fastapi | Python | 881 | 5,713 | 0.5s |
| ant-design | TypeScript | 2,947 | 5,452 | 0.9s |
| dify | TypeScript | 4,903 | 5,038 | 1.9s |
| crawlee-python | Python | 386 | 2,473 | 0.3s |
| flask | Python | 63 | 872 | <0.1s |
| cobra | Go | 15 | 249 | <0.1s |
| gin | Go | 41 | 574 | <0.1s |
| Unity game (private) | C# | 129 | 1,018 | 0.1s |
Line Numbers for Targeted Reads
Every record includes line_start and line_end (1-indexed). Multi-line declarations span the full signature:
[METHOD] com.google.common.base.Converter.from
Signature: static Converter<A, B> from(Function<...> forward, Function<...> backward)
File: Converter.java:504-506 ← multi-line signature
[METHOD] server.AlbumController.createAlbum
Signature: createAlbum(@Auth() auth: AuthDto, @Body() dto: CreateAlbumDto)
File: album.controller.ts:46 ← single-line
This lets AI agents do targeted reads instead of reading full files:
# Instead of reading the entire 600-line file:
Read("Converter.java") # 600 lines, ~12k tokens
# Read just the method + context:
Read("Converter.java", offset=504, limit=10) # 10 lines, ~200 tokens
Benchmarks
Measured across 5 real-world projects in 5 languages, each using a 10-step cross-cutting research workflow.

| Language | Project | Files | Records | MCP | Skilled | Naive | MCP vs Skilled |
|---|---|---|---|---|---|---|---|
| C# | Unity game | 129 | 1,034 | 1,021 | 4,453 | 11,825 | 77% fewer |
| TypeScript | immich | 694 | 8,344 | 1,451 | 4,500 | 14,550 | 68% fewer |
| Java | guava | 891 | 8,377 | 1,851 | 4,200 | 26,700 | 56% fewer |
| Go | gin | 38 | 534 | 1,791 | 2,770 | 15,300 | 35% fewer |
| Python | codesurface | 9 | 40 | 753 | 2,000 | 10,400 | 62% fewer |

Even with follow-up reads for implementation detail, the hybrid MCP + targeted Read approach uses 44% fewer tokens than a skilled Grep+Read agent and 87% fewer than a naive agent:

Per-question breakdown

See workflow-benchmark.md for the full step-by-step analysis across all languages.
Filtering What Gets Indexed
By default, codesurface skips common vendored, build, and VCS directories: node_modules, vendor, bin, obj, dist, build, target, .git, .venv, __pycache__, and a few dozen others. Git worktrees and submodules are also skipped.
To exclude additional paths:
Project-level (committed): create a .codesurfaceignore file at your project root with one glob per line.
generated/**
docs/**
**/*.pb.go
Per-instance (CLI): pass --exclude with comma-separated globs.
{
"command": "uvx",
"args": ["codesurface", "--project", "src", "--exclude", "generated/**,vendor/**"]
}
Other indexing flags:
--include-submodules: index git submodules (skipped by default)--language <name>: pin to a single parser (e.g.--language cpp) instead of auto-detecting
Multiple Projects
Each --project flag indexes one directory. To index multiple codebases, run separate instances with different server names:
{
"mcpServers": {
"codesurface-backend": {
"command": "uvx",
"args": ["codesurface", "--project", "/path/to/backend/src"]
},
"codesurface-frontend": {
"command": "uvx",
"args": ["codesurface", "--project", "/path/to/frontend/src"]
}
}
}
Each instance gets its own in-memory index and tools. The AI agent sees both and can query across projects.
Setup Details
Using pip install:
pip install codesurface
{
"mcpServers": {
"codesurface": {
"command": "codesurface",
"args": ["--project", "/path/to/your/src"]
}
}
}
codesurface/
├── src/codesurface/
│ ├── server.py # MCP server with 5 tools
│ ├── db.py # SQLite + FTS5 database layer
│ ├── filters.py # PathFilter (default exclusions, .codesurfaceignore, --exclude)
│ └── parsers/
│ ├── base.py # BaseParser ABC
│ ├── cpp.py # C++ header parser
│ ├── csharp.py # C# parser
│ ├── go.py # Go parser
│ ├── java.py # Java parser
│ ├── python_parser.py # Python parser
│ └── typescript.py # TypeScript/JavaScript parser
├── pyproject.toml
└── README.md
"No codebase indexed"
- Ensure
--projectpoints to a directory containing supported source files (.cs,.h,.hpp,.go,.java,.py,.ts,.tsx,.js,.jsx) - The server indexes at startup. Check stderr for
[codesurface] scanning N files...and[codesurface] done:lines
Server won't start
- Check Python version:
python --version(needs 3.10+) - Check
mcp[cli]is installed:pip install mcp[cli]
Stale results after editing source files
- The index auto-refreshes on query misses. If you add a new class and query it, the server reindexes and retries automatically
- You can also call
reindex()manually to force an incremental update
Contact
License
Perguntas sobre o MCP codesurface
Como adiciono o MCP codesurface ao Claude Code?
Execute claude mcp add codesurface -- uvx codesurface no seu terminal. Adicione --scope user para torná-lo disponível em todos os projetos.
Como adiciono o MCP codesurface ao Cursor?
Abra ~/.cursor/mcp.json e adicione o servidor em mcpServers, usando a configuração do Cursor mostrada na seção de instalação acima.
Quais ferramentas o MCP codesurface oferece?
Ele expõe 7 ferramentas, incluindo search, get_signature, get_class, get_stats, reindex.
Quais linguagens de programação o codesurface suporta?
Ele suporta C#, headers de C++, Go, Java, Python e arquivos TypeScript/JavaScript, detectando automaticamente as linguagens no diretório do projeto.
Como configuro o codesurface como um MCP server?
Adicione-o ao seu .mcp.json usando o comando uvx e aponte o argumento --project para o diretório que contém seus arquivos de origem.
Quais ferramentas MCP o codesurface expõe?
Ele fornece cinco ferramentas: search, get_signature, get_class, get_stats e reindex.
O codesurface mantém o índice atualizado quando os arquivos mudam?
Sim, o índice é atualizado automaticamente em caso de falha na consulta, e você pode chamar o reindex manualmente para uma atualização incremental baseada no mtime.
Posso excluir diretórios gerados ou vendored da indexação?
Sim, adicione globs a um arquivo .codesurfaceignore na raiz do projeto ou passe globs separados por vírgula com a flag --exclude.