@ppdocs/mcp 2.6.21 → 2.6.22
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/cli.js +57 -5
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -151,12 +151,26 @@ function autoRegisterMcp(apiUrl, user) {
|
|
|
151
151
|
detected.push('Claude');
|
|
152
152
|
try {
|
|
153
153
|
console.log(`✅ Detected Claude CLI, registering MCP...`);
|
|
154
|
-
|
|
155
|
-
const
|
|
156
|
-
|
|
154
|
+
// 先检查是否已存在
|
|
155
|
+
const checkResult = execSync(`claude mcp list`, { encoding: 'utf-8' });
|
|
156
|
+
if (checkResult.includes(serverName)) {
|
|
157
|
+
console.log(`✅ Claude MCP already configured`);
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
const cmd = `claude mcp add ${serverName} -- npx -y @ppdocs/mcp@latest`;
|
|
161
|
+
execSync(cmd, { stdio: 'inherit' });
|
|
162
|
+
}
|
|
157
163
|
}
|
|
158
164
|
catch (e) {
|
|
159
|
-
|
|
165
|
+
// 如果 list 失败,尝试添加
|
|
166
|
+
try {
|
|
167
|
+
execSilent(`claude mcp remove ${serverName}`);
|
|
168
|
+
const cmd = `claude mcp add ${serverName} -- npx -y @ppdocs/mcp@latest`;
|
|
169
|
+
execSync(cmd, { stdio: 'inherit' });
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
console.log(`⚠️ Claude MCP registration failed`);
|
|
173
|
+
}
|
|
160
174
|
}
|
|
161
175
|
}
|
|
162
176
|
// 检测 Codex CLI (OpenAI)
|
|
@@ -246,6 +260,33 @@ function generateHooksConfig() {
|
|
|
246
260
|
}
|
|
247
261
|
};
|
|
248
262
|
}
|
|
263
|
+
/** 生成 MCP 权限配置 (允许全部 ppdocs-kg 方法) */
|
|
264
|
+
function generateMcpPermissions() {
|
|
265
|
+
const mcpMethods = [
|
|
266
|
+
// 知识图谱操作
|
|
267
|
+
'kg_create_node',
|
|
268
|
+
'kg_delete_node',
|
|
269
|
+
'kg_update_node',
|
|
270
|
+
'kg_update_root',
|
|
271
|
+
'kg_get_rules',
|
|
272
|
+
'kg_save_rules',
|
|
273
|
+
'kg_lock_node',
|
|
274
|
+
'kg_search',
|
|
275
|
+
'kg_find_path',
|
|
276
|
+
'kg_list_nodes',
|
|
277
|
+
'kg_get_relations',
|
|
278
|
+
'kg_read_node',
|
|
279
|
+
'kg_get_tree',
|
|
280
|
+
'kg_find_by_file',
|
|
281
|
+
// 任务管理
|
|
282
|
+
'task_create',
|
|
283
|
+
'task_list',
|
|
284
|
+
'task_get',
|
|
285
|
+
'task_add_log',
|
|
286
|
+
'task_complete',
|
|
287
|
+
];
|
|
288
|
+
return mcpMethods.map(m => `mcp__ppdocs-kg__${m}`);
|
|
289
|
+
}
|
|
249
290
|
/** 安装 Claude Code 模板 */
|
|
250
291
|
function installClaudeTemplates(cwd) {
|
|
251
292
|
const claudeDir = path.join(cwd, '.claude');
|
|
@@ -273,13 +314,24 @@ function installClaudeTemplates(cwd) {
|
|
|
273
314
|
catch { /* ignore */ }
|
|
274
315
|
}
|
|
275
316
|
const hooksConfig = generateHooksConfig();
|
|
317
|
+
// 合并 MCP 权限到 permissions.allow
|
|
318
|
+
const existingPermissions = existingSettings.permissions || {};
|
|
319
|
+
const existingAllow = existingPermissions.allow || [];
|
|
320
|
+
const mcpPermissions = generateMcpPermissions();
|
|
321
|
+
// 去重合并
|
|
322
|
+
const mergedAllow = [...new Set([...existingAllow, ...mcpPermissions])];
|
|
276
323
|
const mergedSettings = {
|
|
277
324
|
...existingSettings,
|
|
278
|
-
...hooksConfig
|
|
325
|
+
...hooksConfig,
|
|
326
|
+
permissions: {
|
|
327
|
+
...existingPermissions,
|
|
328
|
+
allow: mergedAllow,
|
|
329
|
+
}
|
|
279
330
|
};
|
|
280
331
|
fs.mkdirSync(claudeDir, { recursive: true });
|
|
281
332
|
fs.writeFileSync(settingsPath, JSON.stringify(mergedSettings, null, 2));
|
|
282
333
|
console.log(`✅ Configured .claude/settings.json hooks (${process.platform})`);
|
|
334
|
+
console.log(`✅ Added ${mcpPermissions.length} MCP method permissions`);
|
|
283
335
|
}
|
|
284
336
|
/** 安装 Codex 模板 (生成 AGENTS.md) */
|
|
285
337
|
function installCodexTemplates(cwd) {
|