mcp-code-indexer 3.5.0__tar.gz → 3.5.1__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.0 → mcp_code_indexer-3.5.1}/PKG-INFO +3 -3
  2. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/README.md +2 -2
  3. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/pyproject.toml +1 -1
  4. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/src/mcp_code_indexer/main.py +56 -0
  5. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/LICENSE +0 -0
  6. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/src/mcp_code_indexer/__init__.py +0 -0
  7. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/src/mcp_code_indexer/__main__.py +0 -0
  8. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/src/mcp_code_indexer/ask_handler.py +0 -0
  9. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/src/mcp_code_indexer/claude_api_handler.py +0 -0
  10. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/src/mcp_code_indexer/cleanup_manager.py +0 -0
  11. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/src/mcp_code_indexer/commands/__init__.py +0 -0
  12. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/src/mcp_code_indexer/commands/makelocal.py +0 -0
  13. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/src/mcp_code_indexer/data/stop_words_english.txt +0 -0
  14. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/src/mcp_code_indexer/database/__init__.py +0 -0
  15. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/src/mcp_code_indexer/database/connection_health.py +0 -0
  16. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/src/mcp_code_indexer/database/database.py +0 -0
  17. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/src/mcp_code_indexer/database/database_factory.py +0 -0
  18. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/src/mcp_code_indexer/database/exceptions.py +0 -0
  19. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/src/mcp_code_indexer/database/models.py +0 -0
  20. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/src/mcp_code_indexer/database/path_resolver.py +0 -0
  21. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/src/mcp_code_indexer/database/retry_executor.py +0 -0
  22. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/src/mcp_code_indexer/deepask_handler.py +0 -0
  23. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/src/mcp_code_indexer/error_handler.py +0 -0
  24. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/src/mcp_code_indexer/file_scanner.py +0 -0
  25. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/src/mcp_code_indexer/git_hook_handler.py +0 -0
  26. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/src/mcp_code_indexer/logging_config.py +0 -0
  27. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/src/mcp_code_indexer/middleware/__init__.py +0 -0
  28. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/src/mcp_code_indexer/middleware/error_middleware.py +0 -0
  29. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/src/mcp_code_indexer/migrations/001_initial.sql +0 -0
  30. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/src/mcp_code_indexer/migrations/002_performance_indexes.sql +0 -0
  31. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/src/mcp_code_indexer/migrations/003_project_overviews.sql +0 -0
  32. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/src/mcp_code_indexer/migrations/004_remove_branch_dependency.sql +0 -0
  33. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/src/mcp_code_indexer/migrations/005_remove_git_remotes.sql +0 -0
  34. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/src/mcp_code_indexer/query_preprocessor.py +0 -0
  35. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/src/mcp_code_indexer/server/__init__.py +0 -0
  36. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/src/mcp_code_indexer/server/mcp_server.py +0 -0
  37. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/src/mcp_code_indexer/tiktoken_cache/9b5ad71b2ce5302211f9c61530b329a4922fc6a4 +0 -0
  38. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/src/mcp_code_indexer/token_counter.py +0 -0
  39. {mcp_code_indexer-3.5.0 → mcp_code_indexer-3.5.1}/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.0
3
+ Version: 3.5.1
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?35)](https://badge.fury.io/py/mcp-code-indexer)
44
- [![Python](https://img.shields.io/pypi/pyversions/mcp-code-indexer.svg?35)](https://pypi.org/project/mcp-code-indexer/)
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/)
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?35)](https://badge.fury.io/py/mcp-code-indexer)
4
- [![Python](https://img.shields.io/pypi/pyversions/mcp-code-indexer.svg?35)](https://pypi.org/project/mcp-code-indexer/)
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/)
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.0"
7
+ version = "3.5.1"
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"]
@@ -110,6 +110,12 @@ def parse_arguments() -> argparse.Namespace:
110
110
  ),
111
111
  )
112
112
 
113
+ parser.add_argument(
114
+ "--makelocal",
115
+ type=str,
116
+ help="Create local database in specified folder and migrate project data from global DB",
117
+ )
118
+
113
119
  return parser.parse_args()
114
120
 
115
121
 
@@ -837,6 +843,52 @@ def generate_project_markdown(project, overview, files, logger):
837
843
  return "\n".join(markdown_lines)
838
844
 
839
845
 
846
+ async def handle_makelocal(args: argparse.Namespace) -> None:
847
+ """Handle --makelocal command."""
848
+ try:
849
+ from .database.database_factory import DatabaseFactory
850
+ from .commands.makelocal import MakeLocalCommand
851
+
852
+ # Initialize database factory
853
+ db_path = Path(args.db_path).expanduser()
854
+ cache_dir = Path(args.cache_dir).expanduser()
855
+
856
+ # Create directories if they don't exist
857
+ db_path.parent.mkdir(parents=True, exist_ok=True)
858
+ cache_dir.mkdir(parents=True, exist_ok=True)
859
+
860
+ db_factory = DatabaseFactory(
861
+ global_db_path=db_path,
862
+ pool_size=3,
863
+ retry_count=5,
864
+ timeout=10.0,
865
+ enable_wal_mode=True,
866
+ health_check_interval=30.0,
867
+ retry_min_wait=0.1,
868
+ retry_max_wait=2.0,
869
+ retry_jitter=0.2,
870
+ )
871
+
872
+ # Initialize make local command
873
+ makelocal_cmd = MakeLocalCommand(db_factory)
874
+
875
+ # Execute the command
876
+ result = await makelocal_cmd.execute(args.makelocal)
877
+
878
+ print(f"Successfully migrated project '{result['project_name']}' to local database")
879
+ print(f"Local database created at: {result['local_database_path']}")
880
+ print(f"Migrated {result['migrated_files']} file descriptions")
881
+ if result['migrated_overview']:
882
+ print("Migrated project overview")
883
+
884
+ # Close all database connections
885
+ await db_factory.close_all()
886
+
887
+ except Exception as e:
888
+ print(f"Make local command error: {e}", file=sys.stderr)
889
+ sys.exit(1)
890
+
891
+
840
892
  async def main() -> None:
841
893
  """Main entry point for the MCP server."""
842
894
  args = parse_arguments()
@@ -867,6 +919,10 @@ async def main() -> None:
867
919
  await handle_map(args)
868
920
  return
869
921
 
922
+ if args.makelocal:
923
+ await handle_makelocal(args)
924
+ return
925
+
870
926
  # Setup structured logging
871
927
  log_file = (
872
928
  Path(args.cache_dir).expanduser() / "server.log" if args.cache_dir else None