mcp-code-indexer 3.4.1__tar.gz → 3.4.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.4.1 → mcp_code_indexer-3.4.2}/PKG-INFO +9 -3
- {mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/README.md +8 -2
- {mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/pyproject.toml +1 -1
- {mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/main.py +15 -40
- {mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/LICENSE +0 -0
- {mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/__init__.py +0 -0
- {mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/__main__.py +0 -0
- {mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/ask_handler.py +0 -0
- {mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/claude_api_handler.py +0 -0
- {mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/cleanup_manager.py +0 -0
- {mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/data/stop_words_english.txt +0 -0
- {mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/database/__init__.py +0 -0
- {mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/database/connection_health.py +0 -0
- {mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/database/database.py +0 -0
- {mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/database/exceptions.py +0 -0
- {mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/database/models.py +0 -0
- {mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/database/retry_executor.py +0 -0
- {mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/deepask_handler.py +0 -0
- {mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/error_handler.py +0 -0
- {mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/file_scanner.py +0 -0
- {mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/git_hook_handler.py +0 -0
- {mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/logging_config.py +0 -0
- {mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/middleware/__init__.py +0 -0
- {mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/middleware/error_middleware.py +0 -0
- {mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/migrations/001_initial.sql +0 -0
- {mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/migrations/002_performance_indexes.sql +0 -0
- {mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/migrations/003_project_overviews.sql +0 -0
- {mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/migrations/004_remove_branch_dependency.sql +0 -0
- {mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/migrations/005_remove_git_remotes.sql +0 -0
- {mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/query_preprocessor.py +0 -0
- {mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/server/__init__.py +0 -0
- {mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/server/mcp_server.py +0 -0
- {mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/tiktoken_cache/9b5ad71b2ce5302211f9c61530b329a4922fc6a4 +0 -0
- {mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/token_counter.py +0 -0
- {mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/tools/__init__.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: mcp-code-indexer
|
3
|
-
Version: 3.4.
|
3
|
+
Version: 3.4.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
|
License: MIT
|
6
6
|
Keywords: mcp,model-context-protocol,code-indexer,ai-tools,codebase-navigation,file-descriptions,llm-tools
|
@@ -40,8 +40,8 @@ Description-Content-Type: text/markdown
|
|
40
40
|
|
41
41
|
# MCP Code Indexer 🚀
|
42
42
|
|
43
|
-
[](https://badge.fury.io/py/mcp-code-indexer)
|
44
|
+
[](https://pypi.org/project/mcp-code-indexer/)
|
45
45
|
[](https://opensource.org/licenses/MIT)
|
46
46
|
|
47
47
|
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.
|
@@ -245,8 +245,14 @@ mcp-code-indexer --githook
|
|
245
245
|
# Analyze a specific commit
|
246
246
|
mcp-code-indexer --githook abc123def
|
247
247
|
|
248
|
+
# Analyze using HEAD syntax
|
249
|
+
mcp-code-indexer --githook HEAD
|
250
|
+
mcp-code-indexer --githook HEAD~1
|
251
|
+
mcp-code-indexer --githook HEAD~3
|
252
|
+
|
248
253
|
# Analyze a commit range (perfect for rebases)
|
249
254
|
mcp-code-indexer --githook abc123 def456
|
255
|
+
mcp-code-indexer --githook HEAD~5 HEAD
|
250
256
|
```
|
251
257
|
|
252
258
|
**🎯 Perfect for**:
|
@@ -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.
|
@@ -205,8 +205,14 @@ mcp-code-indexer --githook
|
|
205
205
|
# Analyze a specific commit
|
206
206
|
mcp-code-indexer --githook abc123def
|
207
207
|
|
208
|
+
# Analyze using HEAD syntax
|
209
|
+
mcp-code-indexer --githook HEAD
|
210
|
+
mcp-code-indexer --githook HEAD~1
|
211
|
+
mcp-code-indexer --githook HEAD~3
|
212
|
+
|
208
213
|
# Analyze a commit range (perfect for rebases)
|
209
214
|
mcp-code-indexer --githook abc123 def456
|
215
|
+
mcp-code-indexer --githook HEAD~5 HEAD
|
210
216
|
```
|
211
217
|
|
212
218
|
**🎯 Perfect for**:
|
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
|
|
4
4
|
|
5
5
|
[tool.poetry]
|
6
6
|
name = "mcp-code-indexer"
|
7
|
-
version = "3.4.
|
7
|
+
version = "3.4.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
|
authors = ["MCP Code Indexer Contributors"]
|
10
10
|
maintainers = ["MCP Code Indexer Contributors"]
|
@@ -63,7 +63,7 @@ def parse_arguments() -> argparse.Namespace:
|
|
63
63
|
parser.add_argument(
|
64
64
|
"--getprojects",
|
65
65
|
action="store_true",
|
66
|
-
help="List all projects with IDs
|
66
|
+
help="List all projects with IDs and file description counts",
|
67
67
|
)
|
68
68
|
|
69
69
|
parser.add_argument(
|
@@ -75,10 +75,10 @@ def parse_arguments() -> argparse.Namespace:
|
|
75
75
|
parser.add_argument(
|
76
76
|
"--dumpdescriptions",
|
77
77
|
nargs="+",
|
78
|
-
metavar=
|
78
|
+
metavar="PROJECT_ID",
|
79
79
|
help=(
|
80
80
|
"Export descriptions for a project. Usage: "
|
81
|
-
"--dumpdescriptions PROJECT_ID
|
81
|
+
"--dumpdescriptions PROJECT_ID"
|
82
82
|
),
|
83
83
|
)
|
84
84
|
|
@@ -89,8 +89,8 @@ def parse_arguments() -> argparse.Namespace:
|
|
89
89
|
help=(
|
90
90
|
"Git hook mode: auto-update descriptions based on git diff using "
|
91
91
|
"OpenRouter API. Usage: --githook (current changes), --githook HASH "
|
92
|
-
"(specific commit), --githook HASH1 HASH2 (commit range
|
93
|
-
"
|
92
|
+
"(specific commit), --githook HASH1 HASH2 (commit range). "
|
93
|
+
"Supports: commit hashes, HEAD, HEAD~1, HEAD~3, branch names, tags."
|
94
94
|
),
|
95
95
|
)
|
96
96
|
|
@@ -138,17 +138,12 @@ async def handle_getprojects(args: argparse.Namespace) -> None:
|
|
138
138
|
print(f"ID: {project.id}")
|
139
139
|
print(f"Name: {project.name}")
|
140
140
|
|
141
|
-
# Get
|
141
|
+
# Get file description count
|
142
142
|
try:
|
143
|
-
|
144
|
-
|
145
|
-
print("Branches:")
|
146
|
-
for branch, count in branch_counts.items():
|
147
|
-
print(f" - {branch}: {count} descriptions")
|
148
|
-
else:
|
149
|
-
print("Branches: No descriptions found")
|
143
|
+
file_count = await db_manager.get_file_count(project.id)
|
144
|
+
print(f"Files: {file_count} descriptions")
|
150
145
|
except Exception as e:
|
151
|
-
print(f"
|
146
|
+
print(f"Files: Error loading file count - {e}")
|
152
147
|
|
153
148
|
print("-" * 80)
|
154
149
|
|
@@ -288,11 +283,6 @@ async def handle_runcommand(args: argparse.Namespace) -> None:
|
|
288
283
|
tool_arguments = json_data
|
289
284
|
logger.info("Auto-detected tool: update_file_description")
|
290
285
|
print("Auto-detected tool: update_file_description", file=sys.stderr)
|
291
|
-
elif "branch" in json_data:
|
292
|
-
tool_name = "check_codebase_size"
|
293
|
-
tool_arguments = json_data
|
294
|
-
logger.info("Auto-detected tool: check_codebase_size")
|
295
|
-
print("Auto-detected tool: check_codebase_size", file=sys.stderr)
|
296
286
|
else:
|
297
287
|
logger.error(
|
298
288
|
"Could not auto-detect tool from arguments",
|
@@ -449,7 +439,6 @@ async def handle_dumpdescriptions(args: argparse.Namespace) -> None:
|
|
449
439
|
sys.exit(1)
|
450
440
|
|
451
441
|
project_id = args.dumpdescriptions[0]
|
452
|
-
branch = args.dumpdescriptions[1] if len(args.dumpdescriptions) > 1 else None
|
453
442
|
|
454
443
|
db_manager = None
|
455
444
|
try:
|
@@ -461,16 +450,10 @@ async def handle_dumpdescriptions(args: argparse.Namespace) -> None:
|
|
461
450
|
token_counter = TokenCounter(args.token_limit)
|
462
451
|
|
463
452
|
# Get file descriptions
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
print(f"File descriptions for project {project_id}, branch {branch}:")
|
469
|
-
else:
|
470
|
-
file_descriptions = await db_manager.get_all_file_descriptions(
|
471
|
-
project_id=project_id
|
472
|
-
)
|
473
|
-
print(f"File descriptions for project {project_id} (all branches):")
|
453
|
+
file_descriptions = await db_manager.get_all_file_descriptions(
|
454
|
+
project_id=project_id
|
455
|
+
)
|
456
|
+
print(f"File descriptions for project {project_id}:")
|
474
457
|
|
475
458
|
print("=" * 80)
|
476
459
|
|
@@ -481,8 +464,6 @@ async def handle_dumpdescriptions(args: argparse.Namespace) -> None:
|
|
481
464
|
total_tokens = 0
|
482
465
|
for desc in file_descriptions:
|
483
466
|
print(f"File: {desc.file_path}")
|
484
|
-
if branch is None:
|
485
|
-
print(f"Branch: {desc.branch}")
|
486
467
|
print(f"Description: {desc.description}")
|
487
468
|
print("-" * 40)
|
488
469
|
|
@@ -714,7 +695,6 @@ async def handle_map(args: argparse.Namespace) -> None:
|
|
714
695
|
sys.exit(1)
|
715
696
|
|
716
697
|
project = project_data["project"]
|
717
|
-
branch = project_data["branch"]
|
718
698
|
overview = project_data["overview"]
|
719
699
|
files = project_data["files"]
|
720
700
|
|
@@ -723,7 +703,6 @@ async def handle_map(args: argparse.Namespace) -> None:
|
|
723
703
|
extra={
|
724
704
|
"structured_data": {
|
725
705
|
"project_name": project.name,
|
726
|
-
"branch": branch,
|
727
706
|
"file_count": len(files),
|
728
707
|
"has_overview": overview is not None,
|
729
708
|
}
|
@@ -732,7 +711,7 @@ async def handle_map(args: argparse.Namespace) -> None:
|
|
732
711
|
|
733
712
|
# Generate markdown
|
734
713
|
markdown_content = generate_project_markdown(
|
735
|
-
project,
|
714
|
+
project, overview, files, logger
|
736
715
|
)
|
737
716
|
|
738
717
|
# Output the markdown
|
@@ -766,7 +745,7 @@ async def handle_map(args: argparse.Namespace) -> None:
|
|
766
745
|
logger.removeHandler(handler)
|
767
746
|
|
768
747
|
|
769
|
-
def generate_project_markdown(project,
|
748
|
+
def generate_project_markdown(project, overview, files, logger):
|
770
749
|
"""Generate the markdown content for the project map."""
|
771
750
|
import re
|
772
751
|
from collections import defaultdict
|
@@ -779,10 +758,6 @@ def generate_project_markdown(project, branch, overview, files, logger):
|
|
779
758
|
markdown_lines.append(f"# {project_name}")
|
780
759
|
markdown_lines.append("")
|
781
760
|
|
782
|
-
# Project metadata
|
783
|
-
markdown_lines.append(f"**Branch:** {branch}")
|
784
|
-
markdown_lines.append("")
|
785
|
-
|
786
761
|
# Project overview (with header demotion if needed)
|
787
762
|
if overview and overview.overview:
|
788
763
|
markdown_lines.append("## Project Overview")
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/claude_api_handler.py
RENAMED
File without changes
|
File without changes
|
{mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/data/stop_words_english.txt
RENAMED
File without changes
|
File without changes
|
{mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/database/connection_health.py
RENAMED
File without changes
|
File without changes
|
{mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/database/exceptions.py
RENAMED
File without changes
|
File without changes
|
{mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/database/retry_executor.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/middleware/__init__.py
RENAMED
File without changes
|
File without changes
|
{mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/migrations/001_initial.sql
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{mcp_code_indexer-3.4.1 → mcp_code_indexer-3.4.2}/src/mcp_code_indexer/query_preprocessor.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|