Skip to content

Commit d9bc65c

Browse files
committed
Bump to v0.3.0: update README for multi-language support
- Update tagline, quick start, troubleshooting for C#/Python/TypeScript - Add project structure showing parsers/ directory - Add Tested On table with 6 real-world projects
1 parent c5b6167 commit d9bc65c

2 files changed

Lines changed: 29 additions & 10 deletions

File tree

README.md

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@
66
[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
77
[![Blog Post](https://img.shields.io/badge/Blog-Benchmark%20Write--up-blue)](https://www.codeturion.me/blog/reducing-llm-agent-hallucinations-through-constrained-api-retrieval)
88

9-
**MCP server that indexes a C# codebase's public API at startup and serves it via compact tool responses — saving tokens vs reading source files.**
9+
**MCP server that indexes your codebase's public API at startup and serves it via compact tool responses — saving tokens vs reading source files.**
1010

11-
Parses all `.cs` 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.
11+
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.
12+
13+
**Supported languages:** C# (`.cs`), Python (`.py`), TypeScript/TSX (`.ts`, `.tsx`)
1214

1315
## Quick Start
1416

@@ -29,7 +31,7 @@ Then add to your `.mcp.json`:
2931
}
3032
```
3133

32-
Point `--project` at any directory containing `.cs` files — a Unity `Assets/Scripts` folder, a .NET `src/` tree, a Godot C# project, etc.
34+
Point `--project` at any directory containing supported source files — a Unity `Assets/Scripts` folder, a .NET `src/` tree, a Node.js/React project, a Python package, etc. Languages are auto-detected.
3335

3436
Restart your AI tool and ask: *"What methods does MyService have?"*
3537

@@ -43,6 +45,19 @@ Restart your AI tool and ask: *"What methods does MyService have?"*
4345
| `get_stats` | Overview of indexed codebase | File count, record counts, namespace breakdown |
4446
| `reindex` | Incremental index update (mtime-based) | Only re-parses changed/new/deleted files |
4547

48+
## Tested On
49+
50+
| Project | Language | Files | Records | Time |
51+
|---------|----------|-------|---------|------|
52+
| [immich](https://github.com/immich-app/immich) | TypeScript | 919 | 7,957 | 0.6s |
53+
| [ant-design](https://github.com/ant-design/ant-design) | TypeScript | 2,947 | 5,452 | 0.9s |
54+
| [dify](https://github.com/langgenius/dify) | TypeScript | 4,903 | 5,038 | 1.9s |
55+
| [vscode](https://github.com/microsoft/vscode) | TypeScript | 6,611 | 88,293 | 9.3s |
56+
| Unity game (private) | C# | 129 | 1,018 | 0.1s |
57+
| codesurface (itself) | Python | 7 | 72 | <0.1s |
58+
59+
Zero duplicate FQNs across all projects.
60+
4661
## Benchmarks
4762

4863
Measured against a real Unity game project (129 files, 1,018 API records) across a 10-step cross-cutting research workflow.
@@ -106,7 +121,7 @@ Use the `codesurface` MCP tools to look up your project's classes, methods, prop
106121
| Need exact method signature | `get_signature` | `get_signature("TryMerge")` |
107122
| Want all members on a class | `get_class` | `get_class("BlastBoardModel")` |
108123
| Overview of indexed codebase | `get_stats` | `get_stats()` |
109-
| After creating/deleting C# files | `reindex` | `reindex()` |
124+
| After creating/deleting source files | `reindex` | `reindex()` |
110125
```
111126

112127
</details>
@@ -117,9 +132,13 @@ Use the `codesurface` MCP tools to look up your project's classes, methods, prop
117132
```
118133
codesurface/
119134
├── src/codesurface/
120-
│ ├── server.py # MCP server — 5 tools
121-
│ ├── db.py # SQLite + FTS5 database layer
122-
│ └── cs_parser.py # C# public API parser
135+
│ ├── server.py # MCP server — 5 tools
136+
│ ├── db.py # SQLite + FTS5 database layer
137+
│ └── parsers/
138+
│ ├── base.py # BaseParser ABC
139+
│ ├── csharp.py # C# parser
140+
│ ├── python_parser.py # Python parser
141+
│ └── typescript.py # TypeScript/TSX parser
123142
├── pyproject.toml
124143
└── README.md
125144
```
@@ -130,14 +149,14 @@ codesurface/
130149
<summary>Troubleshooting</summary>
131150

132151
**"No codebase indexed"**
133-
- Ensure `--project` points to a directory containing `.cs` files
152+
- Ensure `--project` points to a directory containing supported source files (`.cs`, `.py`, `.ts`, `.tsx`)
134153
- The server indexes at startup — check stderr for the "Indexed N records" message
135154

136155
**Server won't start**
137156
- Check Python version: `python --version` (needs 3.10+)
138157
- Check `mcp[cli]` is installed: `pip install mcp[cli]`
139158

140-
**Stale results after editing C# files**
159+
**Stale results after editing source files**
141160
- Call `reindex()` — only re-parses files whose modification time changed, fast even on large codebases
142161

143162
</details>

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
44

55
[project]
66
name = "codesurface"
7-
version = "0.2.0"
7+
version = "0.3.0"
88
description = "MCP server that indexes a codebase's public API at startup and serves it via compact tool responses. Pluggable parsers for C#, TypeScript, Python, and more."
99
readme = "README.md"
1010
license = {file = "LICENSE"}

0 commit comments

Comments
 (0)