@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.
Files changed (2) hide show
  1. package/dist/cli.js +57 -5
  2. 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
- execSilent(`claude mcp remove ${serverName}`);
155
- const cmd = `claude mcp add ${serverName} -- npx -y @ppdocs/mcp@latest`;
156
- execSync(cmd, { stdio: 'inherit' });
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
- console.log(`⚠️ Claude MCP registration failed: ${e}`);
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) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ppdocs/mcp",
3
- "version": "2.6.21",
3
+ "version": "2.6.22",
4
4
  "description": "ppdocs MCP Server - Knowledge Graph for Claude",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",