@yeepay/coderocket-mcp 1.5.0 → 1.5.2

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/fix-mcp-config.js DELETED
@@ -1,60 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- /**
4
- * 修复MCP配置文件,添加coderocket-mcp工具的alwaysAllow列表
5
- */
6
-
7
- import { readFileSync, writeFileSync } from 'fs';
8
- import { resolve } from 'path';
9
-
10
- const configPath = "/Users/dreambt/Library/Application Support/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/mcp_settings.json";
11
-
12
- // coderocket-mcp提供的所有工具
13
- const coderocketTools = [
14
- "review_code",
15
- "review_changes",
16
- "review_commit",
17
- "review_files",
18
- "configure_ai_service",
19
- "get_ai_service_status"
20
- ];
21
-
22
- try {
23
- console.log('🔧 正在修复MCP配置...');
24
-
25
- // 读取现有配置
26
- const configContent = readFileSync(configPath, 'utf-8');
27
- const config = JSON.parse(configContent);
28
-
29
- // 更新coderocket-mcp相关的配置
30
- const serversToUpdate = ['coderocket-mcp', 'global-coderocket-mcp', 'test-coderocket-mcp'];
31
-
32
- let updated = false;
33
-
34
- for (const serverName of serversToUpdate) {
35
- if (config.mcpServers[serverName]) {
36
- console.log(`📝 更新 ${serverName} 配置...`);
37
- config.mcpServers[serverName].alwaysAllow = coderocketTools;
38
- updated = true;
39
- }
40
- }
41
-
42
- if (updated) {
43
- // 写回配置文件
44
- writeFileSync(configPath, JSON.stringify(config, null, 2));
45
- console.log('✅ MCP配置修复完成!');
46
- console.log('');
47
- console.log('📋 已添加的工具:');
48
- coderocketTools.forEach(tool => {
49
- console.log(` - ${tool}`);
50
- });
51
- console.log('');
52
- console.log('🔄 请重启RooCode以使配置生效');
53
- } else {
54
- console.log('⚠️ 未找到需要更新的coderocket-mcp配置');
55
- }
56
-
57
- } catch (error) {
58
- console.error('❌ 修复配置失败:', error.message);
59
- process.exit(1);
60
- }
@@ -1,56 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- /**
4
- * 修复RooCode MCP配置
5
- * 禁用有问题的配置,只保留工作正常的配置
6
- */
7
-
8
- import { readFileSync, writeFileSync } from 'fs';
9
-
10
- const configPath = "/Users/dreambt/Library/Application Support/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/mcp_settings.json";
11
-
12
- function fixConfig() {
13
- try {
14
- console.log('🔧 修复RooCode MCP配置...');
15
-
16
- // 读取配置
17
- const config = JSON.parse(readFileSync(configPath, 'utf-8'));
18
-
19
- // 禁用有问题的配置
20
- if (config.mcpServers['coderocket-mcp']) {
21
- config.mcpServers['coderocket-mcp'].disabled = true;
22
- console.log('❌ 禁用 coderocket-mcp (npx版本启动超时)');
23
- }
24
-
25
- if (config.mcpServers['global-coderocket-mcp']) {
26
- config.mcpServers['global-coderocket-mcp'].disabled = true;
27
- console.log('❌ 禁用 global-coderocket-mcp (命令不存在)');
28
- }
29
-
30
- // 确保test-coderocket-mcp启用
31
- if (config.mcpServers['test-coderocket-mcp']) {
32
- config.mcpServers['test-coderocket-mcp'].disabled = false;
33
- console.log('✅ 启用 test-coderocket-mcp (本地开发版本)');
34
- }
35
-
36
- // 写回配置
37
- writeFileSync(configPath, JSON.stringify(config, null, 2));
38
-
39
- console.log('\n✅ 配置修复完成!');
40
- console.log('\n📋 当前活跃配置:');
41
- console.log(' - test-coderocket-mcp: 本地开发版本');
42
- console.log(' 命令: node /Users/dreambt/sources/coderocket/coderocket-mcp/dist/index.js');
43
- console.log(' 工具: 6个 (review_code, review_changes, review_commit, review_files, configure_ai_service, get_ai_service_status)');
44
-
45
- console.log('\n🔄 请重启RooCode以使配置生效');
46
- console.log('\n💡 如果问题仍然存在,请检查:');
47
- console.log(' 1. RooCode是否正确加载MCP配置');
48
- console.log(' 2. 是否有其他MCP服务器冲突');
49
- console.log(' 3. RooCode的MCP功能是否启用');
50
-
51
- } catch (error) {
52
- console.error('❌ 修复配置失败:', error.message);
53
- }
54
- }
55
-
56
- fixConfig();
package/simple-test.js DELETED
@@ -1,56 +0,0 @@
1
- import { ConfigManager } from './dist/config/ConfigManager.js';
2
- import assert from 'assert';
3
-
4
- async function testConfigManager() {
5
- console.log('🧪 ConfigManager 核心功能测试...');
6
-
7
- try {
8
- // 清理可能影响测试的环境变量
9
- delete process.env.AI_SERVICE;
10
- delete process.env.AI_TIMEOUT;
11
- delete process.env.AI_AUTO_SWITCH;
12
-
13
- // 重置 ConfigManager 状态
14
- ConfigManager.initialized = false;
15
- ConfigManager.config = {};
16
-
17
- // 测试初始化
18
- await ConfigManager.initialize();
19
- assert(
20
- ConfigManager.initialized === true,
21
- 'ConfigManager 应该已初始化',
22
- );
23
-
24
- // 测试配置加载(包括.env文件)
25
- const service = ConfigManager.get('AI_SERVICE');
26
- console.log('AI_SERVICE:', service);
27
- assert(
28
- service === 'gemini',
29
- 'AI 服务应该是 gemini',
30
- );
31
-
32
- const autoSwitch = ConfigManager.get('AI_AUTO_SWITCH');
33
- console.log('AI_AUTO_SWITCH:', autoSwitch);
34
- assert(
35
- autoSwitch === 'true',
36
- '应该启用自动切换',
37
- );
38
-
39
- const timeoutStr = ConfigManager.get('AI_TIMEOUT');
40
- console.log('AI_TIMEOUT:', timeoutStr);
41
- assert(timeoutStr === '30', '超时应该是 30 秒');
42
-
43
- // 测试配置获取
44
- const timeout = ConfigManager.getTimeout();
45
- console.log('getTimeout():', timeout);
46
- assert(typeof timeout === 'number', '超时应该是数字');
47
- assert(timeout > 0, '超时应该大于 0');
48
- assert(timeout === 30, '超时应该是 30');
49
-
50
- console.log('✅ ConfigManager 核心功能测试 - 通过');
51
- } catch (error) {
52
- console.log('❌ ConfigManager 核心功能测试 - 失败:', error.message);
53
- }
54
- }
55
-
56
- testConfigManager();
@@ -1,74 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- /**
4
- * 更新RooCode配置使用标准MCP实现v1.5.0
5
- */
6
-
7
- import { readFileSync, writeFileSync } from 'fs';
8
-
9
- const configPath = "/Users/dreambt/Library/Application Support/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/mcp_settings.json";
10
-
11
- function updateConfig() {
12
- try {
13
- console.log('🔧 更新RooCode配置使用标准MCP实现v1.5.0...');
14
-
15
- // 读取配置
16
- const config = JSON.parse(readFileSync(configPath, 'utf-8'));
17
-
18
- // 更新test-coderocket-mcp配置
19
- if (config.mcpServers['test-coderocket-mcp']) {
20
- config.mcpServers['test-coderocket-mcp'] = {
21
- command: 'node',
22
- args: ['/Users/dreambt/sources/coderocket/coderocket-mcp/dist/index.js'],
23
- disabled: false,
24
- alwaysAllow: [
25
- 'review_code',
26
- 'review_changes',
27
- 'review_commit',
28
- 'review_files',
29
- 'configure_ai_service',
30
- 'get_ai_service_status'
31
- ]
32
- };
33
- console.log('✅ 更新 test-coderocket-mcp 配置 (标准MCP实现v1.5.0)');
34
- }
35
-
36
- // 确保其他配置仍然禁用
37
- if (config.mcpServers['coderocket-mcp']) {
38
- config.mcpServers['coderocket-mcp'].disabled = true;
39
- console.log('❌ 保持 coderocket-mcp 禁用状态');
40
- }
41
-
42
- if (config.mcpServers['global-coderocket-mcp']) {
43
- config.mcpServers['global-coderocket-mcp'].disabled = true;
44
- console.log('❌ 保持 global-coderocket-mcp 禁用状态');
45
- }
46
-
47
- // 写回配置
48
- writeFileSync(configPath, JSON.stringify(config, null, 2));
49
-
50
- console.log('\n✅ 配置更新完成!');
51
- console.log('\n📋 标准MCP实现特性:');
52
- console.log(' ✅ 符合官方MCP协议规范');
53
- console.log(' ✅ 使用标准Tool类型定义');
54
- console.log(' ✅ 直接使用JSON Schema而非Zod转换');
55
- console.log(' ✅ 简化的错误处理机制');
56
- console.log(' ✅ 完整的调试日志系统');
57
-
58
- console.log('\n📊 工具列表:');
59
- console.log(' 🔍 review_code - 代码片段审查');
60
- console.log(' 🚀 review_changes - Git更改审查');
61
- console.log(' 📝 review_commit - Git提交审查');
62
- console.log(' 📁 review_files - 文件列表审查');
63
- console.log(' ⚙️ configure_ai_service - AI服务配置');
64
- console.log(' 📊 get_ai_service_status - AI服务状态');
65
-
66
- console.log('\n🔄 请重启RooCode以使用标准MCP实现');
67
- console.log('\n💡 如果工具现在可见,说明问题已解决!');
68
-
69
- } catch (error) {
70
- console.error('❌ 更新配置失败:', error.message);
71
- }
72
- }
73
-
74
- updateConfig();
@@ -1,145 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- /**
4
- * RooCode MCP配置验证脚本
5
- * 验证所有coderocket-mcp配置是否能正常启动
6
- */
7
-
8
- import { spawn } from 'child_process';
9
- import { readFileSync } from 'fs';
10
-
11
- const configPath = "/Users/dreambt/Library/Application Support/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/mcp_settings.json";
12
-
13
- function testCommand(name, command, args) {
14
- return new Promise((resolve) => {
15
- console.log(`\n🧪 测试配置: ${name}`);
16
- console.log(`📋 命令: ${command} ${args.join(' ')}`);
17
-
18
- const child = spawn(command, args, {
19
- stdio: ['pipe', 'pipe', 'pipe'],
20
- env: { ...process.env, DEBUG: 'true' }
21
- });
22
-
23
- let hasOutput = false;
24
- let errorOutput = '';
25
-
26
- const timeout = setTimeout(() => {
27
- child.kill();
28
- resolve({
29
- name,
30
- success: hasOutput,
31
- error: hasOutput ? null : '启动超时'
32
- });
33
- }, 5000);
34
-
35
- child.stderr.on('data', (data) => {
36
- const output = data.toString();
37
- errorOutput += output;
38
-
39
- if (output.includes('MCP 服务器启动成功') || output.includes('✅ MCP Server')) {
40
- hasOutput = true;
41
- clearTimeout(timeout);
42
- child.kill();
43
- resolve({
44
- name,
45
- success: true,
46
- error: null
47
- });
48
- }
49
- });
50
-
51
- child.on('error', (error) => {
52
- clearTimeout(timeout);
53
- resolve({
54
- name,
55
- success: false,
56
- error: error.message
57
- });
58
- });
59
-
60
- child.on('exit', (code) => {
61
- clearTimeout(timeout);
62
- if (!hasOutput) {
63
- resolve({
64
- name,
65
- success: false,
66
- error: `进程退出 (code: ${code})`
67
- });
68
- }
69
- });
70
- });
71
- }
72
-
73
- async function verifyConfig() {
74
- console.log('🔍 验证RooCode MCP配置\n');
75
-
76
- try {
77
- // 读取配置文件
78
- const config = JSON.parse(readFileSync(configPath, 'utf-8'));
79
- const coderocketConfigs = Object.entries(config.mcpServers)
80
- .filter(([name]) => name.includes('coderocket'));
81
-
82
- console.log(`📋 找到 ${coderocketConfigs.length} 个coderocket-mcp配置:`);
83
- coderocketConfigs.forEach(([name, cfg]) => {
84
- console.log(` - ${name}: ${cfg.command} ${cfg.args?.join(' ') || ''} (disabled: ${cfg.disabled})`);
85
- });
86
-
87
- // 测试每个配置
88
- const results = [];
89
- for (const [name, cfg] of coderocketConfigs) {
90
- if (cfg.disabled) {
91
- console.log(`\n⏭️ 跳过已禁用的配置: ${name}`);
92
- continue;
93
- }
94
-
95
- const result = await testCommand(name, cfg.command, cfg.args || []);
96
- results.push(result);
97
- }
98
-
99
- // 输出结果
100
- console.log('\n📊 验证结果:');
101
- results.forEach(result => {
102
- if (result.success) {
103
- console.log(`✅ ${result.name}: 正常`);
104
- } else {
105
- console.log(`❌ ${result.name}: ${result.error}`);
106
- }
107
- });
108
-
109
- // 建议
110
- console.log('\n💡 建议:');
111
- const workingConfigs = results.filter(r => r.success);
112
- const failedConfigs = results.filter(r => !r.success);
113
-
114
- if (workingConfigs.length > 0) {
115
- console.log(`✅ 有 ${workingConfigs.length} 个配置正常工作:`);
116
- workingConfigs.forEach(r => console.log(` - ${r.name}`));
117
- console.log('\n🔧 建议操作:');
118
- console.log('1. 禁用失败的配置');
119
- console.log('2. 只保留一个工作正常的配置');
120
- console.log('3. 重启RooCode');
121
- }
122
-
123
- if (failedConfigs.length > 0) {
124
- console.log(`\n❌ 有 ${failedConfigs.length} 个配置失败:`);
125
- failedConfigs.forEach(r => console.log(` - ${r.name}: ${r.error}`));
126
- }
127
-
128
- // 生成修复脚本
129
- if (failedConfigs.length > 0) {
130
- console.log('\n🔧 生成配置修复建议...');
131
-
132
- // 找到最佳配置
133
- const bestConfig = workingConfigs[0];
134
- if (bestConfig) {
135
- console.log(`\n推荐使用配置: ${bestConfig.name}`);
136
- console.log('可以禁用其他配置以避免冲突');
137
- }
138
- }
139
-
140
- } catch (error) {
141
- console.error('❌ 验证失败:', error.message);
142
- }
143
- }
144
-
145
- verifyConfig().catch(console.error);