Acemcp is a high-performance MCP server that enables AI assistants to semantically search and understand large codebases.
Semantic Code Search: Search using natural language queries (e.g., 'authentication middleware') to find relevant code snippets across any project.
Automatic Incremental Indexing: Automatically indexes only new or modified files before each search, keeping results up-to-date without full re-indexing.
Formatted Results with Context: Returns code snippets with file paths, line numbers, and surrounding context for easy navigation.
Cross-Platform Path Support: Handles Windows, Linux, macOS, and WSL paths (e.g.,
/mnt/c/...,\\wsl$\...) with automatic normalization.Multi-Project Support: Search across different projects by specifying any project root path.
Web Management Interface: Provides a web UI for real-time logs, configuration management, and tool debugging.
Flexible Configuration: Configurable via
~/.acemcp/settings.tomland CLI arguments, with.gitignoreand custom exclusion pattern support.Multi-Encoding Support: Automatically handles UTF-8, GBK, GB2312, and Latin-1 file encodings.
Broad Compatibility: Integrates with MCP-enabled AI clients like Claude Desktop, Zed, and Cursor via stdio, and shares config/data with Acemcp-Python.
Integrates with Git repositories by automatically parsing and respecting .gitignore patterns to exclude irrelevant files and directories from the indexing process.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Acemcpsearch my project for authentication middleware examples"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Acemcp Node.js 实现
📑 目录
📖 简介
Acemcp 是一个高性能的 MCP (Model Context Protocol) 服务器,专为 AI 助手(如 Claude、GPT 等)提供代码库索引和语义搜索能力。通过 Acemcp,AI 助手可以:
🔍 快速搜索和理解大型代码库
📊 获取带行号的精确代码片段
🤖 自动增量更新索引
🌐 通过 Web 界面管理和调试
为什么选择 Acemcp?
特点 | 说明 |
零配置启动 | 首次运行自动生成配置 |
增量索引 | 只处理变更文件,快速高效 |
跨平台 | Windows、Linux、macOS、WSL 全支持 |
多编码 | 自动检测 UTF-8、GBK、GB2312、Latin-1 |
AI 友好 | 返回格式化的代码片段,含文件路径和行号 |
⭐ 核心特性
🚀 性能优化
✅ 增量索引 - 仅索引新文件或修改的文件
✅ 批量上传 - 支持批量操作和自动重试
✅ 智能分割 - 大文件自动分割为多个块
✅ 缓存机制 - SHA-256 哈希避免重复上传
🛠 开发友好
✅ TypeScript - 完整类型支持
✅ Web 界面 - 实时日志、配置管理、工具调试
✅ .gitignore 支持 - 自动排除无关文件
✅ 详细日志 - 可配置的日志级别和轮转
🌍 兼容性
✅ 跨平台路径 - 统一处理 Windows/Unix 路径
✅ WSL 完整支持 - UNC 路径、/mnt 自动转换
✅ 多编码支持 - UTF-8, GBK, GB2312, Latin-1
✅ Python 版本兼容 - 共享配置和数据格式
🎯 MCP 集成
✅ 标准 MCP 协议 - 完整实现 SDK
✅ search_context 工具 - 语义搜索代码片段
✅ stdio 传输 - 标准输入输出通信
✅ 灵活配置 - 命令行参数 + 配置文件
🚀 快速开始
方式一:通过 NPM 安装(推荐)
方式二:从源码安装
首次运行
访问 http://localhost:8080 查看 Web 管理界面!
📦 安装
系统要求
Node.js >= 18.0.0
npm >= 8.0.0(或 yarn、pnpm)
操作系统:Windows 10+、Linux、macOS、WSL 2
详细安装步骤
1. NPM 全局安装(推荐用于 MCP 客户端)
2. NPM 本地安装(用于项目集成)
3. 从源码开发安装
配置文件
首次运行时,程序会在 ~/.acemcp/ 目录下自动创建配置文件:
配置文件位置
settings.toml 配置详解
命令行参数覆盖
📘 使用指南
启动方式
1. 标准 MCP 模式(stdio)
此模式用于 MCP 客户端集成,通过标准输入/输出通信。
2. Web 管理模式
访问 http://localhost:8080 使用图形界面:
📊 查看服务器状态
⚙️ 编辑配置文件
📝 实时日志查看
🛠 工具调试测试
3. 开发模式
🔧 WSL 路径支持完全指南
Acemcp-Node 对 WSL (Windows Subsystem for Linux) 提供完整的路径支持,无需手动转换路径格式。
支持的路径格式
路径类型 | 原始格式 | 自动转换后 | 使用场景 |
Windows 本地 |
|
| Windows 上的项目 |
WSL 内部 |
|
| WSL 文件系统内 |
WSL 访问 Windows |
|
| WSL 中访问 Windows 文件 ⭐ |
Windows 访问 WSL |
|
| Windows 访问 WSL 文件 ⭐ |
使用示例
Windows 环境
WSL 环境访问 Windows 项目
Windows 访问 WSL 项目
自动处理特性
✅ 路径规范化 - 统一使用正斜杠
/✅ 末尾斜杠移除 - 自动移除路径末尾的
/或\✅ UNC 路径转换 - 自动识别并转换
\\wsl$\格式✅ /mnt 转换 - 自动将
/mnt/c/转为C:/
故障排除
如果遇到路径问题,请参考:
📄 WSL 路径支持指南 - WSL 环境专用指南
📄 路径故障排查指南 - 详细的路径问题诊断
🔌 在 MCP 客户端中配置
Claude Desktop 配置
编辑 Claude Desktop 配置文件:
Windows: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
方式一:使用全局安装的包
方式二:指定本地路径(从源码安装)
方式三:带 Web 界面
方式四:自定义 API 配置
WSL 环境特殊配置
其他 MCP 客户端
对于支持 MCP 协议的其他客户端(如 Zed、Cursor 等),配置方式类似,请参考各客户端的 MCP 配置文档。
验证配置
配置完成后:
重启 MCP 客户端
检查日志文件:
~/.acemcp/log/acemcp.log如果启用了 Web 界面,访问 http://localhost:8080
📚 API 文档
search_context 工具
在项目代码库中执行语义搜索,自动进行增量索引并返回相关代码片段。
参数
参数 | 类型 | 必需 | 说明 | 示例 |
| string | ✅ | 项目根目录的绝对路径,使用正斜杠 |
|
| string | ✅ | 自然语言搜索查询 |
|
功能流程
返回格式
返回示例:
使用示例
示例 1:搜索认证逻辑
示例 2:搜索数据库配置
示例 3:搜索错误处理
错误处理
错误类型 | 返回信息 | 解决方案 |
路径不存在 |
| 检查路径拼写和权限 |
缺少参数 |
| 提供所有必需参数 |
API 连接失败 |
| 检查 BASE_URL 和 TOKEN 配置 |
索引失败 |
| 查看日志文件诊断 |
💡 使用场景示例
场景 1:AI 助手代码审查
需求:让 AI 助手理解项目的认证机制
场景 2:Bug 调试
需求:定位支付模块的错误处理
场景 3:新功能开发
需求:了解现有 API 路由结构
场景 4:文档生成
需求:为工具函数生成文档
场景 5:代码重构
需求:找到所有使用旧 API 的地方
🌐 Web 管理界面
启动 Web 界面
功能特性
功能模块 | 说明 | 用途 |
📊 服务器状态 | 实时显示运行状态、索引项目数、配置信息 | 监控服务器健康状况 |
⚙️ 配置管理 | 在线编辑 | 无需手动编辑配置文件 |
📝 实时日志 | WebSocket 推送实时日志,支持过滤和搜索 | 调试和问题诊断 |
🛠 工具调试 | 模拟 MCP 工具调用,测试搜索查询 | 开发和测试 |
🌍 双语支持 | 中文/英文界面切换 | 国际化支持 |
界面预览
服务器状态面板
配置编辑器
语法高亮 TOML 编辑器
实时验证
一键保存和应用
实时日志查看器
彩色日志级别标识(DEBUG/INFO/WARNING/ERROR)
自动滚动
日志搜索和过滤
导出日志
工具调试面板
点击"测试工具"按钮,查看返回结果。
安全建议
⚠️ 重要:Web 界面仅绑定 localhost,不对外网开放。
如需远程访问:
使用 SSH 隧道:
ssh -L 8080:localhost:8080 user@server配置反向代理(Nginx/Caddy)并添加认证
不要直接暴露在公网
📁 项目结构
用户数据目录
🔄 与 Python 版本的兼容性
Acemcp-Node 与 Acemcp-Python 完全兼容,可以无缝切换。
兼容项 | 说明 | 位置 |
配置文件 | 共享同一个 |
|
项目数据 | 共享项目索引元数据 |
|
API 接口 | 调用相同的索引和搜索 API |
|
哈希算法 | 使用相同的 SHA-256 计算 | 增量索引 |
文件格式 | TOML 配置、JSON 数据 | 通用格式 |
切换版本
差异说明
特性 | Python 版本 | Node.js 版本 |
运行时 | Python 3.10+ | Node.js 18.0+ |
性能 | 良好 | 略快(V8 引擎) |
内存占用 | 中等 | 略低 |
依赖管理 | pip/uv | npm/yarn/pnpm |
类型安全 | Type hints | TypeScript 严格模式 |
Web 界面 | ✅ | ✅ |
WSL 支持 | ✅ | ✅ |
🛠 开发
开发环境设置
NPM Scripts
命令 | 说明 | 用途 |
| 编译 TypeScript → | 生产构建 |
| 开发模式 + 热重载 | 开发调试 |
| 运行编译后的代码 | 生产运行 |
| 启动带 Web 界面(8080) | Web 管理 |
| 运行测试脚本 | 测试 |
| 复制 Web 模板 | 构建步骤 |
代码规范
TypeScript 配置
严格模式 - 启用所有严格类型检查
ES2022 目标 - 现代 JavaScript 特性
ESM 模块 - 使用 ES 模块系统
Source Maps - 调试支持
命名约定
导入规范
日志系统
日志文件位置:~/.acemcp/log/acemcp.log
日志级别
级别 | 用途 | 示例 |
DEBUG | 详细调试信息 |
|
INFO | 重要操作记录 |
|
WARNING | 非致命警告 |
|
ERROR | 错误信息 |
|
EXCEPTION | 异常堆栈 |
|
日志配置
文件轮转 - 单文件最大 5MB
保留数量 - 最近 10 个日志文件
控制台 - INFO 级别及以上(非 stdio 模式)
文件 - DEBUG 级别及以上
WebSocket - 实时广播到 Web 界面
添加新工具
🐛 故障排除
常见问题速查
问题 | 症状 | 解决方案 |
路径不存在 |
| |
API 连接失败 |
| |
编码错误 |
| |
端口占用 |
| |
权限错误 |
| |
上传失败 | 批次上传失败 | |
日志文件过大 | 日志占用空间过多 | |
WSL 路径 | 路径转换失败 |
路径问题
症状
诊断步骤
检查路径格式
# ✅ 正确格式(使用正斜杠) C:/Users/username/project # ❌ 错误格式(使用反斜杠) C:\Users\username\project # ❌ 错误格式(末尾有斜杠) C:/Users/username/project/验证路径存在
# Windows dir "C:\Users\username\project" # Linux/macOS ls -la /home/user/project # WSL ls -la /mnt/c/Users/username/project使用绝对路径
{ "project_root_path": "C:/Users/username/myproject" // ✅ 绝对路径 }WSL 特殊情况
Windows 访问 WSL:
\\wsl$\Ubuntu\home\user\project→ 自动转换WSL 访问 Windows:
/mnt/c/Users/username/project→ 自动转换
详细指南:
连接问题
症状
解决方案
检查配置文件
cat ~/.acemcp/settings.toml验证 API 可达性
curl -H "Authorization: Bearer YOUR_TOKEN" https://your-api.com/health检查网络代理
echo $HTTP_PROXY echo $HTTPS_PROXY临时覆盖配置
npm start -- --base-url https://your-api.com --token your-token
编码问题
症状
说明
Acemcp-Node 自动处理多种编码:
UTF-8(默认)
GBK(简体中文)
GB2312(简体中文)
Latin-1(西欧语言)
如果所有编码都失败,文件将被跳过并记录警告。
手动指定编码(暂不支持)
如需支持其他编码,请提交 Issue。
Web 界面无法访问
症状
解决方案
检查端口占用
# Windows netstat -ano | findstr :8080 taskkill /PID <PID> /F # Linux/macOS lsof -i :8080 kill -9 <PID>使用其他端口
npm start -- --web-port 3000检查防火墙
# Windows 防火墙 netsh advfirewall firewall show rule name=all | findstr 8080 # Linux 防火墙 sudo ufw status sudo ufw allow 8080
权限问题
症状
解决方案
检查目录权限
# Linux/macOS ls -la ~/.acemcp chmod 755 ~/.acemcp chmod 644 ~/.acemcp/settings.toml # Windows(以管理员身份运行) icacls "%USERPROFILE%\.acemcp" /grant %USERNAME%:F避免使用 sudo
# ❌ 不推荐 sudo npm install -g acemcp-node # ✅ 推荐 npm config set prefix ~/.npm-global export PATH=~/.npm-global/bin:$PATH npm install -g acemcp-node
索引失败
症状
解决方案
检查项目大小
du -sh /path/to/project增加批次大小(settings.toml)
BATCH_SIZE = 20 # 默认 10,可增加到 50检查网络稳定性
ping api.example.com查看详细日志
tail -f ~/.acemcp/log/acemcp.log
获取帮助
如果以上方法都无法解决问题:
查看日志
cat ~/.acemcp/log/acemcp.log提交 Issue
提供错误信息和日志片段
描述复现步骤
社区讨论
参与 Discussions
🤝 贡献
我们欢迎所有形式的贡献!
贡献方式
🐛 报告 Bug - 提交 Issue
💡 建议功能 - 在 Discussions 中讨论
📖 改进文档 - 修正错误或添加示例
🔧 提交代码 - Fork 并创建 Pull Request
开发流程
代码规范
遵循 TypeScript 严格模式
使用 ESLint 和 Prettier(如有配置)
添加适当的注释和类型定义
保持向后兼容性
Commit 规范
📧 联系方式
作者: yihua
Email: 487735913@qq.com
GitHub: @yeuxuan
🙏 致谢
基于 Acemcp-Python 的设计和实现
感谢 Model Context Protocol 团队
感谢所有贡献者和使用者
🔗 相关资源
MCP 官方文档: https://modelcontextprotocol.io/
Python 版本: https://github.com/yeuxuan/Ace-Mcp-Python
更新日志: CHANGELOG.md
⭐ 如果这个项目对你有帮助,请给它一个 Star! ⭐
Made with ❤️ by yihua