# Thoth
MCP server providing persistent codebase memory for AI assistants.
## Overview
Thoth indexes code repositories using AST parsing and provides tools for symbol lookup, cross-repository navigation, and architecture visualization. The index persists in `~/.thoth/`, giving Claude and other MCP-compatible assistants memory across conversations.
## Installation
### Claude Desktop
Add to your configuration file:
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
- Linux: `~/.config/claude/claude_desktop_config.json`
Single repository:
```json
{
"mcpServers": {
"thoth": {
"command": "uvx",
"args": ["mcp-server-thoth", "--init", "/path/to/thoth"]
}
}
}
```
Multiple repositories:
```json
{
"mcpServers": {
"thoth": {
"command": "uvx",
"args": ["mcp-server-thoth", "--init", "/path/to/repo1", "/path/to/repo2"]
}
}
}
```
The `--init` flag indexes repositories on first run. Subsequent runs use the cached index.
## Tools
- `find_definition` - Locate symbol definitions
- `get_file_structure` - Extract functions, classes, imports from a file
- `search_symbols` - Search symbols by name pattern
- `get_callers` - Find callers of a function
- `generate_module_diagram` - Generate Mermaid dependency diagrams
- `generate_system_architecture` - Visualize cross-repository relationships
- `trace_api_flow` - Trace client-server communication paths
- `list_repositories` - List indexed repositories
## Architecture
Thoth uses Python's `ast` module for parsing (with planned tree-sitter migration for multi-language support). The index is stored in SQLite at `~/.thoth/index.db` with the following schema:
- `symbols` - Functions, classes, methods with location and parent relationships
- `imports` - Import statements with cross-repository resolution
- `calls` - Function call graph (caller → callee mapping)
- `files` - File metadata and content hashes for incremental updates
## Implementation Notes
The indexer ignores common build artifacts and virtual environments. Cross-repository imports are resolved by checking if the target repository is indexed. Call graph analysis currently tracks direct calls within the same repository.
For large monorepos, pre-index before adding to Claude:
```bash
uvx mcp-server-thoth --init /path/to/large-repo
```
## Development
```bash
git clone <repository>
cd thoth
uv pip install -e ".[dev]"
```
## License
MIT
Raw data
{
"_id": null,
"home_page": null,
"name": "mcp-server-thoth",
"maintainer": null,
"docs_url": null,
"requires_python": "<3.13,>=3.10",
"maintainer_email": "Varun Shijo <varun.shijo@gmail.com>",
"keywords": "analysis, codebase, mcp, memory, semantic-search, visualization",
"author": null,
"author_email": "Varun Shijo <varunshi@buffalo.edu>",
"download_url": "https://files.pythonhosted.org/packages/d0/f4/c81c83e555de0a51745825bc6c1849865ffb58c92b87c385c0a3c3fbc2cc/mcp_server_thoth-0.2.1.tar.gz",
"platform": null,
"description": "# Thoth\n\nMCP server providing persistent codebase memory for AI assistants.\n\n## Overview\n\nThoth indexes code repositories using AST parsing and provides tools for symbol lookup, cross-repository navigation, and architecture visualization. The index persists in `~/.thoth/`, giving Claude and other MCP-compatible assistants memory across conversations.\n\n## Installation\n\n### Claude Desktop\n\nAdd to your configuration file:\n- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`\n- Windows: `%APPDATA%\\Claude\\claude_desktop_config.json`\n- Linux: `~/.config/claude/claude_desktop_config.json`\n\nSingle repository:\n```json\n{\n \"mcpServers\": {\n \"thoth\": {\n \"command\": \"uvx\",\n \"args\": [\"mcp-server-thoth\", \"--init\", \"/path/to/thoth\"]\n }\n }\n}\n```\n\nMultiple repositories:\n```json\n{\n \"mcpServers\": {\n \"thoth\": {\n \"command\": \"uvx\",\n \"args\": [\"mcp-server-thoth\", \"--init\", \"/path/to/repo1\", \"/path/to/repo2\"]\n }\n }\n}\n```\n\nThe `--init` flag indexes repositories on first run. Subsequent runs use the cached index.\n\n\n## Tools\n\n- `find_definition` - Locate symbol definitions\n- `get_file_structure` - Extract functions, classes, imports from a file\n- `search_symbols` - Search symbols by name pattern\n- `get_callers` - Find callers of a function\n- `generate_module_diagram` - Generate Mermaid dependency diagrams\n- `generate_system_architecture` - Visualize cross-repository relationships\n- `trace_api_flow` - Trace client-server communication paths\n- `list_repositories` - List indexed repositories\n\n## Architecture\n\nThoth uses Python's `ast` module for parsing (with planned tree-sitter migration for multi-language support). The index is stored in SQLite at `~/.thoth/index.db` with the following schema:\n\n- `symbols` - Functions, classes, methods with location and parent relationships\n- `imports` - Import statements with cross-repository resolution\n- `calls` - Function call graph (caller \u2192 callee mapping)\n- `files` - File metadata and content hashes for incremental updates\n\n## Implementation Notes\n\nThe indexer ignores common build artifacts and virtual environments. Cross-repository imports are resolved by checking if the target repository is indexed. Call graph analysis currently tracks direct calls within the same repository.\n\nFor large monorepos, pre-index before adding to Claude:\n```bash\nuvx mcp-server-thoth --init /path/to/large-repo\n```\n\n## Development\n\n```bash\ngit clone <repository>\ncd thoth\nuv pip install -e \".[dev]\"\n```\n\n## License\n\nMIT",
"bugtrack_url": null,
"license": "MIT",
"summary": "MCP server for persistent codebase memory with semantic search",
"version": "0.2.1",
"project_urls": {
"Bug Tracker": "https://github.com/braininahat/thoth/issues",
"Homepage": "https://github.com/braininahat/thoth",
"Source Code": "https://github.com/braininahat/thoth"
},
"split_keywords": [
"analysis",
" codebase",
" mcp",
" memory",
" semantic-search",
" visualization"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "f998cd2955823c71cd2dcd08f479acbd8fa1f3c802700f19562a966b76037b9f",
"md5": "57adb67564adadc38fc049732d86ceaa",
"sha256": "7f338601d103b71249f12bfdc5cca6ad293802143cde4a434123e587597e1cda"
},
"downloads": -1,
"filename": "mcp_server_thoth-0.2.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "57adb67564adadc38fc049732d86ceaa",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<3.13,>=3.10",
"size": 35378,
"upload_time": "2025-07-08T20:49:32",
"upload_time_iso_8601": "2025-07-08T20:49:32.145174Z",
"url": "https://files.pythonhosted.org/packages/f9/98/cd2955823c71cd2dcd08f479acbd8fa1f3c802700f19562a966b76037b9f/mcp_server_thoth-0.2.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d0f4c81c83e555de0a51745825bc6c1849865ffb58c92b87c385c0a3c3fbc2cc",
"md5": "295d3df4c993637abc3428d63e51dcf3",
"sha256": "b24e3be8f35a17acdfdebf0fd0da7e5eecfb4dfaf5b7fa900425e4fb3e2b2621"
},
"downloads": -1,
"filename": "mcp_server_thoth-0.2.1.tar.gz",
"has_sig": false,
"md5_digest": "295d3df4c993637abc3428d63e51dcf3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<3.13,>=3.10",
"size": 320620,
"upload_time": "2025-07-08T20:49:33",
"upload_time_iso_8601": "2025-07-08T20:49:33.002218Z",
"url": "https://files.pythonhosted.org/packages/d0/f4/c81c83e555de0a51745825bc6c1849865ffb58c92b87c385c0a3c3fbc2cc/mcp_server_thoth-0.2.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-08 20:49:33",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "braininahat",
"github_project": "thoth",
"github_not_found": true,
"lcname": "mcp-server-thoth"
}