mcp-code-context 3.5.2 → 3.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +3 -3
- package/HIRE_ME.md +234 -0
- package/README.md +433 -304
- package/SECURITY.md +14 -14
- package/SPONSORS.md +104 -0
- package/dist/src/core/engine.d.ts +1 -1
- package/dist/src/core/engine.js +1 -1
- package/dist/src/core/validator.d.ts +1 -1
- package/dist/src/core/validator.js +3 -3
- package/dist/src/core/validator.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js +2 -2
- package/dist/src/operations/compress.d.ts +1 -1
- package/dist/src/operations/compress.js +1 -1
- package/dist/src/operations/confirmationStore.d.ts +1 -1
- package/dist/src/operations/confirmationStore.js +1 -1
- package/dist/src/operations/read.d.ts +1 -1
- package/dist/src/operations/read.js +9 -1
- package/dist/src/operations/read.js.map +1 -1
- package/dist/src/operations/write.d.ts +2 -2
- package/dist/src/operations/write.js +2 -2
- package/dist/src/parsers/base.d.ts +1 -1
- package/dist/src/parsers/base.js +1 -1
- package/dist/src/parsers/dartTreeSitter.d.ts +1 -1
- package/dist/src/parsers/dartTreeSitter.js +1 -1
- package/dist/src/parsers/php.d.ts +1 -1
- package/dist/src/parsers/php.js +1 -1
- package/dist/src/parsers/python.d.ts +1 -1
- package/dist/src/parsers/python.js +1 -1
- package/dist/src/parsers/registry.d.ts +1 -1
- package/dist/src/parsers/registry.js +1 -1
- package/dist/src/parsers/typescript.d.ts +1 -1
- package/dist/src/parsers/typescript.js +1 -1
- package/dist/src/utils/auditLogger.d.ts +1 -1
- package/dist/src/utils/auditLogger.js +1 -1
- package/dist/src/utils/backupManager.d.ts +1 -1
- package/dist/src/utils/backupManager.js +1 -1
- package/dist/src/utils/constants.d.ts +1 -1
- package/dist/src/utils/constants.js +1 -1
- package/dist/src/utils/diff.d.ts +1 -1
- package/dist/src/utils/diff.js +1 -1
- package/dist/src/utils/fileLock.d.ts +1 -1
- package/dist/src/utils/fileLock.js +1 -1
- package/dist/src/utils/rateLimiter.d.ts +1 -1
- package/dist/src/utils/rateLimiter.js +1 -1
- package/dist/src/utils/safeRegex.d.ts +1 -1
- package/dist/src/utils/safeRegex.js +1 -1
- package/dist/src/utils/streaming.d.ts +1 -1
- package/dist/src/utils/streaming.js +1 -1
- package/dist/src/utils/telemetry.d.ts +1 -1
- package/dist/src/utils/telemetry.js +1 -1
- package/llms.txt +5 -5
- package/package.json +17 -2
- package/CHANGELOG_v3.2.0.md +0 -196
- package/CHANGELOG_v3.3.0.md +0 -266
package/README.md
CHANGED
|
@@ -1,304 +1,433 @@
|
|
|
1
|
-
# mcp-code-context
|
|
2
|
-
|
|
3
|
-
[](https://opensource.org/licenses/MIT)
|
|
4
|
-
[](https://opensource.org/licenses/MIT)
|
|
4
|
+
[](https://www.npmjs.com/package/mcp-code-context)
|
|
5
|
+
[](https://www.npmjs.com/package/mcp-code-context)
|
|
6
|
+
[]()
|
|
7
|
+
[]()
|
|
8
|
+
[](https://ko-fi.com/achatainga)
|
|
9
|
+
[](https://paypal.me/achatainga)
|
|
10
|
+
|
|
11
|
+
> MCP server with **Tree-sitter WASM parsers** for 100% AST accuracy. Zero native dependencies.
|
|
12
|
+
|
|
13
|
+
## 🚀 Quick Start (Claude Desktop)
|
|
14
|
+
|
|
15
|
+
1. **Install**: `npm install -g mcp-code-context`
|
|
16
|
+
2. **Configure**: Add to `claude_desktop_config.json`:
|
|
17
|
+
```json
|
|
18
|
+
{
|
|
19
|
+
"mcpServers": {
|
|
20
|
+
"code-context": {
|
|
21
|
+
"command": "npx",
|
|
22
|
+
"args": ["-y", "mcp-code-context"]
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
3. **Enjoy**: Use symbols like `@code-context` to map repos or edit code surgically.
|
|
28
|
+
|
|
29
|
+
**No build tools required** - Works on Windows/Mac/Linux without Visual Studio, Python, or node-gyp.
|
|
30
|
+
|
|
31
|
+
Works with **Claude Desktop**, **Cursor**, **Windsurf**, **GitHub Copilot**, **Amazon Q**, and any [Model Context Protocol](https://modelcontextprotocol.io/) compatible client.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## 💡 Why This Exists
|
|
36
|
+
|
|
37
|
+
This tool was born out of necessity in **Caracas, Venezuela 🇻🇪**, where economic limitations made every API token count. When you're choosing between groceries and Claude API credits, you learn to optimize fast.
|
|
38
|
+
|
|
39
|
+
What started as a personal script to compress context windows became a full MCP server when I realized others faced the same problem: **LLM APIs are expensive, and most tools waste tokens on boilerplate**.
|
|
40
|
+
|
|
41
|
+
If this tool saves you money or time, consider [supporting its development](#-support-this-project). Every contribution helps keep this project maintained and free for everyone.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## The Problem
|
|
46
|
+
|
|
47
|
+
LLMs working with code face two bottlenecks:
|
|
48
|
+
1. **Reading**: Sending raw source files wastes the context window on function bodies and boilerplate. A 500-line file might contain only 30 lines of *structural* information the LLM needs.
|
|
49
|
+
2. **Writing**: Rewriting entire files to change one function is error-prone, token-expensive, and risks corrupting unrelated code.
|
|
50
|
+
|
|
51
|
+
## The Solution
|
|
52
|
+
|
|
53
|
+
`mcp-code-context` provides **13 tools** — 6 for reading, 2 for cleanup, and 5 for writing — that operate at the **symbol level** (functions, classes, methods). Furthermore, tools support a `className` scope which correctly isolates identical symbol names in the same file (e.g. Flutter `build()` methods) to avoid reading or changing the wrong logic. Read tools extract structural skeletons. Write tools splice changes into the exact AST location.
|
|
54
|
+
|
|
55
|
+
| File | Original | Compressed | Reduction |
|
|
56
|
+
|------|----------|------------|-----------|
|
|
57
|
+
| PHP class (426 lines) | 426 | 60 | **85.9%** |
|
|
58
|
+
| Dart repository (230 lines) | 230 | 30 | **87.0%** |
|
|
59
|
+
| PHP config (68 lines) | 68 | 15 | **77.9%** |
|
|
60
|
+
|
|
61
|
+
## Reliability & Testing
|
|
62
|
+
|
|
63
|
+
Built to be robust and precise. Both read and write engines are tested against real-world, complex codebases (including nested generic types in Dart, complex interfaces in PHP, and multi-file rename operations) with a **100% test pass rate** across all languages and operations.
|
|
64
|
+
|
|
65
|
+
## Features
|
|
66
|
+
|
|
67
|
+
### Read
|
|
68
|
+
- 🌳 **AST-based compression** — Real Tree-sitter WASM parsers for TypeScript/JavaScript/Python/PHP/Dart. Zero regex-based parsing.
|
|
69
|
+
- 🔬 **Surgical symbol extraction** — Extract a single function, class, or method from a file by name. Use `className` to scope disambiguation (e.g., getting multiple `build()` methods in Dart).
|
|
70
|
+
- 💥 **Impact analysis** — Discover all files that depend on a given file before refactoring. Supports ES imports, CommonJS `require()`, Python imports, PHP `use`/`require_once`/`include`, and Dart imports.
|
|
71
|
+
- 📁 **Smart file walking** — Respects `.gitignore` and `.repomixignore` rules. Automatically excludes `node_modules`, `dist`, `vendor`, `.git`, etc.
|
|
72
|
+
- 📄 **Multi-format output** — XML (optimized for LLM consumption) or Markdown (human-readable).
|
|
73
|
+
|
|
74
|
+
### Write
|
|
75
|
+
- ✏️ **Surgical symbol replacement** — Replace a function, method, or class body without touching the rest of the file. Narrow down the target using the `className` parameter.
|
|
76
|
+
- ➕ **Precise code insertion** — Insert new code before/after a symbol, or inside a class at the start/end.
|
|
77
|
+
- 🔄 **Repository-wide rename** — Rename a symbol in its definition AND all files that import it, atomically.
|
|
78
|
+
- 🗑️ **Safe symbol removal** — Delete code with automatic dependency checking to prevent breakage.
|
|
79
|
+
- 🔍 **Mandatory dry-run flow** — Write tools return a preview diff and a `confirmationToken` by default. Changes are only applied after explicit confirmation.
|
|
80
|
+
- 💾 **Robust rolling backups** — Automatically keeps the last 5 versions of modified files in a hidden `.mcp-backups/` directory.
|
|
81
|
+
- ⏪ **Surgical rollback** — Revert files to any of the 5 previous states using the `rollback_file` tool.
|
|
82
|
+
- 🤖 **Fuzzy symbol matching** — When a symbol is not found, the server provides structured suggestions based on Levenshtein distance.
|
|
83
|
+
- 🔐 **Private symbol support** — Full support for `_` and `__` prefixed symbols in Dart and Python.
|
|
84
|
+
|
|
85
|
+
## Supported Languages
|
|
86
|
+
|
|
87
|
+
| Language | Read (Compress + Extract) | Write (Replace + Insert + Rename + Remove) | Import Analysis |
|
|
88
|
+
|----------|---------------------------|---------------------------------------------|------------------|
|
|
89
|
+
| TypeScript / JavaScript | ✅ AST (Tree-sitter WASM) | ✅ AST (Tree-sitter WASM) | ✅ |
|
|
90
|
+
| PHP | ✅ AST (Tree-sitter WASM) | ✅ AST + line-splice | ✅ |
|
|
91
|
+
| Dart | ✅ AST (Tree-sitter WASM) | ✅ AST + line-splice | ✅ |
|
|
92
|
+
| Python | ✅ AST (Tree-sitter WASM) | ✅ Indentation-aware | ✅ |
|
|
93
|
+
| Others (JSON, YAML, CSS, etc.) | Passthrough / truncation | — | — |
|
|
94
|
+
|
|
95
|
+
## ⚠️ Known Limitations
|
|
96
|
+
|
|
97
|
+
### `rename_symbol` Tool
|
|
98
|
+
|
|
99
|
+
**Dart and Python**: Cross-file rename is **NOT supported** for `.dart`, `.py`, and `.pyi` files.
|
|
100
|
+
|
|
101
|
+
- **Reason**: No AST parser available for safe cross-file refactoring
|
|
102
|
+
- **Risk**: Regex-based rename may corrupt strings, comments, or unrelated code
|
|
103
|
+
- **Recommendation**: Use IDE refactoring tools instead:
|
|
104
|
+
- **Dart**: VS Code with Dart extension (F2 key) or IntelliJ IDEA
|
|
105
|
+
- **Python**: PyCharm, VS Code with Pylance (F2 key)
|
|
106
|
+
- **Alternative**: Use `write_file_surgical` to rename within a single file
|
|
107
|
+
|
|
108
|
+
**TypeScript, JavaScript, PHP**: Fully supported with AST-aware renaming ✅
|
|
109
|
+
|
|
110
|
+
### `get_semantic_repo_map` Tool
|
|
111
|
+
|
|
112
|
+
- **Max files**: Limited to 500 files to prevent timeouts
|
|
113
|
+
- **Performance**: Synchronous I/O may take 10-30 seconds on large repositories
|
|
114
|
+
- **Recommendation**: Use `@folder` syntax to target specific directories
|
|
115
|
+
|
|
116
|
+
### General
|
|
117
|
+
|
|
118
|
+
- **Validation**: No automatic syntax checking after edits. Always review diffs carefully before confirming.
|
|
119
|
+
- **Backups**: 5-version rolling backup system. Use `rollback_file` if something goes wrong.
|
|
120
|
+
- **Large files**: Files >10MB are skipped for safety.
|
|
121
|
+
|
|
122
|
+
## Installation
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
# Global installation (recommended)
|
|
126
|
+
npm install -g mcp-code-context
|
|
127
|
+
|
|
128
|
+
# Or use directly with npx (no installation)
|
|
129
|
+
npx -y mcp-code-context
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**Note**: Unlike v2.x, this version uses **web-tree-sitter (WASM)** instead of native bindings. No Visual Studio, Python, or node-gyp required!
|
|
133
|
+
|
|
134
|
+
## Configuration
|
|
135
|
+
|
|
136
|
+
### Claude Desktop
|
|
137
|
+
|
|
138
|
+
Add to your `claude_desktop_config.json`:
|
|
139
|
+
|
|
140
|
+
```json
|
|
141
|
+
{
|
|
142
|
+
"mcpServers": {
|
|
143
|
+
"mcp-code-context": {
|
|
144
|
+
"command": "npx",
|
|
145
|
+
"args": ["-y", "mcp-code-context"]
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Cursor
|
|
152
|
+
|
|
153
|
+
Add to your Cursor MCP settings (`.cursor/mcp.json`):
|
|
154
|
+
|
|
155
|
+
```json
|
|
156
|
+
{
|
|
157
|
+
"mcpServers": {
|
|
158
|
+
"mcp-code-context": {
|
|
159
|
+
"command": "npx",
|
|
160
|
+
"args": ["-y", "mcp-code-context"]
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### Windsurf
|
|
167
|
+
|
|
168
|
+
Add to your Windsurf MCP config:
|
|
169
|
+
|
|
170
|
+
```json
|
|
171
|
+
{
|
|
172
|
+
"mcpServers": {
|
|
173
|
+
"mcp-code-context": {
|
|
174
|
+
"command": "npx",
|
|
175
|
+
"args": ["-y", "mcp-code-context"]
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### Amazon Q / Other MCP Clients
|
|
182
|
+
|
|
183
|
+
Any MCP-compatible client can use this server. The transport is **stdio** (JSON-RPC over stdin/stdout). Point your client to `npx -y mcp-code-context`.
|
|
184
|
+
|
|
185
|
+
## Tools
|
|
186
|
+
|
|
187
|
+
### Read Tools
|
|
188
|
+
|
|
189
|
+
#### 1. `get_semantic_repo_map`
|
|
190
|
+
Generate a compressed architectural overview of an entire repository.
|
|
191
|
+
- `directoryPath` (required) — Path to the repo root
|
|
192
|
+
- `format` (optional) — `"xml"` (default) or `"markdown"`
|
|
193
|
+
|
|
194
|
+
#### 2. `read_file_surgical`
|
|
195
|
+
Read a file, or extract only a specific named symbol. Returns structured suggestions if the symbol is missing.
|
|
196
|
+
- `filePath` (required) — Path to the source file
|
|
197
|
+
- `symbolName` (optional) — Name of a function, class, method, or type
|
|
198
|
+
- `className` (optional) — Scope the symbol to a specific class (to avoid duplicates)
|
|
199
|
+
|
|
200
|
+
#### 3. `analyze_impact`
|
|
201
|
+
Find all files that depend on a given file.
|
|
202
|
+
- `filePath` (required) — Path to the file being modified
|
|
203
|
+
- `rootDir` (optional) — Repository root (auto-detected)
|
|
204
|
+
|
|
205
|
+
#### 4. `read_file_lines`
|
|
206
|
+
Read specific line ranges from a file without loading the entire content. More efficient than `read_file_surgical` for small fragments.
|
|
207
|
+
- `filePath` (required) — Path to the source file
|
|
208
|
+
- `startLine` (optional) — Starting line number (1-indexed)
|
|
209
|
+
- `endLine` (optional) — Ending line number (1-indexed)
|
|
210
|
+
- `aroundPattern` (optional) — Search pattern to find and return surrounding lines
|
|
211
|
+
- `contextLines` (optional) — Number of lines before/after pattern (default: 5)
|
|
212
|
+
|
|
213
|
+
#### 5. `search_code_pattern`
|
|
214
|
+
Search for code patterns across multiple files with context. Respects `.gitignore` rules.
|
|
215
|
+
- `rootDir` (required) — Repository root directory
|
|
216
|
+
- `pattern` (required) — Regular expression pattern to search
|
|
217
|
+
- `fileExtensions` (optional) — Array of extensions to search (e.g., `[".ts", ".dart"]`)
|
|
218
|
+
- `excludeDirs` (optional) — Directories to exclude (default: `["node_modules", "dist", "build"]`)
|
|
219
|
+
- `showContext` (optional) — Include surrounding lines (default: true)
|
|
220
|
+
- `contextLines` (optional) — Number of context lines (default: 3)
|
|
221
|
+
- `maxResults` (optional) — Maximum matches to return (default: 50)
|
|
222
|
+
|
|
223
|
+
#### 6. `rollback_file`
|
|
224
|
+
Surgically restore a file to a previous state from the automated backup system.
|
|
225
|
+
- `filePath` (required) — Path to the file to restore
|
|
226
|
+
- `steps` (optional) — Number of versions to go back (1-5, default: 1)
|
|
227
|
+
|
|
228
|
+
#### 7. `clean_backups`
|
|
229
|
+
Remove all backup files for a project to keep the working directory clean.
|
|
230
|
+
- `projectRoot` (required) — Absolute path to the project root
|
|
231
|
+
|
|
232
|
+
**Note:** Backups are stored centrally at `[project-root]/.mcp-backups/` to keep your project organized.
|
|
233
|
+
|
|
234
|
+
### Write Tools (Two-Phase Workflow)
|
|
235
|
+
|
|
236
|
+
All write tools follow a **Two-Phase Workflow**:
|
|
237
|
+
1. **Call without token**: Returns a unified `diff` and a `confirmationToken`.
|
|
238
|
+
2. **Call with token**: Set `confirm: true` and provide the token to apply the changes.
|
|
239
|
+
|
|
240
|
+
#### 8. `write_file_surgical`
|
|
241
|
+
Replace the full source code of a named symbol in a file.
|
|
242
|
+
- `filePath` (required) — Path to the file
|
|
243
|
+
- `symbolName` (required) — Symbol to replace
|
|
244
|
+
- `newContent` (required) — Replacement code (signature + body)
|
|
245
|
+
- `confirmationToken` (optional) — Token from Phase 1 to apply changes
|
|
246
|
+
- `confirm` (optional) — Set to `true` to apply
|
|
247
|
+
- `className` (optional) — Scope the symbol to a specific class
|
|
248
|
+
|
|
249
|
+
#### 9. `insert_symbol`
|
|
250
|
+
Insert new code at a precise location relative to an existing symbol.
|
|
251
|
+
- `filePath` (required) — Path to the file
|
|
252
|
+
- `code` (required) — Code to insert
|
|
253
|
+
- `anchorSymbol` (optional) — Symbol to position relative to
|
|
254
|
+
- `position` (optional) — `"before"`, `"after"`, `"inside_start"`, `"inside_end"`
|
|
255
|
+
- `className` (optional) — Scope the anchor to a specific class
|
|
256
|
+
- `confirmationToken`, `confirm` (optional)
|
|
257
|
+
|
|
258
|
+
#### 10. `rename_symbol`
|
|
259
|
+
Rename a symbol across the entire repository (definition + all usages).
|
|
260
|
+
- `filePath` (required) — File where the symbol is defined
|
|
261
|
+
- `oldName` (required) — Current name
|
|
262
|
+
- `newName` (required) — New name
|
|
263
|
+
- `rootDir` (optional) — Repository root
|
|
264
|
+
- `confirmationToken`, `confirm` (optional)
|
|
265
|
+
|
|
266
|
+
#### 11. `remove_symbol`
|
|
267
|
+
Safely remove a symbol from a file with dependency checking.
|
|
268
|
+
- `filePath` (required) — Path to the file
|
|
269
|
+
- `symbolName` (required) — Symbol to remove
|
|
270
|
+
- `className` (optional) — Scope the symbol to a specific class
|
|
271
|
+
- `force` (optional) — Skip dependency check
|
|
272
|
+
- `confirmationToken`, `confirm` (optional)
|
|
273
|
+
|
|
274
|
+
## Recommended Workflow
|
|
275
|
+
|
|
276
|
+
1. **Understand** → `get_semantic_repo_map` to see the architecture
|
|
277
|
+
2. **Read** → `read_file_surgical` with symbol name for specific implementations
|
|
278
|
+
3. **Assess** → `analyze_impact` before modifying shared files
|
|
279
|
+
4. **Edit (Preview)** → Call write tools to generate a `diff` and `confirmationToken`
|
|
280
|
+
5. **Confirm** → Call the same write tool with the token and `confirm: true` to apply
|
|
281
|
+
6. **Recovery** → Use `rollback_file` if something goes wrong after confirmation
|
|
282
|
+
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
## 💰 Support This Project
|
|
286
|
+
|
|
287
|
+
### Why Support?
|
|
288
|
+
|
|
289
|
+
This tool was born in **Caracas, Venezuela 🇻🇪**, where economic limitations mean every API token counts. What started as a personal script to save money on Claude API became a full MCP server when I realized others faced the same problem.
|
|
290
|
+
|
|
291
|
+
**Current Reality**:
|
|
292
|
+
- ⏰ ~10 hours/week of maintenance
|
|
293
|
+
- 💵 ~$20/month in costs (npm, testing, domain)
|
|
294
|
+
- 🆓 100% free and open source (always will be)
|
|
295
|
+
|
|
296
|
+
If this tool saves you time or money, consider supporting its development.
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
### 💳 Ways to Support
|
|
301
|
+
|
|
302
|
+
#### 🔹 One-Time Donation
|
|
303
|
+
|
|
304
|
+
**Ko-fi** (PayPal + Cards, 0% fees)
|
|
305
|
+
[ko-fi.com/achatainga](https://ko-fi.com/achatainga)
|
|
306
|
+
|
|
307
|
+
**PayPal** (Direct)
|
|
308
|
+
[paypal.me/achatainga](https://paypal.me/achatainga)
|
|
309
|
+
|
|
310
|
+
**Binance (USDT)** (Crypto, lowest fees)
|
|
311
|
+
- **TRC20/ERC20**: `0xa68d53f7853ce0175eb96aaad4a30c068ca96444`
|
|
312
|
+
- **Binance Pay ID**: `367669339`
|
|
313
|
+
|
|
314
|
+
*Recommended: TRC20 for lower gas fees*
|
|
315
|
+
|
|
316
|
+
#### Suggested Amounts:
|
|
317
|
+
- ☕ **$5** - A coffee (1 hour of development)
|
|
318
|
+
- 🍕 **$25** - A pizza (testing a new language)
|
|
319
|
+
- 🚀 **$100** - Rocket fuel (major feature development)
|
|
320
|
+
|
|
321
|
+
---
|
|
322
|
+
|
|
323
|
+
#### 🔹 Recurring Support
|
|
324
|
+
|
|
325
|
+
**Ko-fi Membership**
|
|
326
|
+
[ko-fi.com/achatainga/tiers](https://ko-fi.com/achatainga/tiers)
|
|
327
|
+
|
|
328
|
+
Monthly tiers:
|
|
329
|
+
- **$5/month** - Supporter (name in SPONSORS.md)
|
|
330
|
+
- **$25/month** - Contributor (priority support, early access)
|
|
331
|
+
- **$100/month** - Sponsor (feature requests, 1-on-1 consultation)
|
|
332
|
+
|
|
333
|
+
---
|
|
334
|
+
|
|
335
|
+
#### 🔹 Hire Me
|
|
336
|
+
|
|
337
|
+
Need custom MCP tools or AI integrations?
|
|
338
|
+
|
|
339
|
+
- 💼 **Available for**: Freelance contracts
|
|
340
|
+
- 🌐 **Location**: Caracas, Venezuela (Remote)
|
|
341
|
+
- 💻 **Skills**: TypeScript, Node.js, MCP, AI/LLM integrations
|
|
342
|
+
- 💵 **Rate**: $50-75/hour
|
|
343
|
+
|
|
344
|
+
📧 **Contact**: a.chataing.a@gmail.com
|
|
345
|
+
📄 **Details**: [HIRE_ME.md](HIRE_ME.md)
|
|
346
|
+
|
|
347
|
+
---
|
|
348
|
+
|
|
349
|
+
### 📊 Transparency
|
|
350
|
+
|
|
351
|
+
I believe in radical transparency:
|
|
352
|
+
|
|
353
|
+
**Current Status**:
|
|
354
|
+
- 💰 Donations received: $0
|
|
355
|
+
- 💸 Expenses: $20/month (npm, testing)
|
|
356
|
+
- ⏰ Time invested: ~10 hours/week
|
|
357
|
+
- 📦 Downloads: 10,000+/month
|
|
358
|
+
|
|
359
|
+
*(Updated monthly)*
|
|
360
|
+
|
|
361
|
+
---
|
|
362
|
+
|
|
363
|
+
### 🏆 Hall of Fame
|
|
364
|
+
|
|
365
|
+
Thank you to these amazing supporters:
|
|
366
|
+
|
|
367
|
+
*(No sponsors yet - be the first!)*
|
|
368
|
+
|
|
369
|
+
See full list: [SPONSORS.md](SPONSORS.md)
|
|
370
|
+
|
|
371
|
+
---
|
|
372
|
+
|
|
373
|
+
### ❤️ Non-Financial Support
|
|
374
|
+
|
|
375
|
+
Can't donate? No problem! You can still help:
|
|
376
|
+
|
|
377
|
+
- ⭐ Star the repo on GitHub
|
|
378
|
+
- 🐛 Report bugs or suggest features
|
|
379
|
+
- 📝 Improve documentation
|
|
380
|
+
- 🗣️ Share with others who might benefit
|
|
381
|
+
- 💬 Join discussions and help other users
|
|
382
|
+
|
|
383
|
+
Every contribution matters, financial or not.
|
|
384
|
+
|
|
385
|
+
---
|
|
386
|
+
|
|
387
|
+
## Development
|
|
388
|
+
|
|
389
|
+
```bash
|
|
390
|
+
# Build
|
|
391
|
+
npm run build
|
|
392
|
+
|
|
393
|
+
# Run tests
|
|
394
|
+
npm test
|
|
395
|
+
|
|
396
|
+
# Development (build + start)
|
|
397
|
+
npm run dev
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
## Technical Details
|
|
401
|
+
|
|
402
|
+
- **Transport:** stdio (JSON-RPC over stdin/stdout)
|
|
403
|
+
- **Runtime:** Node.js >= 18
|
|
404
|
+
- **Protocol:** [Model Context Protocol](https://modelcontextprotocol.io/)
|
|
405
|
+
- **AST Engines:** web-tree-sitter@0.25.1 (WASM) for TypeScript/JS/Python/PHP/Dart
|
|
406
|
+
- **Language Grammars:** tree-sitter-wasms@0.1.13 (ABI v15)
|
|
407
|
+
- **Ignore Engine:** `ignore` npm package (full .gitignore spec support)
|
|
408
|
+
- **Safety Features:** Mandatory two-phase confirmation, rolling 5-version backups, fuzzy matching, dependency checking, surgical restoration.
|
|
409
|
+
- **Portability:** 100% WASM - no native dependencies, works on all platforms
|
|
410
|
+
|
|
411
|
+
## Contributing
|
|
412
|
+
|
|
413
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
414
|
+
|
|
415
|
+
## Security
|
|
416
|
+
|
|
417
|
+
See [SECURITY.md](SECURITY.md) for security policies and reporting vulnerabilities.
|
|
418
|
+
|
|
419
|
+
## Troubleshooting
|
|
420
|
+
|
|
421
|
+
See [TROUBLESHOOTING.md](TROUBLESHOOTING.md) for common issues and solutions.
|
|
422
|
+
|
|
423
|
+
## Changelog
|
|
424
|
+
|
|
425
|
+
See [CHANGELOG.md](CHANGELOG.md) for version history.
|
|
426
|
+
|
|
427
|
+
## License
|
|
428
|
+
|
|
429
|
+
[MIT](LICENSE)
|
|
430
|
+
|
|
431
|
+
---
|
|
432
|
+
|
|
433
|
+
**Built with ❤️ from Caracas, Venezuela 🇻🇪**
|