mcp-code-indexer 3.0.2__tar.gz → 3.1.1__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.
Files changed (54) hide show
  1. {mcp_code_indexer-3.0.2/src/mcp_code_indexer.egg-info → mcp_code_indexer-3.1.1}/PKG-INFO +10 -16
  2. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/README.md +9 -15
  3. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/docs/api-reference.md +35 -145
  4. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/pyproject.toml +1 -1
  5. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/src/mcp_code_indexer/database/database.py +13 -90
  6. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/src/mcp_code_indexer/database/models.py +2 -4
  7. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/src/mcp_code_indexer/git_hook_handler.py +5 -37
  8. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/src/mcp_code_indexer/logging_config.py +1 -1
  9. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/src/mcp_code_indexer/main.py +0 -9
  10. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/src/mcp_code_indexer/migrations/004_remove_branch_dependency.sql +20 -2
  11. mcp_code_indexer-3.1.1/src/mcp_code_indexer/migrations/005_remove_git_remotes.sql +41 -0
  12. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/src/mcp_code_indexer/server/mcp_server.py +13 -69
  13. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1/src/mcp_code_indexer.egg-info}/PKG-INFO +10 -16
  14. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/src/mcp_code_indexer.egg-info/SOURCES.txt +1 -1
  15. mcp_code_indexer-3.0.2/src/mcp_code_indexer/merge_handler.py +0 -386
  16. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/LICENSE +0 -0
  17. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/MANIFEST.in +0 -0
  18. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/docs/architecture.md +0 -0
  19. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/docs/configuration.md +0 -0
  20. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/docs/contributing.md +0 -0
  21. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/docs/database-resilience.md +0 -0
  22. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/docs/git-hook-setup.md +0 -0
  23. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/docs/monitoring.md +0 -0
  24. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/docs/performance-tuning.md +0 -0
  25. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/requirements.txt +0 -0
  26. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/setup.cfg +0 -0
  27. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/setup.py +0 -0
  28. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/src/mcp_code_indexer/__init__.py +0 -0
  29. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/src/mcp_code_indexer/__main__.py +0 -0
  30. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/src/mcp_code_indexer/ask_handler.py +0 -0
  31. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/src/mcp_code_indexer/claude_api_handler.py +0 -0
  32. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/src/mcp_code_indexer/cleanup_manager.py +0 -0
  33. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/src/mcp_code_indexer/data/stop_words_english.txt +0 -0
  34. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/src/mcp_code_indexer/database/__init__.py +0 -0
  35. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/src/mcp_code_indexer/database/connection_health.py +0 -0
  36. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/src/mcp_code_indexer/database/exceptions.py +0 -0
  37. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/src/mcp_code_indexer/database/retry_executor.py +0 -0
  38. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/src/mcp_code_indexer/deepask_handler.py +0 -0
  39. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/src/mcp_code_indexer/error_handler.py +0 -0
  40. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/src/mcp_code_indexer/file_scanner.py +0 -0
  41. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/src/mcp_code_indexer/middleware/__init__.py +0 -0
  42. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/src/mcp_code_indexer/middleware/error_middleware.py +0 -0
  43. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/src/mcp_code_indexer/migrations/001_initial.sql +0 -0
  44. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/src/mcp_code_indexer/migrations/002_performance_indexes.sql +0 -0
  45. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/src/mcp_code_indexer/migrations/003_project_overviews.sql +0 -0
  46. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/src/mcp_code_indexer/query_preprocessor.py +0 -0
  47. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/src/mcp_code_indexer/server/__init__.py +0 -0
  48. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/src/mcp_code_indexer/tiktoken_cache/9b5ad71b2ce5302211f9c61530b329a4922fc6a4 +0 -0
  49. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/src/mcp_code_indexer/token_counter.py +0 -0
  50. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/src/mcp_code_indexer/tools/__init__.py +0 -0
  51. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/src/mcp_code_indexer.egg-info/dependency_links.txt +0 -0
  52. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/src/mcp_code_indexer.egg-info/entry_points.txt +0 -0
  53. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/src/mcp_code_indexer.egg-info/requires.txt +0 -0
  54. {mcp_code_indexer-3.0.2 → mcp_code_indexer-3.1.1}/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.0.2
