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.
@@ -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": check.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": self._locking_events[-10:], # Last 10 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
- requirements.txt changes)
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
- requirements.txt changes)
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
- # Clean up descriptions for files that no longer exist
953
- logger.info("Cleaning up descriptions for missing files...")
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.4
1
+ Metadata-Version: 2.3
2
2
  Name: mcp-code-indexer
3
- Version: 3.1.5
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-Python: >=3.9
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
- [![PyPI version](https://badge.fury.io/py/mcp-code-indexer.svg?25)](https://badge.fury.io/py/mcp-code-indexer)
63
- [![Python](https://img.shields.io/pypi/pyversions/mcp-code-indexer.svg?25)](https://pypi.org/project/mcp-code-indexer/)
43
+ [![PyPI version](https://badge.fury.io/py/mcp-code-indexer.svg?27)](https://badge.fury.io/py/mcp-code-indexer)
44
+ [![Python](https://img.shields.io/pypi/pyversions/mcp-code-indexer.svg?27)](https://pypi.org/project/mcp-code-indexer/)
64
45
  [![License](https://img.shields.io/badge/License-MIT-blue.svg)](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 the package
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 in development mode (required)
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
- # Create and activate virtual environment
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=D0SqeYc1kunRkg1zObOqoaJ2qDw-_iq3IXRux-JQjgE,24688
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=IIFXUNvOWlMW-lnpgWwMuzTikYi0PDuiQu---MRTpMM,65761
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.1.5.dist-info/licenses/LICENSE,sha256=JN9dyPPgYwH9C-UjYM7FLNZjQ6BF7kAzpF3_4PwY4rY,1086
33
- mcp_code_indexer-3.1.5.dist-info/METADATA,sha256=kYlk6qJ9bUna23EQSI2u3Fk9jbn3Jct7Suv6Z9oc834,19849
34
- mcp_code_indexer-3.1.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
35
- mcp_code_indexer-3.1.5.dist-info/entry_points.txt,sha256=8HqWOw1Is7jOP1bvIgaSwouvT9z_Boe-9hd4NzyJOhY,68
36
- mcp_code_indexer-3.1.5.dist-info/top_level.txt,sha256=yKYCM-gMGt-cnupGfAhnZaoEsROLB6DQ1KFUuyKx4rw,17
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,5 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.9.0)
2
+ Generator: poetry-core 2.1.3
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
-
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ mcp-code-indexer=mcp_code_indexer.main:cli_main
3
+
@@ -1,2 +0,0 @@
1
- [console_scripts]
2
- mcp-code-indexer = mcp_code_indexer.main:cli_main
@@ -1 +0,0 @@
1
- mcp_code_indexer