🐱 Catcot
Semantic code search MCP server for Claude Code
Index your codebase, search with natural language, save tokens.
______________________________________________________________________
Catcot是一个本地MCP服务器,赋予Claude Code语义代码搜索超能力。它使用多提供者嵌入和ChromaDB对您的项目进行索引,然后提供相关的代码块而不是整个文件,从而节省令牌和资金。
特性
- 语义搜索 --使用“数据库连接池”等自然语言查询查找代码
- 代币储蓄跟踪 --查看您每次搜索节省了多少代币和美元
- 代码审查 --使用Gemini、Ollama、Anthropic或OpenAI进行多模型评审
- Git集成 --搜索修改过的文件,查看语义上下文中的差异
- 树保姆Chunking --AST感知的代码拆分可获得准确的结果
- 项目拓扑结构 --可视化你的代码库如何集群成组件
- 上下文扩展 --展开搜索结果以查看周围的代码
- 持久内存 --跨会话存储项目知识(环境路径、构建命令、拱形决策)
- 观看模式 --保存文件时自动重新索引
- Web仪表板 --可视化概述,包括节省统计数据、嵌入映射和内存浏览器
快速开始
先决条件
- Python 3.10+
- 至少一个嵌入提供程序(自动检测,本地优先):
- 奥拉玛 (推荐): ollama pull nomic-embed-text - 本地/ONX: pip install fastembed --无需服务器 - 基于API:设置 GOOGLE_API_KEY, OPENAI_API_KEY,或 VOYAGE_API_KEY
安装
git clone https://github.com/Birkankader/catcot-mcp.git
cd catcot-mcp
python -m venv .venv
source .venv/bin/activate
pip install -e . # core dependencies
pip install -e ".[treesitter]" # + tree-sitter AST chunking
pip install -e ".[all]" # everything (tree-sitter + watchdog + fastembed)使用克劳德代码注册
claude mcp add -s user catcot -- /path/to/catcot-mcp/.venv/bin/python -m catcot使用
在Claude Code中,自然地问:
> search for authentication middleware in my project
> index /path/to/my/project
> review the file src/auth.py
> show me the project map克劳德将自动使用Catcot的工具。
工具(15)
| 工具 | 说明 |
|---|---|
search_code | 跨索引代码的语义搜索 |
index_project | 为项目目录建立索引 |
reindex_project | 从头开始重新索引 |
list_indexed_projects | 列出所有索引项目 |
get_embedding_status | 检查活动嵌入提供程序和型号 |
code_review | 基于语义上下文的人工智能代码审查 |
search_modified_files | 仅在最近更改的文件中搜索(git) |
review_diff | 使用相关代码上下文查看git diff |
generate_project_map | 项目组件语义图 |
get_chunk_context | 用周围的线条展开搜索结果 |
watch_project | 在文件保存时启动/停止自动索引 |
store_memory | 跨会话存储持久的项目知识 |
recall_memory | 通过按键、标签或自然语言回忆记忆 |
list_project_memories | 列出项目的所有存储内存 |
delete_project_memory | 按键删除特定内存 |
仪表盘
直接运行服务器以启动web仪表板:
python -m catcot开放时间: http://localhost:9850 与:
- 代币节省统计数据和7天趋势
- 索引项目概述
- 二维嵌入空间可视化
- 架构和快速入门指南
嵌入提供者
Catcot自动检测最佳可用嵌入提供商 本地优先 方法:
| 优先级 | 提供商 | 型号 | 尺寸 | 需要 |
|---|---|---|---|---|
| 1 | Ollama | nomic嵌入文本 | 768 | ollama serve |
| 2 | 本地/ONNX | BAAI/bge-small-en-v1.5 | 384 | pip install fastembed |
| 3 | 谷歌 | 文本嵌入-004 | 768 | GOOGLE_API_KEY |
| 4 | OpenAI | 文本嵌入3-small | 1536 | OPENAI_API_KEY |
| 5 | 航行 | 3次航行 | 512 | VOYAGE_API_KEY |
强制特定提供者: CATCOT_EMBEDDING_PROVIDER=ollama|local|google|openai|voyage
支持的语言
树型AST组块(首选): Python、JavaScript、TypeScript、TSX、Java、Kotlin、SQL
其他文件类型又回到了通用的滑动窗口分块器。
建筑
catcot/
├── __init__.py # Package init, version
├── __main__.py # `python -m catcot` entry point
├── server.py # MCP tool registrations (FastMCP)
├── config.py # Paths, ChromaDB helpers
│
├── core/ # Core indexing & search
│ ├── embedder.py # Multi-provider embedding client
│ ├── indexer.py # File scanning & chunk indexing
│ └── searcher.py # ChromaDB vector search
│
├── chunkers/ # Code chunking (tree-sitter + regex)
│ ├── base.py # Base chunker & Chunk dataclass
│ ├── treesitter_chunker.py
│ ├── python_chunker.py
│ ├── js_ts_chunker.py
│ ├── java_chunker.py
│ ├── kotlin_chunker.py
│ ├── sql_chunker.py
│ └── generic_chunker.py
│
├── features/ # Additional capabilities
│ ├── memory.py # Persistent memory (JSON + ChromaDB)
│ ├── savings.py # Token savings tracker
│ ├── reviewer.py # Multi-model code review
│ ├── topology.py # Project component clustering
│ ├── context_expander.py # Chunk context expansion
│ ├── git_tools.py # Git integration (status, diff, log)
│ └── watcher.py # Watchdog file watcher
│
└── dashboard/ # Web UI
├── web.py # Dashboard HTTP server
└── dashboard.html # Web dashboard UI许可证
麻省理工学院