3
+ Version: 3.1.1
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
- [![PyPI version](https://badge.fury.io/py/mcp-code-indexer.svg?20)](https://badge.fury.io/py/mcp-code-indexer)
63
- [![Python](https://img.shields.io/pypi/pyversions/mcp-code-indexer.svg?20)](https://pypi.org/project/mcp-code-indexer/)
62
+ [![PyPI version](https://badge.fury.io/py/mcp-code-indexer.svg?22)](https://badge.fury.io/py/mcp-code-indexer)
63
+ [![Python](https://img.shields.io/pypi/pyversions/mcp-code-indexer.svg?22)](https://pypi.org/project/mcp-code-indexer/)
64
64
  [![License](https://img.shields.io/badge/License-MIT-blue.svg)](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
- - **Merge branch descriptions** with conflict resolution
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, rebase, or merge:
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 and branches
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 [BRANCH]
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
- [![PyPI version](https://badge.fury.io/py/mcp-code-indexer.svg?20)](https://badge.fury.io/py/mcp-code-indexer)
4
- [![Python](https://img.shields.io/pypi/pyversions/mcp-code-indexer.svg?20)](https://pypi.org/project/mcp-code-indexer/)
3
+ [![PyPI version](https://badge.fury.io/py/mcp-code-indexer.svg?22)](https://badge.fury.io/py/mcp-code-indexer)
4
+ [![Python](https://img.shields.io/pypi/pyversions/mcp-code-indexer.svg?22)](https://pypi.org/project/mcp-code-indexer/)
5
5
  [![License](https://img.shields.io/badge/License-MIT-blue.svg)](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
- - **Merge branch descriptions** with conflict resolution
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, rebase, or merge:
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 and branches
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 [BRANCH]
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 11 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.
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
- ### merge_branch_descriptions
528
+ ### update_codebase_overview
564
529
 
565
- Merges file descriptions from one branch to another. This is a two-stage process: first call without resolutions returns conflicts where the same file has different descriptions in each branch. Second call with resolutions completes the merge.
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 MergeBranchDescriptionsParams {
535
+ interface UpdateCodebaseOverviewParams {
571
536
  projectName: string; // The name of the project
572
537
  folderPath: string; // Absolute path to the project folder
573
- sourceBranch: string; // Branch to merge from (e.g., 'feature/new-ui')
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 (Stage 2 - Merge Completed)
542
+ #### Response
606
543
 
607
544
  ```typescript
608
- interface MergeCompletedResponse {
609
- phase: "completed";
610
- success: boolean; // Whether merge succeeded
611
- sessionId?: string; // Session ID that was resolved
612
- sourceBranch: string; // Source branch
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 (Stage 2 - Resolve Conflicts)
553
+ #### Example
653
554
 
654
555
  ```javascript
655
- const result = await mcp.callTool("merge_branch_descriptions", {
656
- projectName: "feature-development",
657
- folderPath: "/home/user/projects/feature-development",
658
- sourceBranch: "feature/new-auth",
659
- targetBranch: "main",
660
- conflictResolutions: [
661
- {
662
- conflictId: "conflict_def456",
663
- resolvedDescription: "Login controller supporting both traditional username/password and OAuth2 authentication with rate limiting protection"
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
- "sourceBranch": "feature/new-auth",
673
- "targetBranch": "main",
674
- "totalConflicts": 1,
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 support these optional parameters for project identification:
711
+ All tools require these standard parameters for project identification:
822
712
 
823
713
  | Parameter | Type | Description |
824
714
  |-----------|------|-------------|
825
- | `remoteOrigin` | `string?` | Git remote origin URL (e.g., "https://github.com/user/repo.git") |
826
- | `upstreamOrigin` | `string?` | Upstream repository URL for forks |
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** + **remote origins**
832
- 2. **Upstream inheritance** when `upstreamOrigin` is provided
833
- 3. **Automatic deduplication** across different local copies
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.0.2"
7
+ version = "3.1.1"
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"}