🤖 RageBot MCP
基于CLI的智能项目上下文引擎,完全支持MCP服务器。 索引你的代码库,用自然语言查询,交互式地与它聊天,生成文档和测试,并将所有这些作为MCP工具公开给任何AI客户端(Claude Desktop、Cursor、Zed、Continue.dev)。
  
______________________________________________________________________
📁 项目结构
ragebot-mcp/
├── ragebot/ # Main Python package
│ ├── __init__.py
│ ├── cli.py # Typer CLI — all `rage` commands
│ ├── core/
│ │ ├── __init__.py
│ │ ├── config.py # Config manager + secure keyring storage
│ │ ├── engine.py # Core orchestrator (scan→parse→embed→retrieve→answer)
│ │ ├── scanner.py # Directory scanner & file classifier
│ │ └── watcher.py # watchdog file-system watcher
│ ├── llm/
│ │ ├── __init__.py
│ │ ├── base.py # Abstract BaseLLMProvider interface
│ │ ├── gemini.py # Google Gemini provider
│ │ ├── grok.py # xAI Grok provider (OpenAI-compatible API)
│ │ ├── noop.py # No-op provider (no key configured)
│ │ └── factory.py # Resolves active provider from config
│ ├── mcp/
│ │ ├── __init__.py
│ │ └── server.py # Full MCP JSON-RPC 2.0 server (stdio + SSE)
│ ├── parsers/
│ │ ├── __init__.py
│ │ ├── code_parser.py # AST + regex parser (Python,JS,TS,Go,Rust,Java,C…)
│ │ └── doc_parser.py # Document parser (PDF, DOCX, MD, TXT)
│ ├── search/
│ │ ├── __init__.py
│ │ ├── embedder.py # Sentence-transformer embeddings + disk cache
│ │ └── retriever.py # FAISS / cosine-similarity semantic search
│ ├── storage/
│ │ ├── __init__.py
│ │ ├── db.py # SQLite layer (files, chunks, embeddings, chat history)
│ │ └── snapshot.py # Snapshot create / restore / delete
│ ├── agents/
│ │ ├── __init__.py
│ │ └── context_builder.py # Context packs for debug/docs/refactor/review/test
│ └── utils/
│ ├── __init__.py
│ ├── display.py # Rich terminal output helpers
│ └── tokens.py # tiktoken token counter + cost estimator
├── tests/
│ ├── __init__.py
│ └── test_ragebot.py # Full pytest test suite (50+ tests)
├── .env.example # Example environment variables
├── .gitignore
├── deploy.md # Deployment guide (Claude Desktop, Docker, cloud…)
├── pyproject.toml # Modern Python packaging (PEP 517)
├── requirements.txt # Core dependencies
├── setup.py # Backward-compatible setup entry
└── README.md # This file______________________________________________________________________
✨ 功能概览
| 特性 | 描述 |
|---|---|
| 🗂 目录扫描 | 递归扫描,尊重 .gitignore |
| 🔍 多语言解析 | Python AST+正则表达式,适用于JS、TS、Go、Rust、Java、C/C++ |
| 📄 文档处理 | PDF、DOCX、Markdown、TXT |
| 🧠 语义搜索 | 通过句子变换器+FAISS进行向量嵌入 |
| 💡 AI驱动的答案 | 谷歌双子座或xAI Grok |
| 💬 交互式聊天 | 具有历史记录的多回合持续会话 |
| 📖 代码说明 | 解释任何文件或函数/类 |
| 📝 文档生成 | 自动生成Markdown文档 |
| 🧪 测试生成 | 自动生成pytest测试套件 |
| 🔀 差异解释 | 用简明英语解释git差异 |
| 📦 代理上下文包 | 优化了调试/文档/重构/审查/测试代理的导出 |
| 📸 快照 | 保存和恢复项目索引状态 |
| 👁️ 文件监视 | 文件更改时自动重新索引 |
| 🔒 安全密钥存储 | 操作系统密钥环中的API密钥-从不在配置文件中 |
| 🔌 真实MCP服务器 | 基于stdio或HTTP/SSE的JSON-RPC 2.0 |
| ⚙️ 完整配置系统 | CLI配置+环境变量覆盖 |
______________________________________________________________________
🚀 快速开始
1.安装
git clone https://github.com/atharvrahate296/Ragebot-MCP
cd Ragebot-MCP
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e .2.身份验证
# Gemini — get key at https://aistudio.google.com/apikey
rage auth login gemini
# Prompted: Enter Gemini API key: •••••••• (stored in OS keyring, never in a file)
# Grok — get key at https://console.x.ai
rage auth login grok
# Check status
rage auth status
# Switch provider
rage auth switch gemini3.为你的项目建立索引
cd /your/project
rage init
rage save4.开始使用它
rage ask "Where is the login logic?"
rage chat
rage explain src/auth.py --symbol login
rage docs src/auth.py --output docs/auth.md
rage test src/auth.py --output tests/test_auth.py
rage diff --staged
rage status______________________________________________________________________
📋 完整的命令参考
核心命令
| 命令 | 描述 | ||||
|---|---|---|---|---|---|
rage init [path] | 在项目目录中初始化RageBot | ||||
rage save [path] | 索引项目,保存快照(--full 重新索引所有) | ||||
rage ask | 一次性AI问题(`--mode minimal\ | smart\ | full`) | ||
rage chat | 交互式多回合聊天(--session 继续) | ||||
rage search | 文件搜索(`--type semantic\ | keyword\ | hybrid`) | ||
rage explain | 解释文件或符号(--symbol fn_name) | ||||
rage docs | 生成Markdown文档(--output file.md) | ||||
rage test | 生成pytest测试(--output test_file.py) | ||||
rage diff | 解释git diff(--staged, --head,或管道差异) | ||||
rage context | 显示项目信息(--tree, --summary, --file path) | ||||
rage export | 导出上下文包: `debug\ | docs\ | refactor\ | review\ | test` |
rage status | 指数统计+LLM健康状况 | ||||
rage watch | 自动重新索引更改(--debounce N) | ||||
rage clean | 清理缓存(--all 删除所有内容) | ||||
rage version | 版本信息 |
身份验证子命令
| 命令 | 描述 |
|---|---|
rage auth login | 将API密钥存储在操作系统密钥环中 |
rage auth logout | 从钥匙圈中拔出钥匙 |
rage auth status | 显示哪些提供程序经过身份验证 |
rage auth switch | 切换活动提供程序 |
配置子命令
| 命令 | 描述 |
|---|---|
rage config show | 显示所有设置 |
rage config set | 设置一个值(仅限非机密) |
rage config get | 获取单个值 |
rage config reset | 重置为默认值 |
快照子命令
| 命令 | 描述 |
|---|---|
rage snapshots list | 列出已保存的快照 |
rage snapshots restore | 还原快照 |
rage snapshots delete | 删除快照 |
历史记录子命令
| 命令 | 描述 |
|---|---|
rage history list | 列出所有聊天会话 |
rage history show | 在会话中显示消息 |
rage history delete | 删除会话 |
MCP子命令
| 命令 | 描述 | |
|---|---|---|
rage mcp start | 启动MCP服务器(`--transport stdio\ | sse`) |
rage mcp config | 配置MCP服务器默认值 |
______________________________________________________________________
🤖 大语言模型提供商
谷歌双子座
# Get key: https://aistudio.google.com/apikey
rage auth login gemini
# Configure model
rage config set gemini_model gemini-1.5-pro # default: gemini-1.5-flashxAI Grok
# Get key: https://console.x.ai
rage auth login grok
# Configure model
rage config set grok_model grok-3 # default: grok-3-mini注: Grok在https://api.x.ai/v1--除此之外不需要额外的SDKopenai.
无LLM(仅用于上下文检索)
rage auth switch none
# rage ask still retrieves and shows context, but won't generate AI answers______________________________________________________________________
🔌 MCP服务器
RageBot是一个 真实MCP服务器 10个工具:
| MCP工具 | 它的作用 |
|---|---|
ragebot_ask | AI问题→ 用源引用回答 |
ragebot_search | 语义/关键字/混合文件搜索 |
ragebot_save | 对项目进行索引或重新索引 |
ragebot_explain | 解释文件或命名符号 |
ragebot_file_tree | 返回项目目录树 |
ragebot_status | 指数统计和LLM健康 |
ragebot_export | 导出代理上下文包 |
ragebot_generate_docs | 为文件生成Markdown文档 |
ragebot_generate_tests | 为文件生成pytest测试 |
ragebot_diff_explain | 解释git diff补丁 |
快速启动(stdio——适用于克劳德桌面/光标)
rage mcp start --transport stdio --project /path/to/project远程服务器(SSE)
rage mcp start --transport sse --host 0.0.0.0 --port 8765 --project /path/to/projectClaude桌面配置
编辑 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"ragebot": {
"command": "/path/to/.venv/bin/python",
"args": [
"-m", "ragebot.mcp.server",
"--project", "/path/to/your/project",
"--transport", "stdio"
]
}
}
}完整部署指南: 看见 deploy.md --涵盖了Claude Desktop、Cursor、Zed、Continue.dev、Docker、Railway、Fly.io、systemd和Nginx/TLS。______________________________________________________________________
⚙️ 配置参考
设置在 ~/.config/ragebot/config.json.API密钥为 从不 存储在那里。
| 密钥 | 默认值 | 描述 | ||
|---|---|---|---|---|
llm_provider | gemini | 活动LLM: gemini | grok | none |
gemini_model | gemini-1.5-flash | Gemini型号名称 | ||
grok_model | grok-3-mini | Grok型号名称 | ||
embedding_model | all-MiniLM-L6-v2 | 句子转换模型 | ||
default_top_k | 5 | 每个查询的上下文块 | ||
chunk_size | 512 | 每块代币 | ||
chunk_overlap | 64 | 块之间的重叠 | ||
max_file_size_kb | 500 | 跳过大于此值的文件 | ||
max_chunks_per_file | 20 | 每个文件索引的大写块 | ||
index_depth | 10 | 最大目录递归深度 | ||
ignore_patterns | .git,node_modules,… | 要跳过的逗号分隔的球形图案 | ||
default_mode | smart | 应答模式: minimal | smart | full |
max_answer_tokens | 1000 | 最大LLM响应令牌数 | ||
mcp_transport | stdio | MCP传输: stdio | sse | |
mcp_host | 127.0.0.1 | SSE绑定主机 | ||
mcp_port | 8765 | SSE绑定端口 |
环境变量
| 变量 | 配置键 |
|---|---|
GEMINI_API_KEY | gemini_api_key (钥匙圈) |
GROK_API_KEY | grok_api_key (钥匙圈) |
RAGEBOT_LLM_PROVIDER | llm_provider |
RAGEBOT_EMBEDDING_MODEL | embedding_model |
RAGEBOT_MCP_TRANSPORT | mcp_transport |
RAGEBOT_MCP_HOST | mcp_host |
RAGEBOT_MCP_PORT | mcp_port |
______________________________________________________________________
💬 聊天会话命令
一旦进入 rage chat,使用以下斜线命令:
| 命令 | 操作 |
|---|---|
/exit 或 /quit | 结束会话 |
/history | 显示最后10条消息 |
/clear | 删除此会话的历史记录 |
/export [filename.json] | 将聊天导出为JSON |
______________________________________________________________________
🔒 安全
- API密钥使用 OS钥匙圈 --macOS钥匙串、GNOME钥匙圈或Windows凭据管理器
- 钥匙是 从不 写信给
config.json,.env文件或日志 rage config show显示隐藏的按键********abcdrage config set将拒绝设置密钥并将您重定向到rage auth login- 如果密钥环不可用,则仅通过环境变量设置密钥(
GEMINI_API_KEY)
______________________________________________________________________
🛠️ 发展
# Install dev dependencies
pip install -e ".[dev,full]"
# Run tests
pytest tests/ -v
# With coverage report
pytest tests/ -v --cov=ragebot --cov-report=html
# Lint
ruff check ragebot/
black ragebot/
# Type check
mypy ragebot/______________________________________________________________________
🏗️ 架构概述
rage CLI
└─► RageBotEngine
├── DirectoryScanner recursive scan, .gitignore logic, file classifier
├── CodeParser Python AST + regex → functions, classes, imports
├── DocumentParser PDF/DOCX/MD/TXT → clean text chunks
├── Embedder sentence-transformers → float vectors (disk cached)
├── ContextRetriever FAISS / cosine similarity → top-k relevant chunks
├── Database (SQLite) files · chunks · embeddings · chat history
├── SnapshotManager versioned DB copies
├── LLM Provider Gemini or Grok (resolved by factory)
└── ContextBuilder agent-specific context packs
ragebot.mcp.server
├── stdio transport JSON-RPC 2.0 over stdin/stdout (for desktop clients)
├── SSE transport FastAPI + uvicorn HTTP (for remote / cloud clients)
└── 10 MCP tools ask · search · save · explain · file_tree · status
export · generate_docs · generate_tests · diff_explain______________________________________________________________________
📄 许可证
麻省 理工© RageBot 团队
______________________________________________________________________
🔗 链接
| 资源 | URL |
|---|---|
| 部署指南 | deploy.md |
| MCP协议规范 | 模型上下文协议.io |
| Gemini API密钥 | aistudio.google.com/apikey |
| Grok API密钥 | console.x.ai |
| 句子变换器 | sbert.net |
