@vdpeijl/kb-mcp 0.1.2 → 0.2.0
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/dist/src/cli.js +1 -0
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/setup.d.ts.map +1 -1
- package/dist/src/commands/setup.js +104 -46
- package/dist/src/commands/setup.js.map +1 -1
- package/dist/src/commands/uninstall.d.ts +9 -0
- package/dist/src/commands/uninstall.d.ts.map +1 -0
- package/dist/src/commands/uninstall.js +146 -0
- package/dist/src/commands/uninstall.js.map +1 -0
- package/package.json +1 -1
package/dist/src/cli.js
CHANGED
|
@@ -13,6 +13,7 @@ const main = defineCommand({
|
|
|
13
13
|
sync: () => import('./commands/sync.js').then(m => m.default),
|
|
14
14
|
sources: () => import('./commands/sources.js').then(m => m.default),
|
|
15
15
|
setup: () => import('./commands/setup.js').then(m => m.default),
|
|
16
|
+
uninstall: () => import('./commands/uninstall.js').then(m => m.default),
|
|
16
17
|
doctor: () => import('./commands/doctor.js').then(m => m.default),
|
|
17
18
|
stats: () => import('./commands/stats.js').then(m => m.default),
|
|
18
19
|
},
|
package/dist/src/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,IAAI,GAAG,aAAa,CAAC;IACzB,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,kDAAkD;KAChE;IACD,WAAW,EAAE;QACX,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAC/D,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAC7D,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAC7D,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QACnE,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAC/D,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QACjE,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;KAChE;CACF,CAAC,CAAC;AAEH,UAAU;AACV,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,IAAI,GAAG,aAAa,CAAC;IACzB,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,kDAAkD;KAChE;IACD,WAAW,EAAE;QACX,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAC/D,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAC7D,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAC7D,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QACnE,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAC/D,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QACvE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QACjE,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;KAChE;CACF,CAAC,CAAC;AAEH,UAAU;AACV,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/commands/setup.ts"],"names":[],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/commands/setup.ts"],"names":[],"mappings":";;;;;;;AAkKA,wBAmDG"}
|
|
@@ -1,78 +1,134 @@
|
|
|
1
1
|
import { defineCommand } from 'citty';
|
|
2
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
|
|
3
|
+
import { homedir } from 'os';
|
|
4
|
+
import { join, dirname } from 'path';
|
|
5
|
+
import { execSync } from 'child_process';
|
|
2
6
|
import { exitWithError } from '../utils/errors.js';
|
|
7
|
+
async function setupClaudeCode() {
|
|
8
|
+
const cmd = 'claude mcp add --transport stdio knowledge-base -- bash -l -c "kb-mcp serve"';
|
|
9
|
+
try {
|
|
10
|
+
execSync(cmd, { stdio: 'inherit' });
|
|
11
|
+
console.log('✅ Successfully configured Claude Code');
|
|
12
|
+
}
|
|
13
|
+
catch (error) {
|
|
14
|
+
if (error.message?.includes('command not found')) {
|
|
15
|
+
throw new Error('Claude Code CLI not found. Please install it first:\n npm install -g @anthropic/claude-code');
|
|
16
|
+
}
|
|
17
|
+
throw error;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
async function setupJsonClient(configPath, clientName, merger) {
|
|
21
|
+
const fullPath = configPath.startsWith('~')
|
|
22
|
+
? join(homedir(), configPath.slice(2))
|
|
23
|
+
: configPath;
|
|
24
|
+
// Ensure directory exists
|
|
25
|
+
mkdirSync(dirname(fullPath), { recursive: true });
|
|
26
|
+
// Read existing config or create new
|
|
27
|
+
let config = {};
|
|
28
|
+
if (existsSync(fullPath)) {
|
|
29
|
+
try {
|
|
30
|
+
const content = readFileSync(fullPath, 'utf-8');
|
|
31
|
+
config = JSON.parse(content);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
console.warn(`⚠️ Failed to parse ${fullPath}, creating new config`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
// Merge configuration
|
|
38
|
+
config = merger(config);
|
|
39
|
+
// Write back
|
|
40
|
+
writeFileSync(fullPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
|
|
41
|
+
console.log(`✅ Successfully configured ${clientName} at ${fullPath}`);
|
|
42
|
+
}
|
|
3
43
|
const CONFIGS = {
|
|
4
44
|
'claude-code': {
|
|
5
45
|
name: 'Claude Code',
|
|
6
46
|
path: '~/.claude/claude_desktop_config.json',
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
'knowledge-base': {
|
|
10
|
-
command: 'kb-mcp',
|
|
11
|
-
args: ['serve'],
|
|
12
|
-
},
|
|
13
|
-
},
|
|
14
|
-
},
|
|
47
|
+
cliCommand: 'claude mcp add --transport stdio knowledge-base -- bash -l -c "kb-mcp serve"',
|
|
48
|
+
setup: setupClaudeCode,
|
|
15
49
|
},
|
|
16
50
|
cursor: {
|
|
17
51
|
name: 'Cursor',
|
|
18
|
-
path: '
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
52
|
+
path: join(homedir(), '.cursor', 'mcp.json'),
|
|
53
|
+
setup: async () => {
|
|
54
|
+
await setupJsonClient(join(homedir(), '.cursor', 'mcp.json'), 'Cursor', (existing) => {
|
|
55
|
+
if (!existing.mcpServers) {
|
|
56
|
+
existing.mcpServers = {};
|
|
57
|
+
}
|
|
58
|
+
existing.mcpServers['knowledge-base'] = {
|
|
59
|
+
command: 'bash',
|
|
60
|
+
args: ['-l', '-c', 'kb-mcp serve'],
|
|
61
|
+
};
|
|
62
|
+
return existing;
|
|
63
|
+
});
|
|
26
64
|
},
|
|
27
65
|
},
|
|
28
66
|
windsurf: {
|
|
29
67
|
name: 'Windsurf',
|
|
30
68
|
path: '~/.codeium/windsurf/mcp_config.json',
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
69
|
+
setup: async () => {
|
|
70
|
+
await setupJsonClient(join(homedir(), '.codeium', 'windsurf', 'mcp_config.json'), 'Windsurf', (existing) => {
|
|
71
|
+
if (!existing.mcpServers) {
|
|
72
|
+
existing.mcpServers = {};
|
|
73
|
+
}
|
|
74
|
+
existing.mcpServers['knowledge-base'] = {
|
|
75
|
+
command: 'bash',
|
|
76
|
+
args: ['-l', '-c', 'kb-mcp serve'],
|
|
77
|
+
};
|
|
78
|
+
return existing;
|
|
79
|
+
});
|
|
38
80
|
},
|
|
39
81
|
},
|
|
40
82
|
continue: {
|
|
41
83
|
name: 'Continue.dev',
|
|
42
84
|
path: '~/.continue/config.json',
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
{
|
|
85
|
+
setup: async () => {
|
|
86
|
+
await setupJsonClient(join(homedir(), '.continue', 'config.json'), 'Continue.dev', (existing) => {
|
|
87
|
+
if (!existing.experimental) {
|
|
88
|
+
existing.experimental = {};
|
|
89
|
+
}
|
|
90
|
+
if (!existing.experimental.modelContextProtocolServers) {
|
|
91
|
+
existing.experimental.modelContextProtocolServers = [];
|
|
92
|
+
}
|
|
93
|
+
// Check if kb-mcp already exists
|
|
94
|
+
const servers = existing.experimental.modelContextProtocolServers;
|
|
95
|
+
const hasKbMcp = servers.some((s) => s.transport?.command?.includes('kb-mcp'));
|
|
96
|
+
if (!hasKbMcp) {
|
|
97
|
+
servers.push({
|
|
47
98
|
transport: {
|
|
48
99
|
type: 'stdio',
|
|
49
|
-
command: '
|
|
50
|
-
args: ['serve'],
|
|
100
|
+
command: 'bash',
|
|
101
|
+
args: ['-l', '-c', 'kb-mcp serve'],
|
|
51
102
|
},
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
return existing;
|
|
106
|
+
});
|
|
55
107
|
},
|
|
56
108
|
},
|
|
57
109
|
zed: {
|
|
58
110
|
name: 'Zed',
|
|
59
111
|
path: '~/.config/zed/settings.json',
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
112
|
+
setup: async () => {
|
|
113
|
+
await setupJsonClient(join(homedir(), '.config', 'zed', 'settings.json'), 'Zed', (existing) => {
|
|
114
|
+
if (!existing.context_servers) {
|
|
115
|
+
existing.context_servers = {};
|
|
116
|
+
}
|
|
117
|
+
existing.context_servers['knowledge-base'] = {
|
|
63
118
|
command: {
|
|
64
|
-
path: '
|
|
65
|
-
args: ['serve'],
|
|
119
|
+
path: 'bash',
|
|
120
|
+
args: ['-l', '-c', 'kb-mcp serve'],
|
|
66
121
|
},
|
|
67
|
-
}
|
|
68
|
-
|
|
122
|
+
};
|
|
123
|
+
return existing;
|
|
124
|
+
});
|
|
69
125
|
},
|
|
70
126
|
},
|
|
71
127
|
};
|
|
72
128
|
export default defineCommand({
|
|
73
129
|
meta: {
|
|
74
130
|
name: 'setup',
|
|
75
|
-
description: '
|
|
131
|
+
description: 'Automatically configure MCP client',
|
|
76
132
|
},
|
|
77
133
|
args: {
|
|
78
134
|
client: {
|
|
@@ -87,7 +143,7 @@ export default defineCommand({
|
|
|
87
143
|
if (!client) {
|
|
88
144
|
// Show all options
|
|
89
145
|
console.log('\n🔧 MCP Client Setup\n');
|
|
90
|
-
console.log('Run with a client name to
|
|
146
|
+
console.log('Run with a client name to automatically configure:\n');
|
|
91
147
|
for (const [key, value] of Object.entries(CONFIGS)) {
|
|
92
148
|
console.log(` kb-mcp setup ${key.padEnd(15)} # ${value.name}`);
|
|
93
149
|
}
|
|
@@ -101,11 +157,13 @@ export default defineCommand({
|
|
|
101
157
|
console.error();
|
|
102
158
|
process.exit(1);
|
|
103
159
|
}
|
|
104
|
-
console.log(`\n🔧 ${config.name}
|
|
105
|
-
|
|
106
|
-
console.log(
|
|
107
|
-
console.log(
|
|
108
|
-
console.log('
|
|
160
|
+
console.log(`\n🔧 Configuring ${config.name}...\n`);
|
|
161
|
+
await config.setup();
|
|
162
|
+
console.log();
|
|
163
|
+
console.log('Next steps:');
|
|
164
|
+
console.log(' 1. Restart your MCP client');
|
|
165
|
+
console.log(' 2. The knowledge-base MCP server should now be available');
|
|
166
|
+
console.log();
|
|
109
167
|
}
|
|
110
168
|
catch (error) {
|
|
111
169
|
exitWithError(error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AASnD,KAAK,UAAU,eAAe;IAC5B,MAAM,GAAG,GAAG,8EAA8E,CAAC;IAE3F,IAAI,CAAC;QACH,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CAAC,8FAA8F,CAAC,CAAC;QAClH,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,UAAkB,EAAE,UAAkB,EAAE,MAA8B;IACnG,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC;QACzC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC,UAAU,CAAC;IAEf,0BAA0B;IAC1B,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAElD,qCAAqC;IACrC,IAAI,MAAM,GAAQ,EAAE,CAAC;IACrB,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAChD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,uBAAuB,QAAQ,uBAAuB,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAExB,aAAa;IACb,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,6BAA6B,UAAU,OAAO,QAAQ,EAAE,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,OAAO,GAAiC;IAC5C,aAAa,EAAE;QACb,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,sCAAsC;QAC5C,UAAU,EAAE,8EAA8E;QAC1F,KAAK,EAAE,eAAe;KACvB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC;QAC5C,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,MAAM,eAAe,CACnB,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,EACtC,QAAQ,EACR,CAAC,QAAQ,EAAE,EAAE;gBACX,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;oBACzB,QAAQ,CAAC,UAAU,GAAG,EAAE,CAAC;gBAC3B,CAAC;gBACD,QAAQ,CAAC,UAAU,CAAC,gBAAgB,CAAC,GAAG;oBACtC,OAAO,EAAE,MAAM;oBACf,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC;iBACnC,CAAC;gBACF,OAAO,QAAQ,CAAC;YAClB,CAAC,CACF,CAAC;QACJ,CAAC;KACF;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,qCAAqC;QAC3C,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,MAAM,eAAe,CACnB,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,CAAC,EAC1D,UAAU,EACV,CAAC,QAAQ,EAAE,EAAE;gBACX,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;oBACzB,QAAQ,CAAC,UAAU,GAAG,EAAE,CAAC;gBAC3B,CAAC;gBACD,QAAQ,CAAC,UAAU,CAAC,gBAAgB,CAAC,GAAG;oBACtC,OAAO,EAAE,MAAM;oBACf,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC;iBACnC,CAAC;gBACF,OAAO,QAAQ,CAAC;YAClB,CAAC,CACF,CAAC;QACJ,CAAC;KACF;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,yBAAyB;QAC/B,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,MAAM,eAAe,CACnB,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC,EAC3C,cAAc,EACd,CAAC,QAAQ,EAAE,EAAE;gBACX,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;oBAC3B,QAAQ,CAAC,YAAY,GAAG,EAAE,CAAC;gBAC7B,CAAC;gBACD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,2BAA2B,EAAE,CAAC;oBACvD,QAAQ,CAAC,YAAY,CAAC,2BAA2B,GAAG,EAAE,CAAC;gBACzD,CAAC;gBAED,iCAAiC;gBACjC,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,2BAA2B,CAAC;gBAClE,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CACvC,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,CACzC,CAAC;gBAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,OAAO,CAAC,IAAI,CAAC;wBACX,SAAS,EAAE;4BACT,IAAI,EAAE,OAAO;4BACb,OAAO,EAAE,MAAM;4BACf,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC;yBACnC;qBACF,CAAC,CAAC;gBACL,CAAC;gBAED,OAAO,QAAQ,CAAC;YAClB,CAAC,CACF,CAAC;QACJ,CAAC;KACF;IACD,GAAG,EAAE;QACH,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,6BAA6B;QACnC,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,MAAM,eAAe,CACnB,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,CAAC,EAClD,KAAK,EACL,CAAC,QAAQ,EAAE,EAAE;gBACX,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;oBAC9B,QAAQ,CAAC,eAAe,GAAG,EAAE,CAAC;gBAChC,CAAC;gBACD,QAAQ,CAAC,eAAe,CAAC,gBAAgB,CAAC,GAAG;oBAC3C,OAAO,EAAE;wBACP,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC;qBACnC;iBACF,CAAC;gBACF,OAAO,QAAQ,CAAC;YAClB,CAAC,CACF,CAAC;QACJ,CAAC;KACF;CACF,CAAC;AAEF,eAAe,aAAa,CAAC;IAC3B,IAAI,EAAE;QACJ,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,oCAAoC;KAClD;IACD,IAAI,EAAE;QACJ,MAAM,EAAE;YACN,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,2DAA2D;YACxE,QAAQ,EAAE,KAAK;SAChB;KACF;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QAChB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,MAA4B,CAAC;YAEjD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,mBAAmB;gBACnB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;gBACvC,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;gBAEpE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;oBACnD,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;gBAClE,CAAC;gBAED,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,OAAO;YACT,CAAC;YAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAA8B,CAAC,CAAC;YAEvD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,CAAC,KAAK,CAAC,uBAAuB,MAAM,IAAI,CAAC,CAAC;gBACjD,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBACrE,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,IAAI,OAAO,CAAC,CAAC;YAEpD,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YAErB,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;YAC1E,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,aAAa,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../../src/commands/uninstall.ts"],"names":[],"mappings":";;;;;;;AAsHA,wBAgEG"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { defineCommand } from 'citty';
|
|
2
|
+
import { existsSync, rmSync, readFileSync, writeFileSync } from 'fs';
|
|
3
|
+
import { homedir } from 'os';
|
|
4
|
+
import { join } from 'path';
|
|
5
|
+
import { exitWithError } from '../utils/errors.js';
|
|
6
|
+
import { getXDGPaths } from '../config/paths.js';
|
|
7
|
+
const CLIENT_CONFIGS = [
|
|
8
|
+
{
|
|
9
|
+
name: 'Claude Code',
|
|
10
|
+
path: join(homedir(), '.claude', 'claude_desktop_config.json'),
|
|
11
|
+
removeEntry: (config) => {
|
|
12
|
+
if (config.mcpServers?.['knowledge-base']) {
|
|
13
|
+
delete config.mcpServers['knowledge-base'];
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
return false;
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
name: 'Cursor',
|
|
21
|
+
path: join(homedir(), '.cursor', 'mcp.json'),
|
|
22
|
+
removeEntry: (config) => {
|
|
23
|
+
if (config.mcpServers?.['knowledge-base']) {
|
|
24
|
+
delete config.mcpServers['knowledge-base'];
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
return false;
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: 'Windsurf',
|
|
32
|
+
path: join(homedir(), '.codeium', 'windsurf', 'mcp_config.json'),
|
|
33
|
+
removeEntry: (config) => {
|
|
34
|
+
if (config.mcpServers?.['knowledge-base']) {
|
|
35
|
+
delete config.mcpServers['knowledge-base'];
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
return false;
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'Zed',
|
|
43
|
+
path: join(homedir(), '.config', 'zed', 'settings.json'),
|
|
44
|
+
removeEntry: (config) => {
|
|
45
|
+
if (config.context_servers?.['knowledge-base']) {
|
|
46
|
+
delete config.context_servers['knowledge-base'];
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
return false;
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: 'Continue.dev',
|
|
54
|
+
path: join(homedir(), '.continue', 'config.json'),
|
|
55
|
+
removeEntry: (config) => {
|
|
56
|
+
if (config.experimental?.modelContextProtocolServers) {
|
|
57
|
+
const servers = config.experimental.modelContextProtocolServers;
|
|
58
|
+
const initialLength = servers.length;
|
|
59
|
+
config.experimental.modelContextProtocolServers = servers.filter(server => !server.transport.command.includes('kb-mcp'));
|
|
60
|
+
return servers.length !== initialLength;
|
|
61
|
+
}
|
|
62
|
+
return false;
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
];
|
|
66
|
+
function removeFromMcpConfigs() {
|
|
67
|
+
const removed = [];
|
|
68
|
+
for (const client of CLIENT_CONFIGS) {
|
|
69
|
+
if (!existsSync(client.path)) {
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
try {
|
|
73
|
+
const content = readFileSync(client.path, 'utf-8');
|
|
74
|
+
const config = JSON.parse(content);
|
|
75
|
+
if (client.removeEntry(config)) {
|
|
76
|
+
writeFileSync(client.path, JSON.stringify(config, null, 2) + '\n', 'utf-8');
|
|
77
|
+
removed.push(client.name);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
console.warn(`⚠ Failed to update ${client.name} config: ${error}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return removed;
|
|
85
|
+
}
|
|
86
|
+
export default defineCommand({
|
|
87
|
+
meta: {
|
|
88
|
+
name: 'uninstall',
|
|
89
|
+
description: 'Remove kb-mcp data and MCP server configurations',
|
|
90
|
+
},
|
|
91
|
+
args: {
|
|
92
|
+
'keep-data': {
|
|
93
|
+
type: 'boolean',
|
|
94
|
+
description: 'Keep database and config files, only remove from MCP clients',
|
|
95
|
+
default: false,
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
async run({ args }) {
|
|
99
|
+
try {
|
|
100
|
+
console.log('\n🗑️ Uninstalling kb-mcp...\n');
|
|
101
|
+
const keepData = args['keep-data'];
|
|
102
|
+
const removed = [];
|
|
103
|
+
// Remove from MCP client configs
|
|
104
|
+
console.log('Removing from MCP client configurations...');
|
|
105
|
+
const removedClients = removeFromMcpConfigs();
|
|
106
|
+
if (removedClients.length > 0) {
|
|
107
|
+
console.log(`✓ Removed from: ${removedClients.join(', ')}`);
|
|
108
|
+
removed.push(...removedClients);
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
console.log(' No MCP configurations found');
|
|
112
|
+
}
|
|
113
|
+
if (!keepData) {
|
|
114
|
+
const paths = getXDGPaths();
|
|
115
|
+
// Remove data directory
|
|
116
|
+
if (existsSync(paths.data)) {
|
|
117
|
+
rmSync(paths.data, { recursive: true, force: true });
|
|
118
|
+
console.log(`✓ Removed data directory: ${paths.data}`);
|
|
119
|
+
removed.push('data files');
|
|
120
|
+
}
|
|
121
|
+
// Remove config directory
|
|
122
|
+
if (existsSync(paths.config)) {
|
|
123
|
+
rmSync(paths.config, { recursive: true, force: true });
|
|
124
|
+
console.log(`✓ Removed config directory: ${paths.config}`);
|
|
125
|
+
removed.push('config file');
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
console.log();
|
|
129
|
+
if (removed.length > 0) {
|
|
130
|
+
console.log('✅ kb-mcp has been uninstalled');
|
|
131
|
+
console.log();
|
|
132
|
+
console.log('To completely remove the package, run:');
|
|
133
|
+
console.log(' npm uninstall -g @vdpeijl/kb-mcp');
|
|
134
|
+
console.log();
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
console.log('ℹ️ No kb-mcp installations found');
|
|
138
|
+
console.log();
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
exitWithError(error);
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
});
|
|
146
|
+
//# sourceMappingURL=uninstall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../../src/commands/uninstall.ts"],"names":[],"mappings":"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"}
|