mcp-code-indexer 3.1.5__py3-none-any.whl → 3.2.0__py3-none-any.whl
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/database/connection_health.py +21 -3
- mcp_code_indexer/git_hook_handler.py +2 -2
- mcp_code_indexer/server/mcp_server.py +97 -6
- {mcp_code_indexer-3.1.5.dist-info → mcp_code_indexer-3.2.0.dist-info}/METADATA +42 -53
- {mcp_code_indexer-3.1.5.dist-info → mcp_code_indexer-3.2.0.dist-info}/RECORD +15 -16
- {mcp_code_indexer-3.1.5.dist-info → mcp_code_indexer-3.2.0.dist-info}/WHEEL +1 -2
- mcp_code_indexer-3.2.0.dist-info/entry_points.txt +3 -0
- mcp_code_indexer-3.1.5.dist-info/entry_points.txt +0 -2
- mcp_code_indexer-3.1.5.dist-info/top_level.txt +0 -1
- {mcp_code_indexer-3.1.5.dist-info/licenses → mcp_code_indexer-3.2.0.dist-info}/LICENSE +0 -0
@@ -362,7 +362,11 @@ class ConnectionHealthMonitor:
|
|
362
362
|
"timestamp": check.timestamp.isoformat(),
|
363
363
|
"is_healthy": check.is_healthy,
|
364
364
|
"response_time_ms": check.response_time_ms,
|
365
|
-
"error_message":
|
365
|
+
"error_message": (
|
366
|
+
check.error_message[:500] + "..."
|
367
|
+
if check.error_message and len(check.error_message) > 500
|
368
|
+
else check.error_message
|
369
|
+
),
|
366
370
|
}
|
367
371
|
for check in recent_checks
|
368
372
|
]
|
@@ -622,7 +626,7 @@ class DatabaseMetricsCollector:
|
|
622
626
|
event = {
|
623
627
|
"timestamp": datetime.utcnow().isoformat(),
|
624
628
|
"operation_name": operation_name,
|
625
|
-
"error_message": error_message,
|
629
|
+
"error_message": error_message[:1000] if error_message else None,
|
626
630
|
}
|
627
631
|
|
628
632
|
self._locking_events.append(event)
|
@@ -666,11 +670,25 @@ class DatabaseMetricsCollector:
|
|
666
670
|
operation_counts.items(), key=lambda x: x[1], reverse=True
|
667
671
|
)[:5]
|
668
672
|
|
673
|
+
# Truncate error messages to prevent massive responses
|
674
|
+
recent_events_truncated = []
|
675
|
+
for event in self._locking_events[-10:]: # Last 10 events
|
676
|
+
truncated_event = {
|
677
|
+
"timestamp": event["timestamp"],
|
678
|
+
"operation_name": event["operation_name"],
|
679
|
+
"error_message": (
|
680
|
+
event["error_message"][:500] + "..."
|
681
|
+
if len(event["error_message"]) > 500
|
682
|
+
else event["error_message"]
|
683
|
+
),
|
684
|
+
}
|
685
|
+
recent_events_truncated.append(truncated_event)
|
686
|
+
|
669
687
|
return {
|
670
688
|
"total_events": len(self._locking_events),
|
671
689
|
"events_last_hour": len(recent_events),
|
672
690
|
"most_frequent_operations": [
|
673
691
|
{"operation": op, "count": count} for op, count in most_frequent
|
674
692
|
],
|
675
|
-
"recent_events":
|
693
|
+
"recent_events": recent_events_truncated,
|
676
694
|
}
|
@@ -313,7 +313,7 @@ INSTRUCTIONS:
|
|
313
313
|
directories)
|
314
314
|
- Architectural changes (new patterns, frameworks, or approaches)
|
315
315
|
- Significant dependency additions (Cargo.toml, package.json,
|
316
|
-
|
316
|
+
pyproject.toml changes)
|
317
317
|
- New API endpoints or workflows
|
318
318
|
- Changes to build/deployment processes
|
319
319
|
|
@@ -613,7 +613,7 @@ Update project overview ONLY if there are major structural changes like:
|
|
613
613
|
- New major features or components (indicated by commit message or new directories)
|
614
614
|
- Architectural changes (new patterns, frameworks, or approaches)
|
615
615
|
- Significant dependency additions (Cargo.toml, package.json,
|
616
|
-
|
616
|
+
pyproject.toml changes)
|
617
617
|
- New API endpoints or workflows
|
618
618
|
- Changes to build/deployment processes
|
619
619
|
|
@@ -34,6 +34,7 @@ from mcp_code_indexer.middleware.error_middleware import (
|
|
34
34
|
AsyncTaskManager,
|
35
35
|
)
|
36
36
|
from mcp_code_indexer.logging_config import get_logger
|
37
|
+
from mcp_code_indexer.cleanup_manager import CleanupManager
|
37
38
|
|
38
39
|
|
39
40
|
logger = logging.getLogger(__name__)
|
@@ -106,6 +107,7 @@ class MCPCodeIndexServer:
|
|
106
107
|
retry_jitter=retry_jitter,
|
107
108
|
)
|
108
109
|
self.token_counter = TokenCounter(token_limit)
|
110
|
+
self.cleanup_manager = CleanupManager(self.db_manager, retention_months=6)
|
109
111
|
|
110
112
|
# Setup error handling
|
111
113
|
self.logger = get_logger(__name__)
|
@@ -119,6 +121,11 @@ class MCPCodeIndexServer:
|
|
119
121
|
# Register handlers
|
120
122
|
self._register_handlers()
|
121
123
|
|
124
|
+
# Background cleanup task tracking
|
125
|
+
self._cleanup_task: Optional[asyncio.Task] = None
|
126
|
+
self._last_cleanup_time: Optional[float] = None
|
127
|
+
self._cleanup_running: bool = False
|
128
|
+
|
122
129
|
# Add debug logging for server events
|
123
130
|
self.logger.debug("MCP server instance created and handlers registered")
|
124
131
|
|
@@ -233,6 +240,7 @@ class MCPCodeIndexServer:
|
|
233
240
|
async def initialize(self) -> None:
|
234
241
|
"""Initialize database and other resources."""
|
235
242
|
await self.db_manager.initialize()
|
243
|
+
self._start_background_cleanup()
|
236
244
|
logger.info("Server initialized successfully")
|
237
245
|
|
238
246
|
def _register_handlers(self) -> None:
|
@@ -949,12 +957,8 @@ class MCPCodeIndexServer:
|
|
949
957
|
|
950
958
|
logger.info(f"Resolved project_id: {project_id}")
|
951
959
|
|
952
|
-
#
|
953
|
-
|
954
|
-
cleaned_up_files = await self.db_manager.cleanup_missing_files(
|
955
|
-
project_id=project_id, project_root=folder_path
|
956
|
-
)
|
957
|
-
logger.info(f"Cleaned up {len(cleaned_up_files)} missing files")
|
960
|
+
# Run cleanup if needed (respects 30-minute cooldown)
|
961
|
+
await self._run_cleanup_if_needed()
|
958
962
|
|
959
963
|
# Get file descriptions for this project (after cleanup)
|
960
964
|
logger.info("Retrieving file descriptions...")
|
@@ -1472,6 +1476,85 @@ class MCPCodeIndexServer:
|
|
1472
1476
|
)
|
1473
1477
|
raise
|
1474
1478
|
|
1479
|
+
async def _periodic_cleanup(self) -> None:
|
1480
|
+
"""Background task that performs cleanup every 6 hours."""
|
1481
|
+
while True:
|
1482
|
+
try:
|
1483
|
+
await asyncio.sleep(6 * 60 * 60) # 6 hours
|
1484
|
+
await self._run_cleanup_if_needed()
|
1485
|
+
|
1486
|
+
except asyncio.CancelledError:
|
1487
|
+
logger.info("Periodic cleanup task cancelled")
|
1488
|
+
break
|
1489
|
+
except Exception as e:
|
1490
|
+
logger.error(f"Error in periodic cleanup: {e}")
|
1491
|
+
# Continue running despite errors
|
1492
|
+
|
1493
|
+
async def _run_cleanup_if_needed(self) -> None:
|
1494
|
+
"""Run cleanup if conditions are met (not running, not run recently)."""
|
1495
|
+
current_time = time.time()
|
1496
|
+
|
1497
|
+
# Check if cleanup is already running
|
1498
|
+
if self._cleanup_running:
|
1499
|
+
logger.debug("Cleanup already running, skipping")
|
1500
|
+
return
|
1501
|
+
|
1502
|
+
# Check if cleanup was run in the last 30 minutes
|
1503
|
+
if (self._last_cleanup_time and
|
1504
|
+
current_time - self._last_cleanup_time < 30 * 60):
|
1505
|
+
logger.debug("Cleanup ran recently, skipping")
|
1506
|
+
return
|
1507
|
+
|
1508
|
+
# Set running flag and update time
|
1509
|
+
self._cleanup_running = True
|
1510
|
+
self._last_cleanup_time = current_time
|
1511
|
+
|
1512
|
+
try:
|
1513
|
+
logger.info("Starting cleanup")
|
1514
|
+
|
1515
|
+
# Get all projects and run cleanup on each
|
1516
|
+
projects = await self.db_manager.get_all_projects()
|
1517
|
+
total_cleaned = 0
|
1518
|
+
|
1519
|
+
for project in projects:
|
1520
|
+
try:
|
1521
|
+
# Cleanup missing files
|
1522
|
+
missing_files = await self.db_manager.cleanup_missing_files(
|
1523
|
+
project_id=project.id,
|
1524
|
+
project_root=Path(project.folder_path)
|
1525
|
+
)
|
1526
|
+
total_cleaned += len(missing_files)
|
1527
|
+
|
1528
|
+
# Perform permanent cleanup (retention policy)
|
1529
|
+
deleted_count = await self.cleanup_manager.perform_cleanup(
|
1530
|
+
project_id=project.id
|
1531
|
+
)
|
1532
|
+
|
1533
|
+
if missing_files or deleted_count:
|
1534
|
+
logger.info(
|
1535
|
+
f"Cleanup for {project.name}: "
|
1536
|
+
f"{len(missing_files)} marked, "
|
1537
|
+
f"{deleted_count} permanently deleted"
|
1538
|
+
)
|
1539
|
+
except Exception as e:
|
1540
|
+
logger.error(
|
1541
|
+
f"Error during cleanup for project {project.name}: {e}"
|
1542
|
+
)
|
1543
|
+
|
1544
|
+
logger.info(f"Cleanup completed: {total_cleaned} files processed")
|
1545
|
+
|
1546
|
+
finally:
|
1547
|
+
self._cleanup_running = False
|
1548
|
+
|
1549
|
+
def _start_background_cleanup(self) -> None:
|
1550
|
+
"""Start the background cleanup task."""
|
1551
|
+
if self._cleanup_task is None or self._cleanup_task.done():
|
1552
|
+
self._cleanup_task = self.task_manager.create_task(
|
1553
|
+
self._periodic_cleanup(),
|
1554
|
+
name="periodic_cleanup"
|
1555
|
+
)
|
1556
|
+
logger.info("Started background cleanup task (6-hour interval)")
|
1557
|
+
|
1475
1558
|
async def run(self) -> None:
|
1476
1559
|
"""Run the MCP server with robust error handling."""
|
1477
1560
|
logger.info("Starting server initialization...")
|
@@ -1562,6 +1645,14 @@ class MCPCodeIndexServer:
|
|
1562
1645
|
async def shutdown(self) -> None:
|
1563
1646
|
"""Clean shutdown of server resources."""
|
1564
1647
|
try:
|
1648
|
+
# Cancel background cleanup task
|
1649
|
+
if self._cleanup_task and not self._cleanup_task.done():
|
1650
|
+
self._cleanup_task.cancel()
|
1651
|
+
try:
|
1652
|
+
await self._cleanup_task
|
1653
|
+
except asyncio.CancelledError:
|
1654
|
+
pass
|
1655
|
+
|
1565
1656
|
# Cancel any running tasks
|
1566
1657
|
self.task_manager.cancel_all()
|
1567
1658
|
|
@@ -1,66 +1,47 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.3
|
2
2
|
Name: mcp-code-indexer
|
3
|
-
Version: 3.
|
3
|
+
Version: 3.2.0
|
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
|
-
Author: MCP Code Indexer Contributors
|
6
|
-
Maintainer: MCP Code Indexer Contributors
|
7
5
|
License: MIT
|
8
|
-
Project-URL: Homepage, https://github.com/fluffypony/mcp-code-indexer
|
9
|
-
Project-URL: Repository, https://github.com/fluffypony/mcp-code-indexer
|
10
|
-
Project-URL: Issues, https://github.com/fluffypony/mcp-code-indexer/issues
|
11
|
-
Project-URL: Documentation, https://github.com/fluffypony/mcp-code-indexer/blob/main/README.md
|
12
6
|
Keywords: mcp,model-context-protocol,code-indexer,ai-tools,codebase-navigation,file-descriptions,llm-tools
|
7
|
+
Author: MCP Code Indexer Contributors
|
8
|
+
Maintainer: MCP Code Indexer Contributors
|
9
|
+
Requires-Python: >=3.9,<4.0
|
13
10
|
Classifier: Development Status :: 5 - Production/Stable
|
11
|
+
Classifier: Environment :: Console
|
12
|
+
Classifier: Framework :: AsyncIO
|
14
13
|
Classifier: Intended Audience :: Developers
|
15
14
|
Classifier: License :: OSI Approved :: MIT License
|
16
15
|
Classifier: Operating System :: OS Independent
|
17
16
|
Classifier: Programming Language :: Python :: 3
|
18
|
-
Classifier: Programming Language :: Python :: 3.13
|
19
17
|
Classifier: Programming Language :: Python :: 3.9
|
20
18
|
Classifier: Programming Language :: Python :: 3.10
|
21
19
|
Classifier: Programming Language :: Python :: 3.11
|
22
20
|
Classifier: Programming Language :: Python :: 3.12
|
21
|
+
Classifier: Programming Language :: Python :: 3.13
|
22
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
23
23
|
Classifier: Topic :: Software Development
|
24
24
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
25
|
-
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
26
|
-
Classifier: Framework :: AsyncIO
|
27
|
-
Classifier: Environment :: Console
|
28
25
|
Classifier: Typing :: Typed
|
29
|
-
Requires-
|
26
|
+
Requires-Dist: aiofiles (==23.2.0)
|
27
|
+
Requires-Dist: aiohttp (>=3.8.0)
|
28
|
+
Requires-Dist: aiosqlite (==0.19.0)
|
29
|
+
Requires-Dist: gitignore-parser (==0.1.11)
|
30
|
+
Requires-Dist: importlib-metadata (>=1.0.0) ; python_version < "3.8"
|
31
|
+
Requires-Dist: mcp (>=1.9.0)
|
32
|
+
Requires-Dist: pydantic (>=2.8.0)
|
33
|
+
Requires-Dist: tenacity (>=8.0.0)
|
34
|
+
Requires-Dist: tiktoken (>=0.9.0)
|
35
|
+
Requires-Dist: tomli (>=1.2.0) ; python_version < "3.11"
|
36
|
+
Project-URL: Documentation, https://github.com/fluffypony/mcp-code-indexer/blob/main/README.md
|
37
|
+
Project-URL: Homepage, https://github.com/fluffypony/mcp-code-indexer
|
38
|
+
Project-URL: Repository, https://github.com/fluffypony/mcp-code-indexer
|
30
39
|
Description-Content-Type: text/markdown
|
31
|
-
License-File: LICENSE
|
32
|
-
Requires-Dist: tiktoken>=0.9.0
|
33
|
-
Requires-Dist: mcp>=1.9.0
|
34
|
-
Requires-Dist: gitignore_parser==0.1.11
|
35
|
-
Requires-Dist: pydantic>=2.8.0
|
36
|
-
Requires-Dist: aiofiles==23.2.0
|
37
|
-
Requires-Dist: aiosqlite==0.19.0
|
38
|
-
Requires-Dist: aiohttp>=3.8.0
|
39
|
-
Requires-Dist: tenacity>=8.0.0
|
40
|
-
Requires-Dist: tomli>=1.2.0; python_version < "3.11"
|
41
|
-
Requires-Dist: importlib-metadata>=1.0.0; python_version < "3.8"
|
42
|
-
Provides-Extra: dev
|
43
|
-
Requires-Dist: pytest>=8.0.0; extra == "dev"
|
44
|
-
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
|
45
|
-
Requires-Dist: pytest-mock>=3.11.0; extra == "dev"
|
46
|
-
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
|
47
|
-
Requires-Dist: black>=24.0.0; extra == "dev"
|
48
|
-
Requires-Dist: isort>=5.12.0; extra == "dev"
|
49
|
-
Requires-Dist: flake8>=7.0.0; extra == "dev"
|
50
|
-
Requires-Dist: mypy>=1.8.0; extra == "dev"
|
51
|
-
Requires-Dist: pre-commit>=3.5.0; extra == "dev"
|
52
|
-
Provides-Extra: test
|
53
|
-
Requires-Dist: pytest>=8.0.0; extra == "test"
|
54
|
-
Requires-Dist: pytest-asyncio>=0.21.0; extra == "test"
|
55
|
-
Requires-Dist: pytest-mock>=3.11.0; extra == "test"
|
56
|
-
Requires-Dist: pytest-cov>=4.0.0; extra == "test"
|
57
|
-
Dynamic: license-file
|
58
|
-
Dynamic: requires-python
|
59
40
|
|
60
41
|
# MCP Code Indexer 🚀
|
61
42
|
|
62
|
-
[](https://badge.fury.io/py/mcp-code-indexer)
|
44
|
+
[](https://pypi.org/project/mcp-code-indexer/)
|
64
45
|
[](https://opensource.org/licenses/MIT)
|
65
46
|
|
66
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.
|
@@ -83,7 +64,10 @@ Perfect for AI-powered code review, refactoring tools, documentation generation,
|
|
83
64
|
Get started integrating MCP Code Indexer into your AI agent workflow:
|
84
65
|
|
85
66
|
```bash
|
86
|
-
# Install
|
67
|
+
# Install with Poetry
|
68
|
+
poetry add mcp-code-indexer
|
69
|
+
|
70
|
+
# Or with pip
|
87
71
|
pip install mcp-code-indexer
|
88
72
|
|
89
73
|
# Start the MCP server
|
@@ -113,7 +97,7 @@ mcp-code-indexer --version
|
|
113
97
|
|
114
98
|
**New to MCP Code Indexer?** Start here:
|
115
99
|
|
116
|
-
1. **Install**: `pip install mcp-code-indexer`
|
100
|
+
1. **Install**: `poetry add mcp-code-indexer` (or `pip install mcp-code-indexer`)
|
117
101
|
2. **Run**: `mcp-code-indexer --token-limit 32000`
|
118
102
|
3. **Connect**: Use your favorite MCP client
|
119
103
|
4. **Explore**: Try the `check_codebase_size` tool first
|
@@ -125,7 +109,10 @@ mcp-code-indexer --version
|
|
125
109
|
git clone https://github.com/fluffypony/mcp-code-indexer.git
|
126
110
|
cd mcp-code-indexer
|
127
111
|
|
128
|
-
# Install
|
112
|
+
# Install with Poetry (recommended)
|
113
|
+
poetry install
|
114
|
+
|
115
|
+
# Or install in development mode with pip
|
129
116
|
pip install -e .
|
130
117
|
|
131
118
|
# Run the server
|
@@ -181,14 +168,12 @@ Contributing to MCP Code Indexer? Follow these steps for a proper development en
|
|
181
168
|
git clone https://github.com/fluffypony/mcp-code-indexer.git
|
182
169
|
cd mcp-code-indexer
|
183
170
|
|
184
|
-
#
|
171
|
+
# Install with Poetry (recommended)
|
172
|
+
poetry install
|
173
|
+
|
174
|
+
# Or use pip with virtual environment
|
185
175
|
python -m venv venv
|
186
176
|
source venv/bin/activate # On Windows: venv\Scripts\activate
|
187
|
-
|
188
|
-
# Install package in editable mode (REQUIRED for development)
|
189
|
-
pip install -e .
|
190
|
-
|
191
|
-
# Install development dependencies
|
192
177
|
pip install -e .[dev]
|
193
178
|
|
194
179
|
# Verify installation
|
@@ -439,7 +424,10 @@ async def analyze_codebase(project_path):
|
|
439
424
|
## 🧪 Testing
|
440
425
|
|
441
426
|
```bash
|
442
|
-
# Install with test dependencies
|
427
|
+
# Install with test dependencies using Poetry
|
428
|
+
poetry install --with test
|
429
|
+
|
430
|
+
# Or with pip
|
443
431
|
pip install mcp-code-indexer[test]
|
444
432
|
|
445
433
|
# Run full test suite
|
@@ -559,3 +547,4 @@ MIT License - see **[LICENSE](LICENSE)** for details.
|
|
559
547
|
🎯 **New User?** [Get started in 2 minutes](#-quick-start)
|
560
548
|
👨💻 **Developer?** [Explore the complete API](docs/api-reference.md)
|
561
549
|
🔧 **Production?** [Deploy with confidence](docs/configuration.md)
|
550
|
+
|
@@ -3,21 +3,19 @@ mcp_code_indexer/__main__.py,sha256=4Edinoe0ug43hobuLYcjTmGp2YJnlFYN4_8iKvUBJ0Q,
|
|
3
3
|
mcp_code_indexer/ask_handler.py,sha256=cy7gVFyXF0c10GZ3Aquktvgw1A8e4_NtBsbjlE1Bc84,9106
|
4
4
|
mcp_code_indexer/claude_api_handler.py,sha256=uZF6P64Cac9AHfO2Q3Whe4exhZyZmqZ1grWT1nHw-Wc,13616
|
5
5
|
mcp_code_indexer/cleanup_manager.py,sha256=qjIAMiJ-F1pfgCwVbNaNE0dfs8Wh9aaWh51DBMCWFuI,9491
|
6
|
-
mcp_code_indexer/deepask_handler.py,sha256=wpKMYnlsOGiaKLvuXIb62jeEb4xnYOmIcvvXjvbgdnc,18475
|
7
|
-
mcp_code_indexer/error_handler.py,sha256=XBjjEriq1diPTGKpHcaBh9fj88_qhuNMwPeLiTWxrds,11431
|
8
|
-
mcp_code_indexer/file_scanner.py,sha256=smY1Yfxfyqb_J5RQz5ETaSgE2_syC2SUUwzJxby3Bg8,11432
|
9
|
-
mcp_code_indexer/git_hook_handler.py,sha256=bEsmoGZJfBxJuVYYzXp-XhIdUmYgxdUptHWq05va9Fo,34453
|
10
|
-
mcp_code_indexer/logging_config.py,sha256=hexJWw7-6QQkH_2BwtKGO1CDOtQnP8F3Yss_yHKnzE4,9816
|
11
|
-
mcp_code_indexer/main.py,sha256=GjwUtfQCxNxsCNtYpEBfYgOC0G5Q0Bcci4keVtNY3Cc,31888
|
12
|
-
mcp_code_indexer/query_preprocessor.py,sha256=PLFR1T9mSn2Mkxw6-GB4GkxyfzjJ2ia3dgLPcziHfVA,5483
|
13
|
-
mcp_code_indexer/token_counter.py,sha256=e6WsyCEWMMSkMwLbcVtr5e8vEqh-kFqNmiJErCNdqHE,8220
|
14
6
|
mcp_code_indexer/data/stop_words_english.txt,sha256=7Zdd9ameVgA6tN_zuXROvHXD4hkWeELVywPhb7FJEkw,6343
|
15
7
|
mcp_code_indexer/database/__init__.py,sha256=aPq_aaRp0aSwOBIq9GkuMNjmLxA411zg2vhdrAuHm-w,38
|
16
|
-
mcp_code_indexer/database/connection_health.py,sha256=
|
8
|
+
mcp_code_indexer/database/connection_health.py,sha256=zhw6WLR-YVDUKM9tQLcpcEM0yoaheYYzpa0iSMS-_N4,25476
|
17
9
|
mcp_code_indexer/database/database.py,sha256=BpsWoy5qXqLQpEZ42dt5efOGSrLhokQyvAc9ZK0afc4,46895
|
18
10
|
mcp_code_indexer/database/exceptions.py,sha256=Cs9_qc-6724DPJc25fPMvNfO3JQCHrOQ80y8Q55w_3Y,10389
|
19
11
|
mcp_code_indexer/database/models.py,sha256=ITF5dMSBCuaunQ3YeaVQOZ5Kb8y59I5Fg0EU7O9Ez3A,7017
|
20
12
|
mcp_code_indexer/database/retry_executor.py,sha256=wBIIbkU1bwQMrjM9AmDWNEQ-cw8IPNobfdeUOLhQVjQ,13528
|
13
|
+
mcp_code_indexer/deepask_handler.py,sha256=wpKMYnlsOGiaKLvuXIb62jeEb4xnYOmIcvvXjvbgdnc,18475
|
14
|
+
mcp_code_indexer/error_handler.py,sha256=XBjjEriq1diPTGKpHcaBh9fj88_qhuNMwPeLiTWxrds,11431
|
15
|
+
mcp_code_indexer/file_scanner.py,sha256=smY1Yfxfyqb_J5RQz5ETaSgE2_syC2SUUwzJxby3Bg8,11432
|
16
|
+
mcp_code_indexer/git_hook_handler.py,sha256=HvD8vRcIxTpYTMyUk1JfTF8IIHFgQ3RghMcmNlXRKco,34447
|
17
|
+
mcp_code_indexer/logging_config.py,sha256=hexJWw7-6QQkH_2BwtKGO1CDOtQnP8F3Yss_yHKnzE4,9816
|
18
|
+
mcp_code_indexer/main.py,sha256=GjwUtfQCxNxsCNtYpEBfYgOC0G5Q0Bcci4keVtNY3Cc,31888
|
21
19
|
mcp_code_indexer/middleware/__init__.py,sha256=p-mP0pMsfiU2yajCPvokCUxUEkh_lu4XJP1LyyMW2ug,220
|
22
20
|
mcp_code_indexer/middleware/error_middleware.py,sha256=YHd7sm4PdNPIMKD8Nub_N7WaOH2JtiqkHBbTOGyxTno,11685
|
23
21
|
mcp_code_indexer/migrations/001_initial.sql,sha256=hIXkCP4LA_4A9HJ1CHU0a1DD-a6EN6u-uJPMqW0c2Yo,4120
|
@@ -25,13 +23,14 @@ mcp_code_indexer/migrations/002_performance_indexes.sql,sha256=FlKbmcJyKAHTKmjxm
|
|
25
23
|
mcp_code_indexer/migrations/003_project_overviews.sql,sha256=pPzn7UmJ_Bda9mJ1nYTN1GeuYwdQHC7Fva6PvWaucUw,891
|
26
24
|
mcp_code_indexer/migrations/004_remove_branch_dependency.sql,sha256=whZvj2qfba1-Xq7Vg4IfpCpIrRKN21AdtG0gZbFSRi4,6466
|
27
25
|
mcp_code_indexer/migrations/005_remove_git_remotes.sql,sha256=vT84AaV1hyN4zq5W67hR14TgAwhW7_RNtBHrCoksxA4,1299
|
26
|
+
mcp_code_indexer/query_preprocessor.py,sha256=PLFR1T9mSn2Mkxw6-GB4GkxyfzjJ2ia3dgLPcziHfVA,5483
|
28
27
|
mcp_code_indexer/server/__init__.py,sha256=16xMcuriUOBlawRqWNBk6niwrvtv_JD5xvI36X1Vsmk,41
|
29
|
-
mcp_code_indexer/server/mcp_server.py,sha256=
|
28
|
+
mcp_code_indexer/server/mcp_server.py,sha256=LdwuwXJch8UqvODi_UlYRiwNbyjs_2Xy8LW3eWyUaJw,69423
|
30
29
|
mcp_code_indexer/tiktoken_cache/9b5ad71b2ce5302211f9c61530b329a4922fc6a4,sha256=Ijkht27pm96ZW3_3OFE-7xAPtR0YyTWXoRO8_-hlsqc,1681126
|
30
|
+
mcp_code_indexer/token_counter.py,sha256=e6WsyCEWMMSkMwLbcVtr5e8vEqh-kFqNmiJErCNdqHE,8220
|
31
31
|
mcp_code_indexer/tools/__init__.py,sha256=m01mxML2UdD7y5rih_XNhNSCMzQTz7WQ_T1TeOcYlnE,49
|
32
|
-
mcp_code_indexer-3.
|
33
|
-
mcp_code_indexer-3.
|
34
|
-
mcp_code_indexer-3.
|
35
|
-
mcp_code_indexer-3.
|
36
|
-
mcp_code_indexer-3.
|
37
|
-
mcp_code_indexer-3.1.5.dist-info/RECORD,,
|
32
|
+
mcp_code_indexer-3.2.0.dist-info/LICENSE,sha256=JN9dyPPgYwH9C-UjYM7FLNZjQ6BF7kAzpF3_4PwY4rY,1086
|
33
|
+
mcp_code_indexer-3.2.0.dist-info/METADATA,sha256=5xv50l_Rel6AZ9HaXnghtiXC6wySm86ulch8QsUZwCY,19191
|
34
|
+
mcp_code_indexer-3.2.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
35
|
+
mcp_code_indexer-3.2.0.dist-info/entry_points.txt,sha256=UABj7HZ0mC6rvF22gxaz2LLNLGQShTrFmp5u00iUtvo,67
|
36
|
+
mcp_code_indexer-3.2.0.dist-info/RECORD,,
|
@@ -1 +0,0 @@
|
|
1
|
-
mcp_code_indexer
|
File without changes
|