read_project_files
Read project file contents to provide AI experts with code context for development, review, and optimization tasks.
Instructions
读取项目文件内容,让专家了解代码上下文
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | 文件或目录路径(相对于当前工作目录) | |
| pattern | No | 文件匹配模式(如 *.ts, *.js),仅读取目录时有效 | |
| maxFiles | No | 最多读取文件数(默认 10) |
Implementation Reference
- src/server.ts:720-761 (handler)Handler for 'read_project_files' tool: reads single file or directory contents (with optional pattern filter and maxFiles limit), truncates long contents, formats as Markdown, and returns as tool response.case 'read_project_files': { const { path: targetPath, pattern, maxFiles = 10 } = args as { path: string; pattern?: string; maxFiles?: number }; const fullPath = join(process.cwd(), targetPath); if (!existsSync(fullPath)) { throw new Error(`路径不存在: ${targetPath}`); } const stat = statSync(fullPath); let result = ''; if (stat.isFile()) { // 读取单个文件 const content = readFileSync(fullPath, 'utf-8'); result = `# 📄 ${targetPath}\n\n\`\`\`\n${content.slice(0, 10000)}${content.length > 10000 ? '\n... (内容已截断)' : ''}\n\`\`\``; } else if (stat.isDirectory()) { // 读取目录下的文件 const files = readdirSync(fullPath) .filter(f => { if (pattern) { const regex = new RegExp(pattern.replace('*', '.*')); return regex.test(f); } return true; }) .slice(0, maxFiles); result = `# 📁 ${targetPath}\n\n`; for (const file of files) { const filePath = join(fullPath, file); const fileStat = statSync(filePath); if (fileStat.isFile()) { const content = readFileSync(filePath, 'utf-8'); result += `## ${file}\n\`\`\`\n${content.slice(0, 3000)}${content.length > 3000 ? '\n... (内容已截断)' : ''}\n\`\`\`\n\n`; } } } return { content: [{ type: 'text', text: result }], }; }
- src/server.ts:306-323 (schema)Input schema definition for 'read_project_files' tool: requires 'path', optional 'pattern' and 'maxFiles'.inputSchema: { type: 'object', properties: { path: { type: 'string', description: '文件或目录路径(相对于当前工作目录)', }, pattern: { type: 'string', description: '文件匹配模式(如 *.ts, *.js),仅读取目录时有效', }, maxFiles: { type: 'number', description: '最多读取文件数(默认 10)', }, }, required: ['path'], },
- src/server.ts:303-324 (registration)Tool registration entry in the tools array, including name, description, and input schema, used by MCP server for tool listing.{ name: 'read_project_files', description: '读取项目文件内容,让专家了解代码上下文', inputSchema: { type: 'object', properties: { path: { type: 'string', description: '文件或目录路径(相对于当前工作目录)', }, pattern: { type: 'string', description: '文件匹配模式(如 *.ts, *.js),仅读取目录时有效', }, maxFiles: { type: 'number', description: '最多读取文件数(默认 10)', }, }, required: ['path'], }, },