@yeepay/coderocket-mcp 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,400 @@
1
+ # CodeRocket MCP
2
+
3
+ <div align="center">
4
+ <img src="docs/assets/banner.png" alt="CodeRocket Banner" />
5
+ </div>
6
+
7
+ [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
8
+ [![Node.js Version](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen.svg)](https://nodejs.org/)
9
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.0+-blue.svg)](https://www.typescriptlang.org/)
10
+
11
+ 一个基于 Model Context Protocol (MCP) 的智能代码审查 MCP,集成了 CodeRocket-CLI 的强大功能,为AI编程工具提供专业的代码审查能力。
12
+
13
+ ## 🚀 核心功能
14
+
15
+ - **多维度代码审查**:支持代码片段、Git提交、文件列表的全面审查
16
+ - **多AI服务支持**:集成Gemini、OpenCode、ClaudeCode等多种AI服务
17
+ - **智能故障转移**:自动切换AI服务,确保审查的可靠性
18
+ - **灵活配置管理**:支持项目级和全局级配置
19
+ - **详细错误处理**:提供用户友好的错误信息和解决建议
20
+ - **完整日志记录**:详细的操作日志,便于调试和监控
21
+
22
+ ## 📋 目录
23
+
24
+ - [安装](#-安装)
25
+ - [快速开始](#-快速开始)
26
+ - [MCP工具](#-mcp工具)
27
+ - [配置说明](#️-配置说明)
28
+ - [使用示例](#-使用示例)
29
+ - [故障排除](#-故障排除)
30
+ - [开发指南](#-开发指南)
31
+
32
+ ## 🛠 安装
33
+
34
+ ### 正式安装(推荐)
35
+
36
+ #### 前置要求
37
+
38
+ 1. **Node.js**: >= 18.0.0
39
+ 2. **CodeRocket-CLI**: 需要先安装 [CodeRocket-CLI](https://github.com/im47cn/coderocket-cli)
40
+ 3. **AI服务**: 至少配置一个AI服务(Gemini、OpenCode或ClaudeCode)
41
+
42
+ #### 安装过程
43
+
44
+ 从npm注册表安装:
45
+
46
+ ```bash
47
+ # 1. 全局安装CodeRocket MCP
48
+ npm install -g @yeepay/coderocket-mcp
49
+
50
+ # 2. 验证安装
51
+ npx -y @yeepay/coderocket-mcp --version
52
+
53
+ # 3. 运行测试
54
+ npx -y @yeepay/coderocket-mcp test
55
+
56
+ # 4. 启动服务器
57
+ npx -y @yeepay/coderocket-mcp start
58
+ ```
59
+
60
+ > **注意**: CodeRocket MCP依赖于CodeRocket-CLI,请确保先安装CodeRocket-CLI。
61
+
62
+ ### 开发者安装
63
+
64
+ 如果您想从源码安装或参与开发:
65
+
66
+ ```bash
67
+ # 1. 克隆项目
68
+ git clone https://github.com/im47cn/coderocket-mcp.git
69
+ cd coderocket-mcp
70
+
71
+ # 2. 运行安装脚本
72
+ ./install.sh
73
+
74
+ # 3. 或手动安装
75
+ npm install
76
+ npm run build
77
+ npm start
78
+ ```
79
+
80
+ ## 🚀 快速开始
81
+
82
+ ### 1. 配置AI服务
83
+
84
+ 配置至少一个AI服务的API密钥:
85
+
86
+ ```bash
87
+ # 配置Gemini(推荐)
88
+ export GEMINI_API_KEY="your_gemini_api_key"
89
+
90
+ # 或配置OpenCode
91
+ export OPENCODE_API_KEY="your_opencode_api_key"
92
+
93
+ # 或配置ClaudeCode
94
+ export CLAUDECODE_API_KEY="your_claudecode_api_key"
95
+ ```
96
+
97
+ ### 2. 测试安装
98
+
99
+ ```bash
100
+ # 运行功能测试
101
+ npx -y @yeepay/coderocket-mcp test
102
+ ```
103
+
104
+ ### 3. 在AI工具中配置
105
+
106
+ #### Claude Desktop配置
107
+
108
+ 编辑 `~/Library/Application Support/Claude/claude_desktop_config.json`:
109
+
110
+ ```json
111
+ {
112
+ "mcpServers": {
113
+ "coderocket": {
114
+ "command": "npx",
115
+ "args": ["-y", "@yeepay/coderocket-mcp", "start"],
116
+ "env": {
117
+ "GEMINI_API_KEY": "your_gemini_api_key"
118
+ }
119
+ }
120
+ }
121
+ }
122
+ ```
123
+
124
+ #### 其他AI工具
125
+
126
+ 对于其他支持MCP的AI工具,使用类似配置:
127
+
128
+ ```json
129
+ {
130
+ "mcp_servers": [
131
+ {
132
+ "name": "coderocket",
133
+ "command": ["coderocket-mcp", "start"],
134
+ "environment": {
135
+ "AI_SERVICE": "gemini",
136
+ "GEMINI_API_KEY": "your_api_key"
137
+ }
138
+ }
139
+ ]
140
+ }
141
+ ```
142
+
143
+ ## 🔧 MCP工具
144
+
145
+ CodeRocket MCP 提供以下工具:
146
+
147
+ ### 1. review_code
148
+ 审查代码片段,提供详细的质量分析和改进建议。
149
+
150
+ **参数:**
151
+ - `code` (string): 要审查的代码内容
152
+ - `language` (string, 可选): 代码语言
153
+ - `context` (string, 可选): 代码上下文信息
154
+ - `ai_service` (string, 可选): 指定AI服务
155
+ - `custom_prompt` (string, 可选): 自定义审查提示词
156
+
157
+ ### 2. review_commit
158
+ 审查Git提交,分析代码变更的质量和影响。
159
+
160
+ **参数:**
161
+ - `commit_hash` (string, 可选): 提交哈希,默认为最新提交
162
+ - `repository_path` (string, 可选): Git仓库路径
163
+ - `ai_service` (string, 可选): 指定AI服务
164
+ - `custom_prompt` (string, 可选): 自定义审查提示词
165
+
166
+ ### 3. review_files
167
+ 审查指定文件列表,提供全面的代码质量评估。
168
+
169
+ **参数:**
170
+ - `files` (array): 要审查的文件路径列表
171
+ - `repository_path` (string, 可选): Git仓库路径
172
+ - `ai_service` (string, 可选): 指定AI服务
173
+ - `custom_prompt` (string, 可选): 自定义审查提示词
174
+
175
+ ### 4. configure_ai_service
176
+ 配置AI服务设置,包括服务选择、API密钥等。
177
+
178
+ **参数:**
179
+ - `service` (string): AI服务名称 (gemini/opencode/claudecode)
180
+ - `scope` (string, 可选): 配置范围 (project/global)
181
+ - `api_key` (string, 可选): API密钥
182
+ - `timeout` (number, 可选): 超时时间
183
+ - `max_retries` (number, 可选): 最大重试次数
184
+
185
+ ### 5. get_ai_service_status
186
+ 获取所有AI服务的状态信息,包括可用性和配置状态。
187
+
188
+ **参数:** 无
189
+
190
+ ## ⚙️ 配置说明
191
+
192
+ ### 环境变量
193
+
194
+ ```bash
195
+ # AI服务配置
196
+ AI_SERVICE=gemini # 默认AI服务
197
+ AI_AUTO_SWITCH=true # 启用自动切换
198
+ AI_TIMEOUT=30 # 超时时间(秒)
199
+ AI_MAX_RETRIES=3 # 最大重试次数
200
+
201
+ # API密钥
202
+ GEMINI_API_KEY=your_gemini_key
203
+ OPENCODE_API_KEY=your_opencode_key
204
+ CLAUDECODE_API_KEY=your_claudecode_key
205
+
206
+ # 日志配置
207
+ NODE_ENV=development # 开发模式启用详细日志
208
+ ```
209
+
210
+ ### 配置文件
211
+
212
+ **全局配置**: `~/.coderocket/env`
213
+ **项目配置**: `./.env`
214
+
215
+ 配置优先级:环境变量 > 项目配置 > 全局配置 > 默认值
216
+
217
+ ## 📖 使用示例
218
+
219
+ ### 审查代码片段
220
+
221
+ ```json
222
+ {
223
+ "tool": "review_code",
224
+ "arguments": {
225
+ "code": "function add(a, b) {\n return a + b;\n}",
226
+ "language": "javascript",
227
+ "context": "简单的加法函数"
228
+ }
229
+ }
230
+ ```
231
+
232
+ ### 审查Git提交
233
+
234
+ ```json
235
+ {
236
+ "tool": "review_commit",
237
+ "arguments": {
238
+ "repository_path": "/path/to/repo",
239
+ "commit_hash": "abc123"
240
+ }
241
+ }
242
+ ```
243
+
244
+ ### 配置AI服务
245
+
246
+ ```json
247
+ {
248
+ "tool": "configure_ai_service",
249
+ "arguments": {
250
+ "service": "gemini",
251
+ "scope": "project",
252
+ "api_key": "your_api_key"
253
+ }
254
+ }
255
+ ```
256
+
257
+ ### 获取服务状态
258
+
259
+ ```json
260
+ {
261
+ "tool": "get_ai_service_status",
262
+ "arguments": {}
263
+ }
264
+ ```
265
+
266
+ ## 🔍 故障排除
267
+
268
+ ### 常见问题
269
+
270
+ **问题 1**: MCP服务器启动失败
271
+
272
+ ```bash
273
+ # 检查Node.js版本
274
+ node --version # 应该 >= 18.0.0
275
+
276
+ # 检查依赖安装
277
+ npm install
278
+
279
+ # 重新构建
280
+ npm run build
281
+ ```
282
+
283
+ **问题 2**: AI服务不可用
284
+
285
+ ```bash
286
+ # 检查AI服务状态
287
+ gemini --version
288
+ opencode --version
289
+ claudecode --version
290
+
291
+ # 重新配置AI服务
292
+ gemini config
293
+ ```
294
+
295
+ **问题 3**: CodeRocket-CLI路径错误
296
+
297
+ ```bash
298
+ # 设置环境变量指定路径
299
+ export CODEROCKET_CLI_PATH=/path/to/coderocket-cli
300
+
301
+ # 或在项目中创建符号链接
302
+ ln -s /path/to/coderocket-cli ./coderocket-cli
303
+ ```
304
+
305
+ ### 调试模式
306
+
307
+ 启用详细日志:
308
+
309
+ ```bash
310
+ NODE_ENV=development npm start
311
+ ```
312
+
313
+ 查看日志文件:
314
+
315
+ ```bash
316
+ # 日志文件位置
317
+ tail -f /tmp/coderocket-mcp.log
318
+ ```
319
+
320
+ ## 👨‍💻 开发指南
321
+
322
+ ### 项目结构
323
+
324
+ ```
325
+ coderocket-mcp/
326
+ ├── src/
327
+ │ ├── index.ts # MCP服务器入口
328
+ │ ├── coderocket.ts # 核心服务类
329
+ │ ├── types.ts # 类型定义
330
+ │ └── logger.ts # 日志和错误处理
331
+ ├── dist/ # 编译输出
332
+ ├── package.json
333
+ ├── tsconfig.json
334
+ └── README.md
335
+ ```
336
+
337
+ ### 开发环境设置
338
+
339
+ ```bash
340
+ # 安装开发依赖
341
+ npm install
342
+
343
+ # 开发模式运行
344
+ npm run dev
345
+
346
+ # 代码检查
347
+ npm run lint
348
+
349
+ # 格式化代码
350
+ npm run format
351
+
352
+ # 运行测试
353
+ npm test
354
+ ```
355
+
356
+ ### 添加新功能
357
+
358
+ 1. 在 `types.ts` 中定义新的类型
359
+ 2. 在 `coderocket.ts` 中实现业务逻辑
360
+ 3. 在 `index.ts` 中注册新的MCP工具
361
+ 4. 添加相应的测试用例
362
+ 5. 更新文档
363
+
364
+ ## 🤝 贡献
365
+
366
+ 我们欢迎社区贡献!请参考 [CodeRocket-CLI贡献指南](../coderocket-cli/CONTRIBUTING.md)。
367
+
368
+ ### 快速开始
369
+
370
+ 1. Fork 本仓库
371
+ 2. 创建功能分支: `git checkout -b feature/new-feature`
372
+ 3. 提交更改: `git commit -am 'Add new feature'`
373
+ 4. 推送分支: `git push origin feature/new-feature`
374
+ 5. 创建 Pull Request
375
+
376
+ ## 📄 许可证
377
+
378
+ 本项目采用 [Apache 2.0 许可证](LICENSE)。
379
+
380
+ ## 🔗 相关链接
381
+
382
+ - [CodeRocket-CLI](../coderocket-cli) - 核心CLI工具
383
+ - [Model Context Protocol](https://modelcontextprotocol.io/) - MCP官方文档
384
+ - [问题反馈](https://github.com/im47cn/coderocket-cli/issues) - 报告问题或建议
385
+
386
+ ## 📊 特性对比
387
+
388
+ | 功能 | CodeRocket-CLI | CodeRocket-MCP |
389
+ |------|----------------|----------------|
390
+ | Git Hooks集成 | ✅ | ❌ |
391
+ | MCP协议支持 | ❌ | ✅ |
392
+ | 代码片段审查 | ❌ | ✅ |
393
+ | AI工具集成 | ❌ | ✅ |
394
+ | 多AI服务支持 | ✅ | ✅ |
395
+ | 自动MR创建 | ✅ | ❌ |
396
+ | 详细审查报告 | ✅ | ✅ |
397
+
398
+ ---
399
+
400
+ **CodeRocket MCP** - 让AI编程工具拥有专业的代码审查能力 🚀
@@ -0,0 +1,108 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * CodeRocket MCP 启动脚本
5
+ */
6
+
7
+ import { spawn } from 'child_process';
8
+ import { resolve, dirname } from 'path';
9
+ import { fileURLToPath } from 'url';
10
+
11
+ const __filename = fileURLToPath(import.meta.url);
12
+ const __dirname = dirname(__filename);
13
+
14
+ const command = process.argv[2];
15
+
16
+ switch (command) {
17
+ case 'start':
18
+ case undefined:
19
+ // 启动MCP服务器
20
+ console.error('🚀 启动 CodeRocket MCP 服务器...');
21
+ const serverPath = resolve(__dirname, '../dist/index.js');
22
+ const server = spawn('node', [serverPath], {
23
+ stdio: 'inherit',
24
+ env: process.env,
25
+ });
26
+
27
+ server.on('error', (error) => {
28
+ console.error('❌ 服务器启动失败:', error.message);
29
+ process.exit(1);
30
+ });
31
+
32
+ server.on('exit', (code) => {
33
+ if (code !== 0) {
34
+ console.error(`❌ 服务器异常退出,代码: ${code}`);
35
+ process.exit(code || 1);
36
+ }
37
+ });
38
+ break;
39
+
40
+ case 'test':
41
+ // 运行测试
42
+ console.error('🧪 运行 CodeRocket MCP 测试...');
43
+ const testPath = resolve(__dirname, '../dist/test.js');
44
+ const test = spawn('node', [testPath], {
45
+ stdio: 'inherit',
46
+ env: process.env,
47
+ });
48
+
49
+ test.on('error', (error) => {
50
+ console.error('❌ 测试运行失败:', error.message);
51
+ process.exit(1);
52
+ });
53
+
54
+ test.on('exit', (code) => {
55
+ process.exit(code || 0);
56
+ });
57
+ break;
58
+
59
+ case 'help':
60
+ case '--help':
61
+ case '-h':
62
+ console.log(`
63
+ CodeRocket MCP - AI驱动的代码审查服务器
64
+
65
+ 用法:
66
+ coderocket-mcp [命令]
67
+
68
+ 命令:
69
+ start, (默认) 启动MCP服务器
70
+ test 运行功能测试
71
+ help 显示帮助信息
72
+
73
+ 示例:
74
+ coderocket-mcp start # 启动服务器
75
+ coderocket-mcp test # 运行测试
76
+ coderocket-mcp help # 显示帮助
77
+
78
+ 环境变量:
79
+ AI_SERVICE 默认AI服务 (gemini/opencode/claudecode)
80
+ AI_AUTO_SWITCH 启用自动切换 (true/false)
81
+ AI_TIMEOUT 超时时间(秒)
82
+ AI_MAX_RETRIES 最大重试次数
83
+ NODE_ENV 环境模式 (development/production)
84
+
85
+ 更多信息请访问: https://github.com/im47cn/coderocket-cli
86
+ `);
87
+ break;
88
+
89
+ case 'version':
90
+ case '--version':
91
+ case '-v':
92
+ // 读取package.json获取版本信息
93
+ try {
94
+ const packagePath = resolve(__dirname, '../package.json');
95
+ const packageJson = JSON.parse(
96
+ require('fs').readFileSync(packagePath, 'utf-8')
97
+ );
98
+ console.log(`CodeRocket MCP v${packageJson.version}`);
99
+ } catch (error) {
100
+ console.log('CodeRocket MCP v1.0.0');
101
+ }
102
+ break;
103
+
104
+ default:
105
+ console.error(`❌ 未知命令: ${command}`);
106
+ console.error('使用 "coderocket-mcp help" 查看可用命令');
107
+ process.exit(1);
108
+ }
@@ -0,0 +1,88 @@
1
+ import { ReviewCodeRequest, ReviewCommitRequest, ReviewFilesRequest, ConfigureAIServiceRequest, ReviewResult, ServiceStatusResponse, SuccessResponse } from './types.js';
2
+ /**
3
+ * CodeRocket服务类
4
+ *
5
+ * 负责与coderocket-cli集成,提供代码审查和AI服务管理功能
6
+ */
7
+ export declare class CodeRocketService {
8
+ private coderocketCliPath;
9
+ constructor();
10
+ private ensureInitialized;
11
+ /**
12
+ * 查找coderocket-cli的安装路径
13
+ */
14
+ private findCoderocketCliPath;
15
+ /**
16
+ * 执行shell命令并返回结果
17
+ */
18
+ private executeShellCommand;
19
+ /**
20
+ * 调用AI服务管理器脚本
21
+ */
22
+ private callAIServiceManager;
23
+ /**
24
+ * 创建临时提示词文件
25
+ */
26
+ private createTempPromptFile;
27
+ /**
28
+ * 获取内置的默认提示词
29
+ */
30
+ private getDefaultPrompt;
31
+ /**
32
+ * 解析审查结果
33
+ */
34
+ private parseReviewResult;
35
+ /**
36
+ * 审查代码片段
37
+ */
38
+ reviewCode(request: ReviewCodeRequest): Promise<ReviewResult>;
39
+ /**
40
+ * 根据语言获取文件扩展名
41
+ */
42
+ private getFileExtension;
43
+ /**
44
+ * 审查Git提交
45
+ */
46
+ reviewCommit(request: ReviewCommitRequest): Promise<ReviewResult>;
47
+ /**
48
+ * 审查文件列表
49
+ */
50
+ reviewFiles(request: ReviewFilesRequest): Promise<ReviewResult>;
51
+ /**
52
+ * 配置AI服务
53
+ */
54
+ configureAIService(request: ConfigureAIServiceRequest): Promise<SuccessResponse>;
55
+ /**
56
+ * 获取API密钥环境变量名
57
+ */
58
+ private getAPIKeyEnvVar;
59
+ /**
60
+ * 保存API密钥到配置文件
61
+ */
62
+ private saveAPIKeyToConfig;
63
+ /**
64
+ * 获取AI服务状态
65
+ */
66
+ getAIServiceStatus(): Promise<ServiceStatusResponse>;
67
+ /**
68
+ * 检查单个服务状态
69
+ */
70
+ private checkServiceStatus;
71
+ /**
72
+ * 检查服务是否可用
73
+ */
74
+ private isServiceAvailable;
75
+ /**
76
+ * 检查服务是否已配置
77
+ */
78
+ private isServiceConfigured;
79
+ /**
80
+ * 获取安装命令
81
+ */
82
+ private getInstallCommand;
83
+ /**
84
+ * 获取配置命令
85
+ */
86
+ private getConfigCommand;
87
+ }
88
+ //# sourceMappingURL=coderocket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coderocket.d.ts","sourceRoot":"","sources":["../src/coderocket.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,yBAAyB,EACzB,YAAY,EACZ,qBAAqB,EACrB,eAAe,EAGhB,MAAM,YAAY,CAAC;AAKpB;;;;GAIG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,iBAAiB,CAAc;;YAMzB,iBAAiB;IAS/B;;OAEG;YACW,qBAAqB;IA4BnC;;OAEG;YACW,mBAAmB;IAgCjC;;OAEG;YACW,oBAAoB;IAoBlC;;OAEG;YACW,oBAAoB;IA2BlC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA8BxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA2CzB;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC;IA8DnE;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC;IAoCvE;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IAgDrE;;OAEG;IACG,kBAAkB,CACtB,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,eAAe,CAAC;IAgD3B;;OAEG;IACH,OAAO,CAAC,eAAe;IASvB;;OAEG;YACW,kBAAkB;IA+ChC;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,qBAAqB,CAAC;IA+B1D;;OAEG;YACW,kBAAkB;IA0BhC;;OAEG;YACW,kBAAkB;IAehC;;OAEG;YACW,mBAAmB;IAKjC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IASzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAQzB"}