mcp-code-indexer 3.0.3__tar.gz → 3.1.2__tar.gz
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.
- {mcp_code_indexer-3.0.3/src/mcp_code_indexer.egg-info → mcp_code_indexer-3.1.2}/PKG-INFO +10 -16
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/README.md +9 -15
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/docs/api-reference.md +35 -145
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/pyproject.toml +1 -1
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/src/mcp_code_indexer/database/database.py +13 -90
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/src/mcp_code_indexer/database/models.py +2 -4
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/src/mcp_code_indexer/git_hook_handler.py +6 -44
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/src/mcp_code_indexer/logging_config.py +1 -1
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/src/mcp_code_indexer/main.py +0 -9
- mcp_code_indexer-3.1.2/src/mcp_code_indexer/migrations/005_remove_git_remotes.sql +41 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/src/mcp_code_indexer/server/mcp_server.py +23 -97
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2/src/mcp_code_indexer.egg-info}/PKG-INFO +10 -16
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/src/mcp_code_indexer.egg-info/SOURCES.txt +1 -1
- mcp_code_indexer-3.0.3/src/mcp_code_indexer/merge_handler.py +0 -386
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/LICENSE +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/MANIFEST.in +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/docs/architecture.md +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/docs/configuration.md +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/docs/contributing.md +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/docs/database-resilience.md +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/docs/git-hook-setup.md +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/docs/monitoring.md +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/docs/performance-tuning.md +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/requirements.txt +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/setup.cfg +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/setup.py +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/src/mcp_code_indexer/__init__.py +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/src/mcp_code_indexer/__main__.py +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/src/mcp_code_indexer/ask_handler.py +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/src/mcp_code_indexer/claude_api_handler.py +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/src/mcp_code_indexer/cleanup_manager.py +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/src/mcp_code_indexer/data/stop_words_english.txt +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/src/mcp_code_indexer/database/__init__.py +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/src/mcp_code_indexer/database/connection_health.py +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/src/mcp_code_indexer/database/exceptions.py +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/src/mcp_code_indexer/database/retry_executor.py +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/src/mcp_code_indexer/deepask_handler.py +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/src/mcp_code_indexer/error_handler.py +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/src/mcp_code_indexer/file_scanner.py +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/src/mcp_code_indexer/middleware/__init__.py +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/src/mcp_code_indexer/middleware/error_middleware.py +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/src/mcp_code_indexer/migrations/001_initial.sql +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/src/mcp_code_indexer/migrations/002_performance_indexes.sql +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/src/mcp_code_indexer/migrations/003_project_overviews.sql +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/src/mcp_code_indexer/migrations/004_remove_branch_dependency.sql +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/src/mcp_code_indexer/query_preprocessor.py +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/src/mcp_code_indexer/server/__init__.py +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/src/mcp_code_indexer/tiktoken_cache/9b5ad71b2ce5302211f9c61530b329a4922fc6a4 +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/src/mcp_code_indexer/token_counter.py +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/src/mcp_code_indexer/tools/__init__.py +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/src/mcp_code_indexer.egg-info/dependency_links.txt +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/src/mcp_code_indexer.egg-info/entry_points.txt +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/src/mcp_code_indexer.egg-info/requires.txt +0 -0
- {mcp_code_indexer-3.0.3 → mcp_code_indexer-3.1.2}/src/mcp_code_indexer.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: mcp-code-indexer
|
3
|
-
Version: 3.
|
3
|
+
Version: 3.1.2
|
4
4
|
Summary: MCP server that tracks file descriptions across codebases, enabling AI agents to efficiently navigate and understand code through searchable summaries and token-aware overviews.
|
5
5
|
Author: MCP Code Indexer Contributors
|
6
6
|
Maintainer: MCP Code Indexer Contributors
|
@@ -59,8 +59,8 @@ Dynamic: requires-python
|
|
59
59
|
|
60
60
|
# MCP Code Indexer 🚀
|
61
61
|
|
62
|
-
[](https://badge.fury.io/py/mcp-code-indexer)
|
63
|
+
[](https://pypi.org/project/mcp-code-indexer/)
|
64
64
|
[](https://opensource.org/licenses/MIT)
|
65
65
|
|
66
66
|
A production-ready **Model Context Protocol (MCP) server** that revolutionizes how AI agents navigate and understand codebases. Built for high-concurrency environments with advanced database resilience, the server provides instant access to intelligent descriptions, semantic search, and context-aware recommendations while maintaining 800+ writes/sec throughput.
|
@@ -72,8 +72,7 @@ The MCP Code Indexer solves a critical problem for AI agents working with large
|
|
72
72
|
- **Query file purposes** instantly with natural language descriptions
|
73
73
|
- **Search across codebases** using full-text search
|
74
74
|
- **Get intelligent recommendations** based on codebase size (overview vs search)
|
75
|
-
- **
|
76
|
-
- **Inherit descriptions** from upstream repositories automatically
|
75
|
+
- **Generate condensed overviews** for project understanding
|
77
76
|
|
78
77
|
Perfect for AI-powered code review, refactoring tools, documentation generation, and codebase analysis workflows.
|
79
78
|
|
@@ -243,7 +242,6 @@ The server provides **12 powerful MCP tools** for intelligent codebase managemen
|
|
243
242
|
### 🔍 For Advanced Users: Search & Discovery
|
244
243
|
- **`get_all_descriptions`** - Complete hierarchical project structure
|
245
244
|
- **`get_word_frequency`** - Technical vocabulary analysis with stop-word filtering
|
246
|
-
- **`merge_branch_descriptions`** - Two-phase merge with conflict resolution
|
247
245
|
- **`update_codebase_overview`** - Create comprehensive codebase documentation
|
248
246
|
|
249
247
|
### 🏥 For System Monitoring: Health & Performance
|
@@ -253,7 +251,7 @@ The server provides **12 powerful MCP tools** for intelligent codebase managemen
|
|
253
251
|
|
254
252
|
## 🔗 Git Hook Integration
|
255
253
|
|
256
|
-
Keep your codebase documentation automatically synchronized with automated analysis on every commit
|
254
|
+
Keep your codebase documentation automatically synchronized with automated analysis on every commit:
|
257
255
|
|
258
256
|
```bash
|
259
257
|
# Analyze current staged changes
|
@@ -396,8 +394,7 @@ async def analyze_codebase(project_path):
|
|
396
394
|
# Check if codebase is large
|
397
395
|
size_info = await mcp_client.call_tool("check_codebase_size", {
|
398
396
|
"projectName": "my-project",
|
399
|
-
"folderPath": project_path
|
400
|
-
"branch": "main"
|
397
|
+
"folderPath": project_path
|
401
398
|
})
|
402
399
|
|
403
400
|
if size_info["isLarge"]:
|
@@ -405,15 +402,13 @@ async def analyze_codebase(project_path):
|
|
405
402
|
results = await mcp_client.call_tool("search_descriptions", {
|
406
403
|
"projectName": "my-project",
|
407
404
|
"folderPath": project_path,
|
408
|
-
"branch": "main",
|
409
405
|
"query": "authentication logic"
|
410
406
|
})
|
411
407
|
else:
|
412
408
|
# Get full overview for smaller projects
|
413
409
|
overview = await mcp_client.call_tool("get_codebase_overview", {
|
414
410
|
"projectName": "my-project",
|
415
|
-
"folderPath": project_path
|
416
|
-
"branch": "main"
|
411
|
+
"folderPath": project_path
|
417
412
|
})
|
418
413
|
```
|
419
414
|
|
@@ -432,8 +427,7 @@ async def analyze_codebase(project_path):
|
|
432
427
|
# Find files without descriptions
|
433
428
|
missing = await client.call_tool('find_missing_descriptions', {
|
434
429
|
'projectName': '${{ github.repository }}',
|
435
|
-
'folderPath': '.'
|
436
|
-
'branch': '${{ github.ref_name }}'
|
430
|
+
'folderPath': '.'
|
437
431
|
})
|
438
432
|
|
439
433
|
# Process with AI and update...
|
@@ -502,14 +496,14 @@ mcp-code-indexer --githook [OPTIONS]
|
|
502
496
|
|
503
497
|
### Utility Commands
|
504
498
|
```bash
|
505
|
-
# List all projects
|
499
|
+
# List all projects
|
506
500
|
mcp-code-indexer --getprojects
|
507
501
|
|
508
502
|
# Execute MCP tool directly
|
509
503
|
mcp-code-indexer --runcommand '{"method": "tools/call", "params": {...}}'
|
510
504
|
|
511
505
|
# Export descriptions for a project
|
512
|
-
mcp-code-indexer --dumpdescriptions PROJECT_ID
|
506
|
+
mcp-code-indexer --dumpdescriptions PROJECT_ID
|
513
507
|
```
|
514
508
|
|
515
509
|
## 🛡️ Security Features
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# MCP Code Indexer 🚀
|
2
2
|
|
3
|
-
[](https://badge.fury.io/py/mcp-code-indexer)
|
4
|
+
[](https://pypi.org/project/mcp-code-indexer/)
|
5
5
|
[](https://opensource.org/licenses/MIT)
|
6
6
|
|
7
7
|
A production-ready **Model Context Protocol (MCP) server** that revolutionizes how AI agents navigate and understand codebases. Built for high-concurrency environments with advanced database resilience, the server provides instant access to intelligent descriptions, semantic search, and context-aware recommendations while maintaining 800+ writes/sec throughput.
|
@@ -13,8 +13,7 @@ The MCP Code Indexer solves a critical problem for AI agents working with large
|
|
13
13
|
- **Query file purposes** instantly with natural language descriptions
|
14
14
|
- **Search across codebases** using full-text search
|
15
15
|
- **Get intelligent recommendations** based on codebase size (overview vs search)
|
16
|
-
- **
|
17
|
-
- **Inherit descriptions** from upstream repositories automatically
|
16
|
+
- **Generate condensed overviews** for project understanding
|
18
17
|
|
19
18
|
Perfect for AI-powered code review, refactoring tools, documentation generation, and codebase analysis workflows.
|
20
19
|
|
@@ -184,7 +183,6 @@ The server provides **12 powerful MCP tools** for intelligent codebase managemen
|
|
184
183
|
### 🔍 For Advanced Users: Search & Discovery
|
185
184
|
- **`get_all_descriptions`** - Complete hierarchical project structure
|
186
185
|
- **`get_word_frequency`** - Technical vocabulary analysis with stop-word filtering
|
187
|
-
- **`merge_branch_descriptions`** - Two-phase merge with conflict resolution
|
188
186
|
- **`update_codebase_overview`** - Create comprehensive codebase documentation
|
189
187
|
|
190
188
|
### 🏥 For System Monitoring: Health & Performance
|
@@ -194,7 +192,7 @@ The server provides **12 powerful MCP tools** for intelligent codebase managemen
|
|
194
192
|
|
195
193
|
## 🔗 Git Hook Integration
|
196
194
|
|
197
|
-
Keep your codebase documentation automatically synchronized with automated analysis on every commit
|
195
|
+
Keep your codebase documentation automatically synchronized with automated analysis on every commit:
|
198
196
|
|
199
197
|
```bash
|
200
198
|
# Analyze current staged changes
|
@@ -337,8 +335,7 @@ async def analyze_codebase(project_path):
|
|
337
335
|
# Check if codebase is large
|
338
336
|
size_info = await mcp_client.call_tool("check_codebase_size", {
|
339
337
|
"projectName": "my-project",
|
340
|
-
"folderPath": project_path
|
341
|
-
"branch": "main"
|
338
|
+
"folderPath": project_path
|
342
339
|
})
|
343
340
|
|
344
341
|
if size_info["isLarge"]:
|
@@ -346,15 +343,13 @@ async def analyze_codebase(project_path):
|
|
346
343
|
results = await mcp_client.call_tool("search_descriptions", {
|
347
344
|
"projectName": "my-project",
|
348
345
|
"folderPath": project_path,
|
349
|
-
"branch": "main",
|
350
346
|
"query": "authentication logic"
|
351
347
|
})
|
352
348
|
else:
|
353
349
|
# Get full overview for smaller projects
|
354
350
|
overview = await mcp_client.call_tool("get_codebase_overview", {
|
355
351
|
"projectName": "my-project",
|
356
|
-
"folderPath": project_path
|
357
|
-
"branch": "main"
|
352
|
+
"folderPath": project_path
|
358
353
|
})
|
359
354
|
```
|
360
355
|
|
@@ -373,8 +368,7 @@ async def analyze_codebase(project_path):
|
|
373
368
|
# Find files without descriptions
|
374
369
|
missing = await client.call_tool('find_missing_descriptions', {
|
375
370
|
'projectName': '${{ github.repository }}',
|
376
|
-
'folderPath': '.'
|
377
|
-
'branch': '${{ github.ref_name }}'
|
371
|
+
'folderPath': '.'
|
378
372
|
})
|
379
373
|
|
380
374
|
# Process with AI and update...
|
@@ -443,14 +437,14 @@ mcp-code-indexer --githook [OPTIONS]
|
|
443
437
|
|
444
438
|
### Utility Commands
|
445
439
|
```bash
|
446
|
-
# List all projects
|
440
|
+
# List all projects
|
447
441
|
mcp-code-indexer --getprojects
|
448
442
|
|
449
443
|
# Execute MCP tool directly
|
450
444
|
mcp-code-indexer --runcommand '{"method": "tools/call", "params": {...}}'
|
451
445
|
|
452
446
|
# Export descriptions for a project
|
453
|
-
mcp-code-indexer --dumpdescriptions PROJECT_ID
|
447
|
+
mcp-code-indexer --dumpdescriptions PROJECT_ID
|
454
448
|
```
|
455
449
|
|
456
450
|
## 🛡️ Security Features
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# MCP Tools API Reference 📖
|
2
2
|
|
3
|
-
Complete reference for all
|
3
|
+
Complete reference for all 10 MCP tools provided by the Code Indexer server. Whether you're building AI agents or integrating MCP tools directly, this guide shows you exactly how to use each tool effectively.
|
4
4
|
|
5
5
|
**🎯 New to MCP Code Indexer?** Start with the [Quick Start Guide](../README.md#-quick-start) to set up your server first.
|
6
6
|
|
@@ -19,7 +19,6 @@ Complete reference for all 11 MCP tools provided by the Code Indexer server. Whe
|
|
19
19
|
- [get_codebase_overview](#get_codebase_overview)
|
20
20
|
- [get_word_frequency](#get_word_frequency)
|
21
21
|
- [Advanced Features](#advanced-features)
|
22
|
-
- [merge_branch_descriptions](#merge_branch_descriptions)
|
23
22
|
- [update_codebase_overview](#update_codebase_overview)
|
24
23
|
- [System Monitoring](#system-monitoring)
|
25
24
|
- [check_database_health](#check_database_health)
|
@@ -38,10 +37,7 @@ Retrieves the stored description for a specific file in a codebase. Use this to
|
|
38
37
|
interface GetFileDescriptionParams {
|
39
38
|
projectName: string; // The name of the project
|
40
39
|
folderPath: string; // Absolute path to the project folder on disk
|
41
|
-
branch: string; // Git branch name (e.g., 'main', 'develop')
|
42
40
|
filePath: string; // Relative path to the file from project root
|
43
|
-
remoteOrigin?: string; // Git remote origin URL if available
|
44
|
-
upstreamOrigin?: string; // Upstream repository URL if this is a fork
|
45
41
|
}
|
46
42
|
```
|
47
43
|
|
@@ -64,7 +60,6 @@ interface GetFileDescriptionResponse {
|
|
64
60
|
const result = await mcp.callTool("get_file_description", {
|
65
61
|
projectName: "my-web-app",
|
66
62
|
folderPath: "/home/user/projects/my-web-app",
|
67
|
-
branch: "main",
|
68
63
|
filePath: "src/components/UserProfile.tsx"
|
69
64
|
});
|
70
65
|
|
@@ -90,11 +85,8 @@ Creates or updates the description for a file. Use this after analyzing a file's
|
|
90
85
|
interface UpdateFileDescriptionParams {
|
91
86
|
projectName: string; // The name of the project
|
92
87
|
folderPath: string; // Absolute path to the project folder on disk
|
93
|
-
branch: string; // Git branch name
|
94
88
|
filePath: string; // Relative path to the file from project root
|
95
89
|
description: string; // Detailed description of the file's contents
|
96
|
-
remoteOrigin?: string; // Git remote origin URL if available
|
97
|
-
upstreamOrigin?: string; // Upstream repository URL if this is a fork
|
98
90
|
fileHash?: string; // SHA-256 hash of the file contents (optional)
|
99
91
|
}
|
100
92
|
```
|
@@ -116,7 +108,6 @@ interface UpdateFileDescriptionResponse {
|
|
116
108
|
const result = await mcp.callTool("update_file_description", {
|
117
109
|
projectName: "my-web-app",
|
118
110
|
folderPath: "/home/user/projects/my-web-app",
|
119
|
-
branch: "main",
|
120
111
|
filePath: "src/utils/apiClient.ts",
|
121
112
|
description: "HTTP client utility with authentication, retry logic, and error handling for API calls",
|
122
113
|
fileHash: "def456ghi789"
|
@@ -143,9 +134,6 @@ Checks the total token count of a codebase's file structure and descriptions. Re
|
|
143
134
|
interface CheckCodebaseSizeParams {
|
144
135
|
projectName: string; // The name of the project
|
145
136
|
folderPath: string; // Absolute path to the project folder
|
146
|
-
branch: string; // Git branch name
|
147
|
-
remoteOrigin?: string; // Git remote origin URL if available
|
148
|
-
upstreamOrigin?: string; // Upstream repository URL if this is a fork
|
149
137
|
}
|
150
138
|
```
|
151
139
|
|
@@ -166,8 +154,7 @@ interface CheckCodebaseSizeResponse {
|
|
166
154
|
```javascript
|
167
155
|
const result = await mcp.callTool("check_codebase_size", {
|
168
156
|
projectName: "large-enterprise-app",
|
169
|
-
folderPath: "/home/user/projects/enterprise-app"
|
170
|
-
branch: "main"
|
157
|
+
folderPath: "/home/user/projects/enterprise-app"
|
171
158
|
});
|
172
159
|
|
173
160
|
// Response:
|
@@ -196,9 +183,6 @@ Scans the project folder to find files that don't have descriptions yet. This is
|
|
196
183
|
interface FindMissingDescriptionsParams {
|
197
184
|
projectName: string; // The name of the project
|
198
185
|
folderPath: string; // Absolute path to the project folder
|
199
|
-
branch: string; // Git branch name
|
200
|
-
remoteOrigin?: string; // Git remote origin URL if available
|
201
|
-
upstreamOrigin?: string; // Upstream repository URL if this is a fork
|
202
186
|
}
|
203
187
|
```
|
204
188
|
|
@@ -224,8 +208,7 @@ interface FindMissingDescriptionsResponse {
|
|
224
208
|
```javascript
|
225
209
|
const result = await mcp.callTool("find_missing_descriptions", {
|
226
210
|
projectName: "new-project",
|
227
|
-
folderPath: "/home/user/projects/new-project"
|
228
|
-
branch: "main"
|
211
|
+
folderPath: "/home/user/projects/new-project"
|
229
212
|
});
|
230
213
|
|
231
214
|
// Response:
|
@@ -264,13 +247,10 @@ Batch updates descriptions for multiple files at once. This is stage 2 after fin
|
|
264
247
|
interface UpdateMissingDescriptionsParams {
|
265
248
|
projectName: string; // The name of the project
|
266
249
|
folderPath: string; // Absolute path to the project folder
|
267
|
-
branch: string; // Git branch name
|
268
250
|
descriptions: Array<{ // Array of file paths and their descriptions
|
269
251
|
filePath: string; // Relative path to the file
|
270
252
|
description: string; // Detailed description of the file
|
271
253
|
}>;
|
272
|
-
remoteOrigin?: string; // Git remote origin URL if available
|
273
|
-
upstreamOrigin?: string; // Upstream repository URL if this is a fork
|
274
254
|
}
|
275
255
|
```
|
276
256
|
|
@@ -291,7 +271,6 @@ interface UpdateMissingDescriptionsResponse {
|
|
291
271
|
const result = await mcp.callTool("update_missing_descriptions", {
|
292
272
|
projectName: "new-project",
|
293
273
|
folderPath: "/home/user/projects/new-project",
|
294
|
-
branch: "main",
|
295
274
|
descriptions: [
|
296
275
|
{
|
297
276
|
filePath: "src/components/NewFeature.tsx",
|
@@ -342,11 +321,8 @@ Use this for large codebases instead of loading the entire structure. Returns fi
|
|
342
321
|
interface SearchDescriptionsParams {
|
343
322
|
projectName: string; // The name of the project
|
344
323
|
folderPath: string; // Absolute path to the project folder
|
345
|
-
branch: string; // Git branch to search in
|
346
324
|
query: string; // Search query (e.g., 'authentication middleware', 'database models')
|
347
325
|
maxResults?: number; // Maximum number of results to return (default: 20)
|
348
|
-
remoteOrigin?: string; // Git remote origin URL if available
|
349
|
-
upstreamOrigin?: string; // Upstream repository URL if this is a fork
|
350
326
|
}
|
351
327
|
```
|
352
328
|
|
@@ -371,7 +347,6 @@ interface SearchDescriptionsResponse {
|
|
371
347
|
const result = await mcp.callTool("search_descriptions", {
|
372
348
|
projectName: "large-app",
|
373
349
|
folderPath: "/home/user/projects/large-app",
|
374
|
-
branch: "main",
|
375
350
|
query: "authentication middleware",
|
376
351
|
maxResults: 10
|
377
352
|
});
|
@@ -409,14 +384,12 @@ const result = await mcp.callTool("search_descriptions", {
|
|
409
384
|
await mcp.callTool("search_descriptions", {
|
410
385
|
projectName: "api-service",
|
411
386
|
folderPath: "/projects/api-service",
|
412
|
-
branch: "main",
|
413
387
|
query: "grpc proto" // Finds files with both "grpc" AND "proto"
|
414
388
|
});
|
415
389
|
|
416
390
|
await mcp.callTool("search_descriptions", {
|
417
391
|
projectName: "api-service",
|
418
392
|
folderPath: "/projects/api-service",
|
419
|
-
branch: "main",
|
420
393
|
query: "proto grpc" // Same results as above
|
421
394
|
});
|
422
395
|
```
|
@@ -427,7 +400,6 @@ await mcp.callTool("search_descriptions", {
|
|
427
400
|
await mcp.callTool("search_descriptions", {
|
428
401
|
projectName: "error-handling",
|
429
402
|
folderPath: "/projects/error-handling",
|
430
|
-
branch: "main",
|
431
403
|
query: "logging AND error" // Finds files with all three: "logging", "AND", "error"
|
432
404
|
});
|
433
405
|
```
|
@@ -460,9 +432,6 @@ Returns the complete file and folder structure of a codebase with all descriptio
|
|
460
432
|
interface GetCodebaseOverviewParams {
|
461
433
|
projectName: string; // The name of the project
|
462
434
|
folderPath: string; // Absolute path to the project folder
|
463
|
-
branch: string; // Git branch name
|
464
|
-
remoteOrigin?: string; // Git remote origin URL if available
|
465
|
-
upstreamOrigin?: string; // Upstream repository URL if this is a fork
|
466
435
|
}
|
467
436
|
```
|
468
437
|
|
@@ -471,7 +440,6 @@ interface GetCodebaseOverviewParams {
|
|
471
440
|
```typescript
|
472
441
|
interface GetCodebaseOverviewResponse {
|
473
442
|
projectName: string; // Project name
|
474
|
-
branch: string; // Git branch
|
475
443
|
totalFiles: number; // Total number of tracked files
|
476
444
|
totalTokens: number; // Total token count for all descriptions
|
477
445
|
isLarge: boolean; // Whether codebase exceeds token limit
|
@@ -500,14 +468,12 @@ interface FileNode {
|
|
500
468
|
```javascript
|
501
469
|
const result = await mcp.callTool("get_codebase_overview", {
|
502
470
|
projectName: "small-app",
|
503
|
-
folderPath: "/home/user/projects/small-app"
|
504
|
-
branch: "main"
|
471
|
+
folderPath: "/home/user/projects/small-app"
|
505
472
|
});
|
506
473
|
|
507
474
|
// Response:
|
508
475
|
{
|
509
476
|
"projectName": "small-app",
|
510
|
-
"branch": "main",
|
511
477
|
"totalFiles": 8,
|
512
478
|
"totalTokens": 1250,
|
513
479
|
"isLarge": false,
|
@@ -546,7 +512,6 @@ const result = await mcp.callTool("get_codebase_overview", {
|
|
546
512
|
// Response for large codebase:
|
547
513
|
{
|
548
514
|
"projectName": "enterprise-app",
|
549
|
-
"branch": "main",
|
550
515
|
"totalFiles": 500,
|
551
516
|
"totalTokens": 45000,
|
552
517
|
"isLarge": true,
|
@@ -560,131 +525,56 @@ const result = await mcp.callTool("get_codebase_overview", {
|
|
560
525
|
|
561
526
|
## Advanced Features
|
562
527
|
|
563
|
-
###
|
528
|
+
### update_codebase_overview
|
564
529
|
|
565
|
-
|
530
|
+
Updates the condensed codebase overview. Create a comprehensive narrative that would help a new developer understand this codebase.
|
566
531
|
|
567
532
|
#### Parameters
|
568
533
|
|
569
534
|
```typescript
|
570
|
-
interface
|
535
|
+
interface UpdateCodebaseOverviewParams {
|
571
536
|
projectName: string; // The name of the project
|
572
537
|
folderPath: string; // Absolute path to the project folder
|
573
|
-
|
574
|
-
targetBranch: string; // Branch to merge into (e.g., 'main')
|
575
|
-
remoteOrigin?: string; // Git remote origin URL
|
576
|
-
upstreamOrigin?: string; // Upstream repository URL if this is a fork
|
577
|
-
conflictResolutions?: Array<{ // Array of resolved conflicts (only for stage 2)
|
578
|
-
conflictId: string; // ID of the conflict to resolve
|
579
|
-
resolvedDescription: string; // Final description to use after merge
|
580
|
-
}>;
|
581
|
-
}
|
582
|
-
```
|
583
|
-
|
584
|
-
#### Response (Stage 1 - Conflicts Detected)
|
585
|
-
|
586
|
-
```typescript
|
587
|
-
interface MergeConflictsResponse {
|
588
|
-
phase: "conflicts_detected";
|
589
|
-
sessionId: string; // Session ID for resolving conflicts
|
590
|
-
conflicts: Array<{ // Array of detected conflicts
|
591
|
-
conflictId: string; // Unique conflict identifier
|
592
|
-
filePath: string; // Path to the conflicted file
|
593
|
-
sourceBranch: string; // Source branch name
|
594
|
-
targetBranch: string; // Target branch name
|
595
|
-
sourceDescription: string; // Description from source branch
|
596
|
-
targetDescription: string; // Description from target branch
|
597
|
-
}>;
|
598
|
-
conflictCount: number; // Total number of conflicts
|
599
|
-
sourceBranch: string; // Source branch
|
600
|
-
targetBranch: string; // Target branch
|
601
|
-
message: string; // Guidance message
|
538
|
+
overview: string; // Comprehensive narrative overview of the codebase
|
602
539
|
}
|
603
540
|
```
|
604
541
|
|
605
|
-
#### Response
|
542
|
+
#### Response
|
606
543
|
|
607
544
|
```typescript
|
608
|
-
interface
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
targetBranch: string; // Target branch
|
614
|
-
totalConflicts?: number; // Total conflicts that were resolved
|
615
|
-
resolvedConflicts?: number; // Number of conflicts resolved
|
616
|
-
mergedFiles?: number; // Total files merged
|
617
|
-
message: string; // Success message
|
618
|
-
}
|
619
|
-
```
|
620
|
-
|
621
|
-
#### Example (Stage 1 - Detect Conflicts)
|
622
|
-
|
623
|
-
```javascript
|
624
|
-
const result = await mcp.callTool("merge_branch_descriptions", {
|
625
|
-
projectName: "feature-development",
|
626
|
-
folderPath: "/home/user/projects/feature-development",
|
627
|
-
sourceBranch: "feature/new-auth",
|
628
|
-
targetBranch: "main"
|
629
|
-
});
|
630
|
-
|
631
|
-
// Response:
|
632
|
-
{
|
633
|
-
"phase": "conflicts_detected",
|
634
|
-
"sessionId": "merge_session_abc123",
|
635
|
-
"conflicts": [
|
636
|
-
{
|
637
|
-
"conflictId": "conflict_def456",
|
638
|
-
"filePath": "src/auth/loginController.ts",
|
639
|
-
"sourceBranch": "feature/new-auth",
|
640
|
-
"targetBranch": "main",
|
641
|
-
"sourceDescription": "Enhanced login controller with OAuth2 support and rate limiting",
|
642
|
-
"targetDescription": "Basic login controller with username/password authentication"
|
643
|
-
}
|
644
|
-
],
|
645
|
-
"conflictCount": 1,
|
646
|
-
"sourceBranch": "feature/new-auth",
|
647
|
-
"targetBranch": "main",
|
648
|
-
"message": "Found 1 conflicts that need resolution."
|
545
|
+
interface UpdateCodebaseOverviewResponse {
|
546
|
+
success: boolean; // Whether the update succeeded
|
547
|
+
message: string; // Success/failure message
|
548
|
+
projectName: string; // Project that was updated
|
549
|
+
overviewLength: number; // Length of the overview in characters
|
649
550
|
}
|
650
551
|
```
|
651
552
|
|
652
|
-
#### Example
|
553
|
+
#### Example
|
653
554
|
|
654
555
|
```javascript
|
655
|
-
const result = await mcp.callTool("
|
656
|
-
projectName: "
|
657
|
-
folderPath: "/home/user/projects/
|
658
|
-
|
659
|
-
|
660
|
-
|
661
|
-
|
662
|
-
|
663
|
-
|
664
|
-
|
665
|
-
|
556
|
+
const result = await mcp.callTool("update_codebase_overview", {
|
557
|
+
projectName: "my-app",
|
558
|
+
folderPath: "/home/user/projects/my-app",
|
559
|
+
overview: `## Architecture Overview
|
560
|
+
This is a modern web application built with React and Node.js...
|
561
|
+
|
562
|
+
## Core Components
|
563
|
+
- Frontend: React with TypeScript
|
564
|
+
- Backend: Express.js API server
|
565
|
+
- Database: PostgreSQL with Prisma ORM
|
566
|
+
...`
|
666
567
|
});
|
667
568
|
|
668
569
|
// Response:
|
669
570
|
{
|
670
|
-
"phase": "completed",
|
671
571
|
"success": true,
|
672
|
-
"
|
673
|
-
"
|
674
|
-
"
|
675
|
-
"resolvedConflicts": 1,
|
676
|
-
"mergedFiles": 15,
|
677
|
-
"message": "Successfully merged 15 files from feature/new-auth to main"
|
572
|
+
"message": "Codebase overview updated successfully",
|
573
|
+
"projectName": "my-app",
|
574
|
+
"overviewLength": 2847
|
678
575
|
}
|
679
576
|
```
|
680
577
|
|
681
|
-
🚀 **Merge Workflow Tips**:
|
682
|
-
1. **Start with phase 1**: Always detect conflicts first
|
683
|
-
2. **Review carefully**: Understand both descriptions before resolving
|
684
|
-
3. **Write comprehensive resolutions**: Capture the best of both versions
|
685
|
-
4. **Test accuracy**: Verify merged descriptions make sense
|
686
|
-
5. **Document changes**: Note why you chose specific resolutions
|
687
|
-
|
688
578
|
---
|
689
579
|
|
690
580
|
## System Monitoring
|
@@ -818,19 +708,19 @@ The tool provides intelligent recommendations based on current system state:
|
|
818
708
|
|
819
709
|
## Common Parameters
|
820
710
|
|
821
|
-
All tools
|
711
|
+
All tools require these standard parameters for project identification:
|
822
712
|
|
823
713
|
| Parameter | Type | Description |
|
824
714
|
|-----------|------|-------------|
|
825
|
-
| `
|
826
|
-
| `
|
715
|
+
| `projectName` | `string` | The name of the project (required) |
|
716
|
+
| `folderPath` | `string` | Absolute path to the project folder on disk (required) |
|
827
717
|
|
828
718
|
### Project Identification
|
829
719
|
|
830
720
|
The server automatically creates unique project identifiers based on:
|
831
|
-
1. **Project name** + **folder path**
|
832
|
-
2. **
|
833
|
-
3. **
|
721
|
+
1. **Project name** + **folder path**
|
722
|
+
2. **Automatic alias creation** for different path representations
|
723
|
+
3. **Project deduplication** across sessions
|
834
724
|
|
835
725
|
## Error Handling
|
836
726
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
4
4
|
|
5
5
|
[project]
|
6
6
|
name = "mcp-code-indexer"
|
7
|
-
version = "3.
|
7
|
+
version = "3.1.2"
|
8
8
|
description = "MCP server that tracks file descriptions across codebases, enabling AI agents to efficiently navigate and understand code through searchable summaries and token-aware overviews."
|
9
9
|
readme = "README.md"
|
10
10
|
license = {text = "MIT"}
|