Acemcp Node.js 实现
MCP 服务器,用于代码库索引和语义搜索 - Node.js 实现
📖 简介
Acemcp 是一个 MCP (Model Context Protocol) 服务器,提供代码库索引和语义搜索功能。此 Node.js 实现与 Python 版本完全兼容,共享相同的配置文件和数据格式。
主要特性
✅ 完整的 MCP 服务器功能 - 实现
search_context工具✅ 增量索引 - 仅索引新文件或修改的文件
✅ 文件分割 - 大文件自动分割为多个块
✅ .gitignore 支持 - 自动排除 .gitignore 中的文件
✅ 多编码支持 - 支持 UTF-8, GBK, GB2312, Latin-1
✅ 批量上传 - 支持批量上传和自动重试
✅ Web 管理界面 - 配置管理、实时日志、工具调试
✅ 数据兼容 - 与 Python 版本共享数据格式
✅ WSL 路径支持 - 完全支持 Windows Subsystem for Linux 路径
📦 安装
前置要求
Node.js >= 18.0.0
npm 或其他包管理器
安装步骤
🚀 使用
配置
首次运行时,程序会在 ~/.acemcp/ 目录下创建配置文件:
启动 MCP 服务器
WSL 路径支持
Ace-Mcp-Node 完全支持 Windows Subsystem for Linux (WSL) 路径格式:
路径类型 | 示例 | 说明 |
Windows 本地 |
| 自动转换为
|
WSL 内部 |
| 保持不变(仅 WSL 环境) |
WSL 访问 Windows |
| Windows 环境自动转为
⭐ |
Windows 访问 WSL |
| 自动转换为
|
使用示例:
注意:
路径将自动规范化为统一格式(使用正斜杠)
末尾斜杠会被自动移除
遇到路径问题请参考 路径故障排查指南
在 MCP 客户端中配置
在你的 MCP 客户端配置文件中添加:
WSL 环境配置示例:
或使用 Web 管理界面:
🔧 工具说明
search_context
搜索项目代码库中与查询相关的代码片段。
参数:
project_root_path(string, 必需): 项目根目录的绝对路径,使用正斜杠/作为路径分隔符示例:
C:/Users/username/projects/myproject
query(string, 必需): 自然语言搜索查询示例:
"logging configuration setup","user authentication login"
功能:
自动对项目进行增量索引
执行语义搜索
返回格式化的代码片段,包含文件路径和行号
使用示例:
🌐 Web 管理界面
启动 Web 界面:
Web 界面功能
服务器状态 - 查看运行状态和已索引项目数量
配置管理 - 在线编辑和保存配置
实时日志 - 通过 WebSocket 查看实时日志
工具调试 - 调试 MCP 工具调用
双语支持 - 支持中文和英文界面
📁 项目结构
🔄 与 Python 版本的兼容性
Node.js 实现与 Python 版本完全兼容:
共享配置文件 - 使用相同的
~/.acemcp/settings.toml共享数据格式 - 使用相同的
~/.acemcp/data/projects.json相同的 API 接口 - 调用相同的索引和搜索 API
相同的哈希算法 - 使用相同的 SHA-256 计算 blob_name
可以在 Python 和 Node.js 版本之间无缝切换。
🛠 开发
开发模式
脚本说明
npm run build- 编译 TypeScript 到 dist/npm run dev- 开发模式(使用 tsx watch)npm start- 运行编译后的代码npm start:web- 启动带 Web 界面的服务器
📝 日志
日志文件位置:~/.acemcp/log/acemcp.log
自动日志轮转(单文件最大 5MB)
保留最近 10 个日志文件
控制台输出 INFO 级别及以上
文件输出 DEBUG 级别及以上
🐛 故障排除
路径问题
如果遇到 "Project root path does not exist" 错误:
检查路径末尾是否有斜杠 - 路径末尾不应包含
/或\(v0.1.5+ 自动移除)验证路径存在 - 使用
ls(Unix) 或dir(Windows) 检查使用绝对路径 - 避免使用相对路径
参考文档 - 查看 路径故障排查指南
相关文档:
WSL 路径支持指南 - WSL 环境专用指南
路径故障排查指南 - 详细的路径问题诊断
编码问题
如果遇到文件编码错误,程序会自动尝试多种编码(UTF-8, GBK, GB2312, Latin-1)。
连接问题
检查 BASE_URL 和 TOKEN 配置是否正确:
Web 界面无法访问
确保指定的端口未被占用:
📄 许可证
ISC License
🤝 贡献
欢迎贡献!请随时提交 Pull Request。