mcp-code-indexer 4.2.5__tar.gz → 4.2.6__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-4.2.5 → mcp_code_indexer-4.2.6}/PKG-INFO +3 -3
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/README.md +2 -2
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/pyproject.toml +1 -1
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/vector_mode/__init__.py +2 -1
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/vector_mode/daemon.py +18 -11
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/LICENSE +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/__init__.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/__main__.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/ask_handler.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/claude_api_handler.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/cleanup_manager.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/commands/__init__.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/commands/makelocal.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/data/stop_words_english.txt +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/database/__init__.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/database/connection_health.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/database/database.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/database/database_factory.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/database/exceptions.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/database/models.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/database/path_resolver.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/database/retry_executor.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/deepask_handler.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/error_handler.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/file_scanner.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/git_hook_handler.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/logging_config.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/main.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/middleware/__init__.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/middleware/auth.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/middleware/error_middleware.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/middleware/logging.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/middleware/security.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/migrations/001_initial.sql +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/migrations/002_performance_indexes.sql +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/migrations/003_project_overviews.sql +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/migrations/004_remove_branch_dependency.sql +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/migrations/005_remove_git_remotes.sql +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/migrations/006_vector_mode.sql +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/query_preprocessor.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/server/__init__.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/server/mcp_server.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/tiktoken_cache/9b5ad71b2ce5302211f9c61530b329a4922fc6a4 +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/token_counter.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/tools/__init__.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/transport/__init__.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/transport/base.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/transport/http_transport.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/transport/stdio_transport.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/vector_mode/chunking/__init__.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/vector_mode/chunking/ast_chunker.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/vector_mode/chunking/chunk_optimizer.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/vector_mode/chunking/language_handlers.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/vector_mode/config.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/vector_mode/monitoring/__init__.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/vector_mode/monitoring/change_detector.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/vector_mode/monitoring/file_watcher.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/vector_mode/monitoring/merkle_tree.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/vector_mode/providers/__init__.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/vector_mode/providers/turbopuffer_client.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/vector_mode/providers/voyage_client.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/vector_mode/security/__init__.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/vector_mode/security/patterns.py +0 -0
- {mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/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.
|
|
3
|
+
Version: 4.2.6
|
|
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
|
-
[](https://badge.fury.io/py/mcp-code-indexer)
|
|
52
|
+
[](https://pypi.org/project/mcp-code-indexer/)
|
|
53
53
|
[](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
|
-
[](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.
|
|
@@ -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.
|
|
7
|
+
version = "4.2.6"
|
|
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"]
|
{mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/vector_mode/__init__.py
RENAMED
|
@@ -18,9 +18,10 @@ def is_vector_mode_available() -> bool:
|
|
|
18
18
|
import turbopuffer
|
|
19
19
|
import tree_sitter
|
|
20
20
|
import watchdog
|
|
21
|
+
# PyYAML package provides yaml module
|
|
21
22
|
import yaml
|
|
22
23
|
return True
|
|
23
|
-
except ImportError:
|
|
24
|
+
except ImportError as e:
|
|
24
25
|
return False
|
|
25
26
|
|
|
26
27
|
def get_vector_config_path() -> Path:
|
{mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/vector_mode/daemon.py
RENAMED
|
@@ -39,6 +39,7 @@ class VectorDaemon:
|
|
|
39
39
|
self.cache_dir = cache_dir
|
|
40
40
|
self.is_running = False
|
|
41
41
|
self.shutdown_requested = False
|
|
42
|
+
self.shutdown_event = asyncio.Event()
|
|
42
43
|
|
|
43
44
|
# Process tracking
|
|
44
45
|
self.monitored_projects: Set[str] = set()
|
|
@@ -55,23 +56,24 @@ class VectorDaemon:
|
|
|
55
56
|
"last_activity": time.time(),
|
|
56
57
|
}
|
|
57
58
|
|
|
58
|
-
# Setup signal handlers
|
|
59
|
-
self._setup_signal_handlers()
|
|
59
|
+
# Setup signal handlers will be done in start() method to access event loop
|
|
60
60
|
|
|
61
61
|
def _setup_signal_handlers(self) -> None:
|
|
62
62
|
"""Setup signal handlers for graceful shutdown."""
|
|
63
63
|
try:
|
|
64
|
-
|
|
65
|
-
signal.signal
|
|
64
|
+
loop = asyncio.get_running_loop()
|
|
65
|
+
for sig in [signal.SIGTERM, signal.SIGINT]:
|
|
66
|
+
loop.add_signal_handler(sig, self._signal_handler, sig)
|
|
66
67
|
if hasattr(signal, 'SIGHUP'):
|
|
67
|
-
|
|
68
|
+
loop.add_signal_handler(signal.SIGHUP, self._signal_handler, signal.SIGHUP)
|
|
68
69
|
except Exception as e:
|
|
69
70
|
logger.warning(f"Could not setup signal handlers: {e}")
|
|
70
71
|
|
|
71
|
-
def _signal_handler(self, signum: int
|
|
72
|
+
def _signal_handler(self, signum: int) -> None:
|
|
72
73
|
"""Handle shutdown signals."""
|
|
73
74
|
logger.info(f"Received signal {signum}, initiating graceful shutdown")
|
|
74
75
|
self.shutdown_requested = True
|
|
76
|
+
self.shutdown_event.set()
|
|
75
77
|
|
|
76
78
|
async def start(self) -> None:
|
|
77
79
|
"""Start the vector daemon."""
|
|
@@ -80,6 +82,10 @@ class VectorDaemon:
|
|
|
80
82
|
return
|
|
81
83
|
|
|
82
84
|
self.is_running = True
|
|
85
|
+
|
|
86
|
+
# Setup signal handlers now that we have an event loop
|
|
87
|
+
self._setup_signal_handlers()
|
|
88
|
+
|
|
83
89
|
logger.info(
|
|
84
90
|
"Starting vector daemon",
|
|
85
91
|
extra={
|
|
@@ -113,13 +119,13 @@ class VectorDaemon:
|
|
|
113
119
|
finally:
|
|
114
120
|
await self._cleanup()
|
|
115
121
|
|
|
122
|
+
async def _notify_shutdown(self) -> None:
|
|
123
|
+
"""Notify shutdown event (called from signal handler)."""
|
|
124
|
+
self.shutdown_event.set()
|
|
125
|
+
|
|
116
126
|
async def _run_until_shutdown(self) -> None:
|
|
117
127
|
"""Run daemon until shutdown is requested."""
|
|
118
|
-
|
|
119
|
-
try:
|
|
120
|
-
await asyncio.sleep(1.0)
|
|
121
|
-
except asyncio.CancelledError:
|
|
122
|
-
break
|
|
128
|
+
await self.shutdown_event.wait()
|
|
123
129
|
|
|
124
130
|
async def _monitor_projects(self) -> None:
|
|
125
131
|
"""Monitor projects for vector indexing requirements."""
|
|
@@ -346,6 +352,7 @@ def main() -> None:
|
|
|
346
352
|
asyncio.run(start_vector_daemon(args.config, args.db_path, args.cache_dir))
|
|
347
353
|
except KeyboardInterrupt:
|
|
348
354
|
logger.info("Daemon interrupted by user")
|
|
355
|
+
sys.exit(0)
|
|
349
356
|
except Exception as e:
|
|
350
357
|
logger.error(f"Daemon failed: {e}", exc_info=True)
|
|
351
358
|
sys.exit(1)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/claude_api_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/commands/makelocal.py
RENAMED
|
File without changes
|
{mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/data/stop_words_english.txt
RENAMED
|
File without changes
|
|
File without changes
|
{mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/database/connection_health.py
RENAMED
|
File without changes
|
|
File without changes
|
{mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/database/database_factory.py
RENAMED
|
File without changes
|
{mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/database/exceptions.py
RENAMED
|
File without changes
|
|
File without changes
|
{mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/database/path_resolver.py
RENAMED
|
File without changes
|
{mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/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
|
|
File without changes
|
{mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/middleware/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/middleware/logging.py
RENAMED
|
File without changes
|
{mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/middleware/security.py
RENAMED
|
File without changes
|
{mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/migrations/001_initial.sql
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/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
|
{mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/transport/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/transport/http_transport.py
RENAMED
|
File without changes
|
{mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/transport/stdio_transport.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mcp_code_indexer-4.2.5 → mcp_code_indexer-4.2.6}/src/mcp_code_indexer/vector_mode/config.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|