mcp-code-indexer 4.2.6__py3-none-any.whl → 4.2.8__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/main.py CHANGED
@@ -8,6 +8,7 @@ Entry point for the mcp-code-indexer package when installed via pip.
8
8
  import argparse
9
9
  import asyncio
10
10
  import json
11
+ import signal
11
12
  import sys
12
13
  from pathlib import Path
13
14
  from typing import Any, Dict, List, Optional
@@ -1094,11 +1095,53 @@ async def main() -> None:
1094
1095
  if transport:
1095
1096
  transport.server = server
1096
1097
 
1097
- await server.run()
1098
+ # Setup signal handling for graceful shutdown
1099
+ shutdown_event = asyncio.Event()
1100
+
1101
+ def signal_handler(signum):
1102
+ logger.info(f"Received shutdown signal {signum}")
1103
+ shutdown_event.set()
1104
+
1105
+ # Register signal handlers
1106
+ loop = asyncio.get_running_loop()
1107
+ for sig in [signal.SIGTERM, signal.SIGINT]:
1108
+ loop.add_signal_handler(sig, signal_handler, sig)
1109
+
1110
+ # Run server and wait for shutdown signal
1111
+ server_task = asyncio.create_task(server.run())
1112
+ shutdown_task = asyncio.create_task(shutdown_event.wait())
1113
+
1114
+ try:
1115
+ # Wait for either server completion or shutdown signal
1116
+ done, pending = await asyncio.wait(
1117
+ [server_task, shutdown_task],
1118
+ return_when=asyncio.FIRST_COMPLETED
1119
+ )
1120
+
1121
+ # Cancel remaining tasks
1122
+ for task in pending:
1123
+ task.cancel()
1124
+ try:
1125
+ await task
1126
+ except asyncio.CancelledError:
1127
+ pass
1128
+
1129
+ except Exception as e:
1130
+ error_handler.log_error(e, context={"phase": "runtime"})
1131
+ raise
1098
1132
 
1099
1133
  except Exception as e:
1100
1134
  error_handler.log_error(e, context={"phase": "startup"})
1101
1135
  raise
1136
+ finally:
1137
+ # Clean up vector daemon if it was started
1138
+ if vector_daemon_task and not vector_daemon_task.done():
1139
+ logger.info("Cancelling vector daemon")
1140
+ vector_daemon_task.cancel()
1141
+ try:
1142
+ await vector_daemon_task
1143
+ except asyncio.CancelledError:
1144
+ pass
1102
1145
 
1103
1146
 
1104
1147
  def cli_main() -> None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: mcp-code-indexer
3
- Version: 4.2.6
3
+ Version: 4.2.8
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
@@ -48,8 +48,8 @@ Description-Content-Type: text/markdown
48
48
 
49
49
  # MCP Code Indexer 🚀
50
50
 
51
- [![PyPI version](https://badge.fury.io/py/mcp-code-indexer.svg?53)](https://badge.fury.io/py/mcp-code-indexer)
52
- [![Python](https://img.shields.io/pypi/pyversions/mcp-code-indexer.svg?53)](https://pypi.org/project/mcp-code-indexer/)
51
+ [![PyPI version](https://badge.fury.io/py/mcp-code-indexer.svg?55)](https://badge.fury.io/py/mcp-code-indexer)
52
+ [![Python](https://img.shields.io/pypi/pyversions/mcp-code-indexer.svg?55)](https://pypi.org/project/mcp-code-indexer/)
53
53
  [![License](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
54
54
 
55
55
  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.
@@ -19,7 +19,7 @@ mcp_code_indexer/error_handler.py,sha256=ylciEM-cR7E8Gmd8cfh5olcllJm0FnaYBGH86ya
19
19
  mcp_code_indexer/file_scanner.py,sha256=7Ab34lRQGeh5GBCzcSP96p4YK6LDWFGUHLXqi499UZ4,11838
20
20
  mcp_code_indexer/git_hook_handler.py,sha256=sTtZV3-Yy1Evt06R5NZclELeepM4Ia9OQoR2O6BK3Hk,45517
21
21
  mcp_code_indexer/logging_config.py,sha256=M5eVZ5PwfTROib7ISTQ522n2hUSc4hJ_wUgsrJKsTTg,10030
22
- mcp_code_indexer/main.py,sha256=tII1x_LHmD1T951-L1lTzXkR9Vz0z8_pNs-mznfj1CY,37133
22
+ mcp_code_indexer/main.py,sha256=fwiRj8z49oed-0L-VqMFk6P9ahrodj6DRjVzmLkvS14,38705
23
23
  mcp_code_indexer/middleware/__init__.py,sha256=UCEPzOlZldlqFzYEfrXw1HvCDvY1jpLvyaDGUzVr2aw,368
24
24
  mcp_code_indexer/middleware/auth.py,sha256=4HkHMDZBNsyPA1VE8qF7pRNKbqG4xIDZjllENbgynxI,7258
25
25
  mcp_code_indexer/middleware/error_middleware.py,sha256=0RnKM5fK_n_7AITK2ueAqv30kLBdjU3vaWOTwWd2Xs0,11965
@@ -58,8 +58,8 @@ mcp_code_indexer/vector_mode/providers/voyage_client.py,sha256=pfm9BOx5Temf0LM-V
58
58
  mcp_code_indexer/vector_mode/security/__init__.py,sha256=itfeuysSqV-m9xuo-CMkAoucxexVfPgeOU-ieTLvdls,336
59
59
  mcp_code_indexer/vector_mode/security/patterns.py,sha256=0xaiMnZm7YXswq3hVe_DJYePE9MhWuvizApLnmXus9M,11572
60
60
  mcp_code_indexer/vector_mode/security/redactor.py,sha256=tsFzhCJ99bp4EFqQVjZ-4f8Uf3ux9X4ODVR09oJG01U,13380
61
- mcp_code_indexer-4.2.6.dist-info/LICENSE,sha256=JN9dyPPgYwH9C-UjYM7FLNZjQ6BF7kAzpF3_4PwY4rY,1086
62
- mcp_code_indexer-4.2.6.dist-info/METADATA,sha256=ls_h9QUFCgYDJujnGSmscBSdOzzaXtPUYWtR2kglXfc,27483
63
- mcp_code_indexer-4.2.6.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
64
- mcp_code_indexer-4.2.6.dist-info/entry_points.txt,sha256=UABj7HZ0mC6rvF22gxaz2LLNLGQShTrFmp5u00iUtvo,67
65
- mcp_code_indexer-4.2.6.dist-info/RECORD,,
61
+ mcp_code_indexer-4.2.8.dist-info/LICENSE,sha256=JN9dyPPgYwH9C-UjYM7FLNZjQ6BF7kAzpF3_4PwY4rY,1086
62
+ mcp_code_indexer-4.2.8.dist-info/METADATA,sha256=CZYuqiv_hWpYDHgoBLAwRYWCeKw9ZMXzrvzPVgVhc2Q,27483
63
+ mcp_code_indexer-4.2.8.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
64
+ mcp_code_indexer-4.2.8.dist-info/entry_points.txt,sha256=UABj7HZ0mC6rvF22gxaz2LLNLGQShTrFmp5u00iUtvo,67
65
+ mcp_code_indexer-4.2.8.dist-info/RECORD,,