mcp-code-indexer 4.2.6__tar.gz → 4.2.8__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.
Files changed (64) hide show
  1. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/PKG-INFO +3 -3
  2. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/README.md +2 -2
  3. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/pyproject.toml +1 -1
  4. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/main.py +44 -1
  5. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/LICENSE +0 -0
  6. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/__init__.py +0 -0
  7. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/__main__.py +0 -0
  8. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/ask_handler.py +0 -0
  9. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/claude_api_handler.py +0 -0
  10. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/cleanup_manager.py +0 -0
  11. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/commands/__init__.py +0 -0
  12. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/commands/makelocal.py +0 -0
  13. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/data/stop_words_english.txt +0 -0
  14. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/database/__init__.py +0 -0
  15. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/database/connection_health.py +0 -0
  16. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/database/database.py +0 -0
  17. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/database/database_factory.py +0 -0
  18. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/database/exceptions.py +0 -0
  19. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/database/models.py +0 -0
  20. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/database/path_resolver.py +0 -0
  21. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/database/retry_executor.py +0 -0
  22. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/deepask_handler.py +0 -0
  23. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/error_handler.py +0 -0
  24. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/file_scanner.py +0 -0
  25. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/git_hook_handler.py +0 -0
  26. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/logging_config.py +0 -0
  27. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/middleware/__init__.py +0 -0
  28. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/middleware/auth.py +0 -0
  29. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/middleware/error_middleware.py +0 -0
  30. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/middleware/logging.py +0 -0
  31. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/middleware/security.py +0 -0
  32. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/migrations/001_initial.sql +0 -0
  33. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/migrations/002_performance_indexes.sql +0 -0
  34. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/migrations/003_project_overviews.sql +0 -0
  35. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/migrations/004_remove_branch_dependency.sql +0 -0
  36. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/migrations/005_remove_git_remotes.sql +0 -0
  37. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/migrations/006_vector_mode.sql +0 -0
  38. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/query_preprocessor.py +0 -0
  39. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/server/__init__.py +0 -0
  40. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/server/mcp_server.py +0 -0
  41. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/tiktoken_cache/9b5ad71b2ce5302211f9c61530b329a4922fc6a4 +0 -0
  42. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/token_counter.py +0 -0
  43. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/tools/__init__.py +0 -0
  44. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/transport/__init__.py +0 -0
  45. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/transport/base.py +0 -0
  46. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/transport/http_transport.py +0 -0
  47. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/transport/stdio_transport.py +0 -0
  48. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/vector_mode/__init__.py +0 -0
  49. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/vector_mode/chunking/__init__.py +0 -0
  50. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/vector_mode/chunking/ast_chunker.py +0 -0
  51. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/vector_mode/chunking/chunk_optimizer.py +0 -0
  52. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/vector_mode/chunking/language_handlers.py +0 -0
  53. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/vector_mode/config.py +0 -0
  54. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/vector_mode/daemon.py +0 -0
  55. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/vector_mode/monitoring/__init__.py +0 -0
  56. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/vector_mode/monitoring/change_detector.py +0 -0
  57. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/vector_mode/monitoring/file_watcher.py +0 -0
  58. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/vector_mode/monitoring/merkle_tree.py +0 -0
  59. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/vector_mode/providers/__init__.py +0 -0
  60. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/vector_mode/providers/turbopuffer_client.py +0 -0
  61. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/vector_mode/providers/voyage_client.py +0 -0
  62. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/vector_mode/security/__init__.py +0 -0
  63. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/vector_mode/security/patterns.py +0 -0
  64. {mcp_code_indexer-4.2.6 → mcp_code_indexer-4.2.8}/src/mcp_code_indexer/vector_mode/security/redactor.py +0 -0
@@ -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.
@@ -1,7 +1,7 @@
1
1
  # MCP Code Indexer 🚀
2
2
 
3
- [![PyPI version](https://badge.fury.io/py/mcp-code-indexer.svg?53)](https://badge.fury.io/py/mcp-code-indexer)
4
- [![Python](https://img.shields.io/pypi/pyversions/mcp-code-indexer.svg?53)](https://pypi.org/project/mcp-code-indexer/)
3
+ [![PyPI version](https://badge.fury.io/py/mcp-code-indexer.svg?55)](https://badge.fury.io/py/mcp-code-indexer)
4
+ [![Python](https://img.shields.io/pypi/pyversions/mcp-code-indexer.svg?55)](https://pypi.org/project/mcp-code-indexer/)
5
5
  [![License](https://img.shields.io/badge/License-MIT-blue.svg)](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.
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
4
4
 
5
5
  [tool.poetry]
6
6
  name = "mcp-code-indexer"
7
- version = "4.2.6"
7
+ version = "4.2.8"
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"]
@@ -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: