mcp-code-indexer 3.5.1__tar.gz → 3.5.2__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 (39) hide show
  1. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/PKG-INFO +3 -3
  2. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/README.md +2 -2
  3. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/pyproject.toml +1 -1
  4. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/src/mcp_code_indexer/commands/makelocal.py +18 -7
  5. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/LICENSE +0 -0
  6. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/src/mcp_code_indexer/__init__.py +0 -0
  7. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/src/mcp_code_indexer/__main__.py +0 -0
  8. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/src/mcp_code_indexer/ask_handler.py +0 -0
  9. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/src/mcp_code_indexer/claude_api_handler.py +0 -0
  10. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/src/mcp_code_indexer/cleanup_manager.py +0 -0
  11. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/src/mcp_code_indexer/commands/__init__.py +0 -0
  12. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/src/mcp_code_indexer/data/stop_words_english.txt +0 -0
  13. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/src/mcp_code_indexer/database/__init__.py +0 -0
  14. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/src/mcp_code_indexer/database/connection_health.py +0 -0
  15. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/src/mcp_code_indexer/database/database.py +0 -0
  16. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/src/mcp_code_indexer/database/database_factory.py +0 -0
  17. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/src/mcp_code_indexer/database/exceptions.py +0 -0
  18. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/src/mcp_code_indexer/database/models.py +0 -0
  19. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/src/mcp_code_indexer/database/path_resolver.py +0 -0
  20. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/src/mcp_code_indexer/database/retry_executor.py +0 -0
  21. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/src/mcp_code_indexer/deepask_handler.py +0 -0
  22. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/src/mcp_code_indexer/error_handler.py +0 -0
  23. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/src/mcp_code_indexer/file_scanner.py +0 -0
  24. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/src/mcp_code_indexer/git_hook_handler.py +0 -0
  25. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/src/mcp_code_indexer/logging_config.py +0 -0
  26. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/src/mcp_code_indexer/main.py +0 -0
  27. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/src/mcp_code_indexer/middleware/__init__.py +0 -0
  28. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/src/mcp_code_indexer/middleware/error_middleware.py +0 -0
  29. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/src/mcp_code_indexer/migrations/001_initial.sql +0 -0
  30. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/src/mcp_code_indexer/migrations/002_performance_indexes.sql +0 -0
  31. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/src/mcp_code_indexer/migrations/003_project_overviews.sql +0 -0
  32. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/src/mcp_code_indexer/migrations/004_remove_branch_dependency.sql +0 -0
  33. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/src/mcp_code_indexer/migrations/005_remove_git_remotes.sql +0 -0
  34. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/src/mcp_code_indexer/query_preprocessor.py +0 -0
  35. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/src/mcp_code_indexer/server/__init__.py +0 -0
  36. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/src/mcp_code_indexer/server/mcp_server.py +0 -0
  37. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/src/mcp_code_indexer/tiktoken_cache/9b5ad71b2ce5302211f9c61530b329a4922fc6a4 +0 -0
  38. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/src/mcp_code_indexer/token_counter.py +0 -0
  39. {mcp_code_indexer-3.5.1 → mcp_code_indexer-3.5.2}/src/mcp_code_indexer/tools/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: mcp-code-indexer
3
- Version: 3.5.1
3
+ Version: 3.5.2
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
@@ -40,8 +40,8 @@ Description-Content-Type: text/markdown
40
40
 
41
41
  # MCP Code Indexer 🚀
42
42
 
43
- [![PyPI version](https://badge.fury.io/py/mcp-code-indexer.svg?36)](https://badge.fury.io/py/mcp-code-indexer)
44
- [![Python](https://img.shields.io/pypi/pyversions/mcp-code-indexer.svg?36)](https://pypi.org/project/mcp-code-indexer/)
43
+ [![PyPI version](https://badge.fury.io/py/mcp-code-indexer.svg?37)](https://badge.fury.io/py/mcp-code-indexer)
44
+ [![Python](https://img.shields.io/pypi/pyversions/mcp-code-indexer.svg?37)](https://pypi.org/project/mcp-code-indexer/)
45
45
  [![License](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
46
46
 
47
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.
@@ -1,7 +1,7 @@
1
1
  # MCP Code Indexer 🚀
2
2
 
3
- [![PyPI version](https://badge.fury.io/py/mcp-code-indexer.svg?36)](https://badge.fury.io/py/mcp-code-indexer)
4
- [![Python](https://img.shields.io/pypi/pyversions/mcp-code-indexer.svg?36)](https://pypi.org/project/mcp-code-indexer/)
3
+ [![PyPI version](https://badge.fury.io/py/mcp-code-indexer.svg?37)](https://badge.fury.io/py/mcp-code-indexer)
4
+ [![Python](https://img.shields.io/pypi/pyversions/mcp-code-indexer.svg?37)](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 = "3.5.1"
7
+ version = "3.5.2"
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"]
@@ -52,10 +52,20 @@ class MakeLocalCommand:
52
52
  if not folder_path_obj.is_dir():
53
53
  raise ValueError(f"Path is not a directory: {folder_path}")
54
54
 
55
- # Check if local database already exists
55
+ # Check if local database already exists and has data
56
56
  local_db_path = folder_path_obj / ".code-index.db"
57
57
  if local_db_path.exists() and local_db_path.stat().st_size > 0:
58
- raise ValueError(f"Local database already exists: {local_db_path}")
58
+ # Check if it actually has project data (not just schema)
59
+ from sqlite3 import connect
60
+ try:
61
+ with connect(local_db_path) as conn:
62
+ cursor = conn.execute("SELECT COUNT(*) FROM projects")
63
+ project_count = cursor.fetchone()[0]
64
+ if project_count > 0:
65
+ raise ValueError(f"Local database already contains {project_count} project(s): {local_db_path}")
66
+ except Exception:
67
+ # If we can't check, assume it has data to be safe
68
+ raise ValueError(f"Local database already exists: {local_db_path}")
59
69
 
60
70
  # Get global database manager
61
71
  global_db_manager = await self.db_factory.get_database_manager()
@@ -78,13 +88,14 @@ class MakeLocalCommand:
78
88
  if project_overview:
79
89
  logger.info("Found project overview to migrate")
80
90
 
81
- # Create local database (remove empty file if it exists)
82
- if local_db_path.exists():
83
- local_db_path.unlink()
84
-
85
- # Create local database manager
91
+ # Create local database manager (this will initialize schema if needed)
86
92
  local_db_manager = await self.db_factory.get_database_manager(str(folder_path_obj))
87
93
 
94
+ # Check if project already exists in local database
95
+ existing_local_project = await local_db_manager.get_project(project.id)
96
+ if existing_local_project:
97
+ raise ValueError(f"Project '{project.name}' (ID: {project.id}) already exists in local database")
98
+
88
99
  # Migrate data
89
100
  await self._migrate_project_data(
90
101
  local_db_manager, project, file_descriptions, project_overview