mcp-code-indexer 1.2.0__tar.gz → 1.2.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-1.2.0/src/mcp_code_indexer.egg-info → mcp_code_indexer-1.2.2}/PKG-INFO +3 -3
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/README.md +2 -2
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/pyproject.toml +1 -1
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/setup.py +1 -1
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/src/mcp_code_indexer/server/mcp_server.py +67 -18
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2/src/mcp_code_indexer.egg-info}/PKG-INFO +3 -3
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/LICENSE +0 -0
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/MANIFEST.in +0 -0
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/docs/api-reference.md +0 -0
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/docs/architecture.md +0 -0
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/docs/configuration.md +0 -0
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/docs/contributing.md +0 -0
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/migrations/001_initial.sql +0 -0
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/migrations/002_performance_indexes.sql +0 -0
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/migrations/003_project_overviews.sql +0 -0
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/requirements.txt +0 -0
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/setup.cfg +0 -0
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/src/mcp_code_indexer/__init__.py +0 -0
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/src/mcp_code_indexer/__main__.py +0 -0
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/src/mcp_code_indexer/data/stop_words_english.txt +0 -0
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/src/mcp_code_indexer/database/__init__.py +0 -0
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/src/mcp_code_indexer/database/database.py +0 -0
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/src/mcp_code_indexer/database/models.py +0 -0
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/src/mcp_code_indexer/error_handler.py +0 -0
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/src/mcp_code_indexer/file_scanner.py +0 -0
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/src/mcp_code_indexer/logging_config.py +0 -0
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/src/mcp_code_indexer/main.py +0 -0
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/src/mcp_code_indexer/merge_handler.py +0 -0
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/src/mcp_code_indexer/middleware/__init__.py +0 -0
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/src/mcp_code_indexer/middleware/error_middleware.py +0 -0
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/src/mcp_code_indexer/server/__init__.py +0 -0
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/src/mcp_code_indexer/tiktoken_cache/9b5ad71b2ce5302211f9c61530b329a4922fc6a4 +0 -0
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/src/mcp_code_indexer/token_counter.py +0 -0
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/src/mcp_code_indexer/tools/__init__.py +0 -0
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/src/mcp_code_indexer.egg-info/SOURCES.txt +0 -0
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/src/mcp_code_indexer.egg-info/dependency_links.txt +0 -0
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/src/mcp_code_indexer.egg-info/entry_points.txt +0 -0
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/src/mcp_code_indexer.egg-info/requires.txt +0 -0
- {mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.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: 1.2.
|
3
|
+
Version: 1.2.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
|
@@ -55,8 +55,8 @@ Dynamic: requires-python
|
|
55
55
|
|
56
56
|
# MCP Code Indexer 🚀
|
57
57
|
|
58
|
-
[](https://badge.fury.io/py/mcp-code-indexer)
|
59
|
-
[](https://pypi.org/project/mcp-code-indexer/)
|
58
|
+
[](https://badge.fury.io/py/mcp-code-indexer)
|
59
|
+
[](https://pypi.org/project/mcp-code-indexer/)
|
60
60
|
[](https://opensource.org/licenses/MIT)
|
61
61
|
|
62
62
|
A production-ready **Model Context Protocol (MCP) server** that provides intelligent codebase navigation for AI agents through searchable file descriptions, token-aware overviews, and advanced merge capabilities.
|
@@ -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/)
|
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 provides intelligent codebase navigation for AI agents through searchable file descriptions, token-aware overviews, and advanced merge capabilities.
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
4
4
|
|
5
5
|
[project]
|
6
6
|
name = "mcp-code-indexer"
|
7
|
-
version = "1.2.
|
7
|
+
version = "1.2.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"}
|
@@ -227,7 +227,8 @@ class MCPCodeIndexServer:
|
|
227
227
|
"description": "Relative path to the file from project root"
|
228
228
|
}
|
229
229
|
},
|
230
|
-
"required": ["projectName", "folderPath", "branch", "filePath"]
|
230
|
+
"required": ["projectName", "folderPath", "branch", "filePath"],
|
231
|
+
"additionalProperties": False
|
231
232
|
}
|
232
233
|
),
|
233
234
|
types.Tool(
|
@@ -245,7 +246,8 @@ class MCPCodeIndexServer:
|
|
245
246
|
"description": {"type": "string", "description": "Detailed description of the file's contents"},
|
246
247
|
"fileHash": {"type": "string", "description": "SHA-256 hash of the file contents (optional)"}
|
247
248
|
},
|
248
|
-
"required": ["projectName", "folderPath", "branch", "filePath", "description"]
|
249
|
+
"required": ["projectName", "folderPath", "branch", "filePath", "description"],
|
250
|
+
"additionalProperties": False
|
249
251
|
}
|
250
252
|
),
|
251
253
|
types.Tool(
|
@@ -261,7 +263,8 @@ class MCPCodeIndexServer:
|
|
261
263
|
"upstreamOrigin": {"type": "string", "description": "Upstream repository URL if this is a fork"},
|
262
264
|
"tokenLimit": {"type": "integer", "description": "Optional token limit override (defaults to server configuration)"}
|
263
265
|
},
|
264
|
-
"required": ["projectName", "folderPath", "branch"]
|
266
|
+
"required": ["projectName", "folderPath", "branch"],
|
267
|
+
"additionalProperties": False
|
265
268
|
}
|
266
269
|
),
|
267
270
|
types.Tool(
|
@@ -277,7 +280,8 @@ class MCPCodeIndexServer:
|
|
277
280
|
"upstreamOrigin": {"type": "string", "description": "Upstream repository URL if this is a fork"},
|
278
281
|
"limit": {"type": "integer", "description": "Maximum number of missing files to return (optional)"}
|
279
282
|
},
|
280
|
-
"required": ["projectName", "folderPath", "branch"]
|
283
|
+
"required": ["projectName", "folderPath", "branch"],
|
284
|
+
"additionalProperties": False
|
281
285
|
}
|
282
286
|
),
|
283
287
|
types.Tool(
|
@@ -294,7 +298,8 @@ class MCPCodeIndexServer:
|
|
294
298
|
"query": {"type": "string", "description": "Search query (e.g., 'authentication middleware', 'database models')"},
|
295
299
|
"maxResults": {"type": "integer", "default": 20, "description": "Maximum number of results to return"}
|
296
300
|
},
|
297
|
-
"required": ["projectName", "folderPath", "branch", "query"]
|
301
|
+
"required": ["projectName", "folderPath", "branch", "query"],
|
302
|
+
"additionalProperties": False
|
298
303
|
}
|
299
304
|
),
|
300
305
|
types.Tool(
|
@@ -309,7 +314,8 @@ class MCPCodeIndexServer:
|
|
309
314
|
"remoteOrigin": {"type": "string", "description": "Git remote origin URL if available"},
|
310
315
|
"upstreamOrigin": {"type": "string", "description": "Upstream repository URL if this is a fork"}
|
311
316
|
},
|
312
|
-
"required": ["projectName", "folderPath", "branch"]
|
317
|
+
"required": ["projectName", "folderPath", "branch"],
|
318
|
+
"additionalProperties": False
|
313
319
|
}
|
314
320
|
),
|
315
321
|
types.Tool(
|
@@ -333,11 +339,13 @@ class MCPCodeIndexServer:
|
|
333
339
|
"conflictId": {"type": "string", "description": "ID of the conflict to resolve"},
|
334
340
|
"resolvedDescription": {"type": "string", "description": "Final description to use after merge"}
|
335
341
|
},
|
336
|
-
"required": ["conflictId", "resolvedDescription"]
|
342
|
+
"required": ["conflictId", "resolvedDescription"],
|
343
|
+
"additionalProperties": False
|
337
344
|
}
|
338
345
|
}
|
339
346
|
},
|
340
|
-
"required": ["projectName", "folderPath", "sourceBranch", "targetBranch"]
|
347
|
+
"required": ["projectName", "folderPath", "sourceBranch", "targetBranch"],
|
348
|
+
"additionalProperties": False
|
341
349
|
}
|
342
350
|
),
|
343
351
|
types.Tool(
|
@@ -352,12 +360,47 @@ class MCPCodeIndexServer:
|
|
352
360
|
"remoteOrigin": {"type": "string", "description": "Git remote origin URL if available"},
|
353
361
|
"upstreamOrigin": {"type": "string", "description": "Upstream repository URL if this is a fork"}
|
354
362
|
},
|
355
|
-
"required": ["projectName", "folderPath", "branch"]
|
363
|
+
"required": ["projectName", "folderPath", "branch"],
|
364
|
+
"additionalProperties": False
|
356
365
|
}
|
357
366
|
),
|
358
367
|
types.Tool(
|
359
368
|
name="update_codebase_overview",
|
360
|
-
description="Updates the condensed codebase overview. Create a comprehensive narrative that would help a new developer understand this codebase. Include: (1) A visual directory tree showing the main folders and their purposes, (2) Overall architecture - how components fit together, (3) Core business logic and main workflows, (4) Key technical patterns and conventions used, (5) Important dependencies and integrations, (6) Database schema overview if applicable, (7) API structure if applicable, (8) Testing approach, (9) Build and deployment notes. Write in a clear, structured format with headers and sections. Be thorough but organized - imagine writing a technical onboarding document. The overview should be substantial (think 10-20 pages of text) but well-structured so specific sections can be found easily.
|
369
|
+
description="""Updates the condensed codebase overview. Create a comprehensive narrative that would help a new developer understand this codebase. Include: (1) A visual directory tree showing the main folders and their purposes, (2) Overall architecture - how components fit together, (3) Core business logic and main workflows, (4) Key technical patterns and conventions used, (5) Important dependencies and integrations, (6) Database schema overview if applicable, (7) API structure if applicable, (8) Testing approach, (9) Build and deployment notes. Write in a clear, structured format with headers and sections. Be thorough but organized - imagine writing a technical onboarding document. The overview should be substantial (think 10-20 pages of text) but well-structured so specific sections can be found easily.
|
370
|
+
|
371
|
+
Example Structure:
|
372
|
+
|
373
|
+
````
|
374
|
+
## Directory Structure
|
375
|
+
```
|
376
|
+
src/
|
377
|
+
├── api/ # REST API endpoints and middleware
|
378
|
+
├── models/ # Database models and business logic
|
379
|
+
├── services/ # External service integrations
|
380
|
+
├── utils/ # Shared utilities and helpers
|
381
|
+
└── tests/ # Test suites
|
382
|
+
```
|
383
|
+
|
384
|
+
## Architecture Overview
|
385
|
+
[Describe how components interact, data flow, key design decisions]
|
386
|
+
|
387
|
+
## Core Components
|
388
|
+
### API Layer
|
389
|
+
[Details about API structure, authentication, routing]
|
390
|
+
|
391
|
+
### Data Model
|
392
|
+
[Key entities, relationships, database design]
|
393
|
+
|
394
|
+
## Key Workflows
|
395
|
+
1. User Authentication Flow
|
396
|
+
[Step-by-step description]
|
397
|
+
2. Data Processing Pipeline
|
398
|
+
[How data moves through the system]
|
399
|
+
|
400
|
+
[Continue with other sections...]"
|
401
|
+
````
|
402
|
+
|
403
|
+
""",
|
361
404
|
inputSchema={
|
362
405
|
"type": "object",
|
363
406
|
"properties": {
|
@@ -368,7 +411,8 @@ class MCPCodeIndexServer:
|
|
368
411
|
"upstreamOrigin": {"type": "string", "description": "Upstream repository URL if this is a fork"},
|
369
412
|
"overview": {"type": "string", "description": "Comprehensive narrative overview of the codebase (10-30k tokens recommended)"}
|
370
413
|
},
|
371
|
-
"required": ["projectName", "folderPath", "branch", "overview"]
|
414
|
+
"required": ["projectName", "folderPath", "branch", "overview"],
|
415
|
+
"additionalProperties": False
|
372
416
|
}
|
373
417
|
),
|
374
418
|
types.Tool(
|
@@ -384,7 +428,8 @@ class MCPCodeIndexServer:
|
|
384
428
|
"upstreamOrigin": {"type": "string", "description": "Upstream repository URL if this is a fork"},
|
385
429
|
"limit": {"type": "integer", "default": 200, "description": "Number of top terms to return"}
|
386
430
|
},
|
387
|
-
"required": ["projectName", "folderPath", "branch"]
|
431
|
+
"required": ["projectName", "folderPath", "branch"],
|
432
|
+
"additionalProperties": False
|
388
433
|
}
|
389
434
|
)
|
390
435
|
]
|
@@ -864,7 +909,7 @@ class MCPCodeIndexServer:
|
|
864
909
|
|
865
910
|
def _build_folder_structure(self, file_descriptions: List[FileDescription]) -> Dict[str, Any]:
|
866
911
|
"""Build hierarchical folder structure from file descriptions."""
|
867
|
-
root = {"
|
912
|
+
root = {"path": "", "files": [], "folders": {}}
|
868
913
|
|
869
914
|
for file_desc in file_descriptions:
|
870
915
|
path_parts = Path(file_desc.file_path).parts
|
@@ -875,7 +920,6 @@ class MCPCodeIndexServer:
|
|
875
920
|
folder_path = "/".join(path_parts[:i+1])
|
876
921
|
if part not in current["folders"]:
|
877
922
|
current["folders"][part] = {
|
878
|
-
"name": part,
|
879
923
|
"path": folder_path,
|
880
924
|
"files": [],
|
881
925
|
"folders": {}
|
@@ -885,18 +929,23 @@ class MCPCodeIndexServer:
|
|
885
929
|
# Add file to current folder
|
886
930
|
if path_parts: # Handle empty paths
|
887
931
|
current["files"].append({
|
888
|
-
"name": path_parts[-1],
|
889
932
|
"path": file_desc.file_path,
|
890
933
|
"description": file_desc.description
|
891
934
|
})
|
892
935
|
|
893
|
-
# Convert nested dict structure to list format
|
936
|
+
# Convert nested dict structure to list format, skipping empty folders
|
894
937
|
def convert_structure(node):
|
938
|
+
folders = []
|
939
|
+
for folder in node["folders"].values():
|
940
|
+
converted_folder = convert_structure(folder)
|
941
|
+
# Only include folders that have files or non-empty subfolders
|
942
|
+
if converted_folder["files"] or converted_folder["folders"]:
|
943
|
+
folders.append(converted_folder)
|
944
|
+
|
895
945
|
return {
|
896
|
-
"name": node["name"],
|
897
946
|
"path": node["path"],
|
898
947
|
"files": node["files"],
|
899
|
-
"folders":
|
948
|
+
"folders": folders
|
900
949
|
}
|
901
950
|
|
902
951
|
return convert_structure(root)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: mcp-code-indexer
|
3
|
-
Version: 1.2.
|
3
|
+
Version: 1.2.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
|
@@ -55,8 +55,8 @@ Dynamic: requires-python
|
|
55
55
|
|
56
56
|
# MCP Code Indexer 🚀
|
57
57
|
|
58
|
-
[](https://badge.fury.io/py/mcp-code-indexer)
|
59
|
-
[](https://pypi.org/project/mcp-code-indexer/)
|
58
|
+
[](https://badge.fury.io/py/mcp-code-indexer)
|
59
|
+
[](https://pypi.org/project/mcp-code-indexer/)
|
60
60
|
[](https://opensource.org/licenses/MIT)
|
61
61
|
|
62
62
|
A production-ready **Model Context Protocol (MCP) server** that provides intelligent codebase navigation for AI agents through searchable file descriptions, token-aware overviews, and advanced merge capabilities.
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/src/mcp_code_indexer/data/stop_words_english.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/src/mcp_code_indexer/middleware/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/src/mcp_code_indexer.egg-info/dependency_links.txt
RENAMED
File without changes
|
{mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/src/mcp_code_indexer.egg-info/entry_points.txt
RENAMED
File without changes
|
{mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/src/mcp_code_indexer.egg-info/requires.txt
RENAMED
File without changes
|
{mcp_code_indexer-1.2.0 → mcp_code_indexer-1.2.2}/src/mcp_code_indexer.egg-info/top_level.txt
RENAMED
File without changes
|