Serveur MCP codesurface
✓ VérifiéIndexe l'API publique d'une base de code et fournit des résultats de recherche compacts, des signatures et des recherches de classes aux clients IA via des outils MCP.
Aussi connu sous Codeturion/codesurface
- Étoiles
- 21
- Outils
- 7
- Téléchargements, 30 jours
- 275
- Dernière version
- 0.8.0
- Dernier commit
- 28 juil. 2026
- Licence
- MIT
Qu'est-ce que codesurface MCP ?
codesurface est un serveur MCP. Indexe l'API publique d'une base de code et fournit des résultats de recherche compacts, des signatures et des recherches de classes aux clients IA via des outils MCP. Il expose 7 outils, comme search, get_signature, get_class.
Résumé généré à partir du README du projet
À propos du MCP server codesurface
codesurface permet d'indexer l'API publique d'une base de code afin de fournir des résultats de recherche compacts pour les agents IA. Il analyse les fichiers sources pour en extraire les classes, méthodes, propriétés, champs et événements, puis sert ces données via des outils spécialisés. Cette approche aide à réduire la consommation de tokens par rapport à la lecture de fichiers sources entiers en fournissant des informations ciblées comme les signatures et les membres de classe.
Les développeurs peuvent utiliser ce serveur avec Claude Code, Cursor, Windsurf ou tout client compatible MCP. Il prend en charge plusieurs langages, notamment C#, C++, Go, Java, Python et TypeScript/JavaScript. La configuration consiste à pointer l'outil vers un répertoire de projet à l'aide de l'argument --project via uvx ou pip. Le serveur détecte automatiquement les langages et ignore les répertoires courants comme node_modules ou .git pour maintenir l'efficacité de l'index.
Pour garantir la précision, le serveur propose des outils pour la recherche par mot-clé, la récupération de signatures exactes et la consultation de listes complètes de membres de classe. Il inclut également une commande reindex pour les mises à jour incrémentielles lorsque les fichiers changent. En fournissant des numéros de ligne spécifiques pour chaque enregistrement, il permet aux clients IA d'effectuer des lectures ciblées uniquement sur les segments de code nécessaires.
Ce que vous pouvez faire avec
- 1Localiser des membres d'API spécifiquesUn agent IA peut trouver un service ou une classe spécifique en recherchant un mot-clé dans la base de code.
- 2Récupérer des signatures de méthode exactesUn développeur peut demander à l'IA de trouver les paramètres exacts et les types de retour d'une fonction spécifique.
- 3Inspecter les structures de classeVous pouvez demander une liste complète de tous les membres publics appartenant à une classe particulière.
- 4Effectuer des lectures de code cibléesAu lieu de lire un fichier entier, l'IA peut utiliser les numéros de ligne de l'index pour ne lire que les lignes pertinentes.
Extrait du README du projet. Chaque cas d'utilisation est vérifié par rapport à une citation du document.
Comment installer codesurface MCP
Formats vérifiés le 10 nov. 2026Ajouter à CursorAjouter à GooseInstaller codesurface MCP dans Claude Code
$ claude mcp add codesurface -- uvx codesurfaceInstaller codesurface MCP dans Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"codesurface": {
"command": "uvx",
"args": [
"codesurface"
]
}
}
}Installer codesurface MCP dans VS Code
.vscode/mcp.json
{
"servers": {
"codesurface": {
"type": "stdio",
"command": "uvx",
"args": [
"codesurface"
]
}
}
}Installer codesurface MCP dans VS Code CLI
$ code --add-mcp '{"name":"codesurface","type":"stdio","command":"uvx","args":["codesurface"]}'Installer codesurface MCP dans Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"codesurface": {
"command": "uvx",
"args": [
"codesurface"
]
}
}
}Installer codesurface MCP dans Codex
$ codex mcp add codesurface -- uvx codesurfaceInstaller codesurface MCP dans Codex config.toml
~/.codex/config.toml
[mcp_servers.codesurface] command = "uvx" args = ["codesurface"]
Installer codesurface MCP dans Gemini CLI
$ gemini mcp add -s user codesurface uvx -- codesurfaceInstaller codesurface MCP dans Gemini settings.json
~/.gemini/settings.json
{
"mcpServers": {
"codesurface": {
"command": "uvx",
"args": [
"codesurface"
]
}
}
}Outils MCP codesurface 7
Détectés depuis le READMEsearchget_signatureget_classget_statsreindexfile_pathinclude_tests
| search | — | |
| get_signature | — | |
| get_class | — | |
| get_stats | — | |
| reindex | — | |
| file_path | — | |
| include_tests | — |
Vérifications automatisées
Exécuté le 14 nov. 2026Rapport complet →A passé nos vérifications automatisées. Il ne s'agit pas d'un audit de sécurité : lisez le code et donnez au serveur l'accès le plus restreint dont il a besoin. Fonctionnement des vérifications
- Dépôt source lié et accessiblecodeturion/codesurface is public and reachablegithub.com/codeturion/codesurface ↗Réussi
- Le nom du package correspond au dépôt sourcecodesurface names codeturion/codesurface as sourcepypi.org/project/codesurface/ ↗Réussi
- Provenance du build (attestation Sigstore)Sigstore attestation for codesurfacepypi.org/project/codesurface/ ↗Réussi
- Licence open source (OSI)MITspdx.org/licenses/MIT.html ↗Réussi
- Commit ou version publiée au cours de l'année écouléeLast commit or release 2026-07-28github.com/codeturion/codesurface ↗Réussi
- OpenSSF ScorecardNon vérifié
- Nom du package non proche d'un package populaireNo popular package one edit away from codesurfaceRéussi
- Aucun avis critique dans le package ou ses dépendances37 resolved dependencies checked; no critical advisoryosv.dev ↗Réussi
- Aucune instruction cachée destinée au modèle7 tool descriptions and the README read; no override phrases, credential paths or hidden charactersRéussi
- Les outils destructifs sont étiquetésNo tool named like delete, drop or execRéussi
- Le point de terminaison distant répond à la poignée de main MCPNon vérifié
README
Voir sur 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
Questions sur codesurface MCP
Comment ajouter codesurface MCP à Claude Code ?
Exécutez claude mcp add codesurface -- uvx codesurface dans votre terminal. Ajoutez --scope user pour le rendre disponible dans tous les projets.
Comment ajouter codesurface MCP à Cursor ?
Ouvrez ~/.cursor/mcp.json et ajoutez le serveur sous mcpServers, avec la configuration Cursor indiquée dans la section d'installation ci-dessus.
Quels outils codesurface MCP fournit-il ?
Il expose 7 outils, dont search, get_signature, get_class, get_stats, reindex.
Quels langages de programmation codesurface prend-il en charge ?
Il prend en charge C#, les headers C++, Go, Java, Python et les fichiers TypeScript/JavaScript, en détectant automatiquement les langages dans le répertoire du projet.
Comment configurer codesurface en tant que MCP server ?
Ajoutez-le à votre fichier .mcp.json avec la commande uvx et pointez l'argument --project vers le répertoire contenant vos fichiers sources.
Quels outils MCP codesurface expose-t-il ?
Il fournit cinq outils : search, get_signature, get_class, get_stats et reindex.
Est-ce que codesurface maintient l'index à jour lorsque les fichiers changent ?
Oui, l'index se rafraîchit automatiquement en cas d'échec de requête, et vous pouvez appeler reindex manuellement pour une mise à jour incrémentielle basée sur l'mtime.
Puis-je exclure des répertoires générés ou vendors de l'indexation ?
Oui, ajoutez des patterns glob à un fichier .codesurfaceignore à la racine du projet ou passez des patterns séparés par des virgules avec le flag --exclude.