@ppdocs/mcp 3.0.7 → 3.0.8

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/tools/index.js +15 -15
  2. package/package.json +1 -1
@@ -5,7 +5,7 @@ import { wrap, formatDocMarkdown, formatTreeText, countTreeDocs, formatFileSize
5
5
  export function registerTools(server, projectId, _user) {
6
6
  // ===================== 跨项目访问 =====================
7
7
  // 0. 列出所有可访问的项目
8
- server.tool('kg_list_projects', '列出所有可访问的项目(用于跨项目访问)', {}, async () => {
8
+ server.tool('kg_list_projects', '列出所有可访问的项目(返回name和id)。跨项目操作的第一步:先调用此工具获取项目ID,再作为其他工具的targetProject参数', {}, async () => {
9
9
  try {
10
10
  const projects = await storage.crossListProjects();
11
11
  if (projects.length === 0) {
@@ -197,10 +197,10 @@ export function registerTools(server, projectId, _user) {
197
197
  return wrap(doc ? '✅ 项目介绍已更新' : '更新失败');
198
198
  });
199
199
  // 3.6 获取项目规则
200
- server.tool('kg_get_rules', '获取项目规则(可指定类型或获取全部)。支持跨项目只读访问', {
200
+ server.tool('kg_get_rules', '获取项目规则(可指定类型或获取全部)。支持跨项目只读访问(需先用kg_list_projects获取项目ID)', {
201
201
  ruleType: z.string().optional()
202
202
  .describe('规则类型(如 userStyles, codeStyle, reviewRules, testRules, unitTests, 或自定义类型)。不传则返回全部'),
203
- targetProject: z.string().optional().describe('目标项目ID或名称(不填=当前项目,跨项目只读)')
203
+ targetProject: z.string().optional().describe('目标项目ID或名称(不填=当前项目)。ID可从kg_list_projects获取')
204
204
  }, async (args) => {
205
205
  // 跨项目访问
206
206
  if (args.targetProject) {
@@ -331,9 +331,9 @@ export function registerTools(server, projectId, _user) {
331
331
  }
332
332
  });
333
333
  // 5. 读取单个文档详情
334
- server.tool('kg_read_node', '读取文档完整内容(简介、正文、版本历史、修复记录)。支持跨项目只读访问', {
334
+ server.tool('kg_read_node', '读取文档完整内容(简介、正文、版本历史、修复记录)。支持跨项目只读访问(需先用kg_list_projects获取项目ID)', {
335
335
  nodeId: z.string().describe('文档路径'),
336
- targetProject: z.string().optional().describe('目标项目ID或名称(不填=当前项目,跨项目只读)')
336
+ targetProject: z.string().optional().describe('目标项目ID或名称(不填=当前项目)。ID可从kg_list_projects获取')
337
337
  }, async (args) => {
338
338
  // 跨项目访问
339
339
  if (args.targetProject) {
@@ -354,8 +354,8 @@ export function registerTools(server, projectId, _user) {
354
354
  return wrap(lines.join('\n'));
355
355
  });
356
356
  // 10. 获取知识库树状图
357
- server.tool('kg_get_tree', '获取知识库目录树。格式: 📄 文档名 # 简介。支持跨项目只读访问', {
358
- targetProject: z.string().optional().describe('目标项目ID或名称(不填=当前项目,跨项目只读)')
357
+ server.tool('kg_get_tree', '获取知识库目录树。格式: 📄 文档名 # 简介。支持跨项目只读访问(需先用kg_list_projects获取项目ID)', {
358
+ targetProject: z.string().optional().describe('目标项目ID或名称(不填=当前项目)。ID可从kg_list_projects获取')
359
359
  }, async (args) => {
360
360
  try {
361
361
  // 跨项目访问
@@ -386,9 +386,9 @@ export function registerTools(server, projectId, _user) {
386
386
  }
387
387
  });
388
388
  // 11. 按状态筛选文档
389
- server.tool('kg_get_docs_by_status', '获取指定状态的文档列表。支持跨项目只读访问', {
389
+ server.tool('kg_get_docs_by_status', '获取指定状态的文档列表。支持跨项目只读访问(需先用kg_list_projects获取项目ID)', {
390
390
  statusList: z.array(z.string()).describe('状态列表(如["未完成","待修复"])'),
391
- targetProject: z.string().optional().describe('目标项目ID或名称(不填=当前项目,跨项目只读)')
391
+ targetProject: z.string().optional().describe('目标项目ID或名称(不填=当前项目)。ID可从kg_list_projects获取')
392
392
  }, async (args) => {
393
393
  // 跨项目访问
394
394
  if (args.targetProject) {
@@ -518,9 +518,9 @@ export function registerTools(server, projectId, _user) {
518
518
  }
519
519
  });
520
520
  // 列出项目文件
521
- server.tool('project_list_files', '列出项目源码目录下的文件。需要先上传文件或项目已关联源码目录。支持跨项目只读访问(用targetProject参考其他项目的文件结构)', {
521
+ server.tool('project_list_files', '浏览项目源码目录结构(仅列出文件名和大小,不读内容)。目标项目需已上传文件或关联源码目录。跨项目时先用kg_list_projects获取项目ID。查看文件内容请用project_read_file', {
522
522
  dir: z.string().optional().describe('子目录路径(如"src/components"),不填则列出根目录'),
523
- targetProject: z.string().optional().describe('目标项目ID或名称(不填=当前项目,跨项目只读)')
523
+ targetProject: z.string().optional().describe('目标项目ID或名称(不填=当前项目)。ID可从kg_list_projects获取')
524
524
  }, async (args) => {
525
525
  try {
526
526
  const files = args.targetProject
@@ -543,9 +543,9 @@ export function registerTools(server, projectId, _user) {
543
543
  }
544
544
  });
545
545
  // 读取项目文件
546
- server.tool('project_read_file', '读取项目源码文件内容(文本,限制1MB)。支持跨项目只读访问(用targetProject参考其他项目的代码实现)', {
546
+ server.tool('project_read_file', '读取单个源码文件的文本内容(1MB)。适合查看具体代码实现。跨项目时先用kg_list_projects获取项目ID。浏览目录结构请用project_list_files', {
547
547
  path: z.string().describe('文件路径(如"src/main.ts")'),
548
- targetProject: z.string().optional().describe('目标项目ID或名称(不填=当前项目,跨项目只读)')
548
+ targetProject: z.string().optional().describe('目标项目ID或名称(不填=当前项目)。ID可从kg_list_projects获取')
549
549
  }, async (args) => {
550
550
  try {
551
551
  const content = args.targetProject
@@ -559,9 +559,9 @@ export function registerTools(server, projectId, _user) {
559
559
  }
560
560
  });
561
561
  // 下载项目目录 (zip → 自动解压)
562
- server.tool('project_download_dir', '下载项目源码目录(自动打包zip并解压到本地临时目录)。支持跨项目下载(用targetProject拉取其他项目的模块代码到本地复用)', {
562
+ server.tool('project_download_dir', '下载整个源码目录到本地临时目录(自动打包zip解压)。适合需要本地复用代码的场景,仅浏览代码请用project_read_file。跨项目时先用kg_list_projects获取项目ID', {
563
563
  dir: z.string().describe('目录路径(如"src")'),
564
- targetProject: z.string().optional().describe('目标项目ID或名称(不填=当前项目,跨项目只读)')
564
+ targetProject: z.string().optional().describe('目标项目ID或名称(不填=当前项目)。ID可从kg_list_projects获取')
565
565
  }, async (args) => {
566
566
  try {
567
567
  const result = args.targetProject
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ppdocs/mcp",
3
- "version": "3.0.7",
3
+ "version": "3.0.8",
4
4
  "description": "ppdocs MCP Server - Knowledge Graph for Claude",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",