add_paragraph
Insert formatted text paragraphs into Word documents by specifying file path, content, and styling options like alignment.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| filePath | Yes | ||
| text | Yes | ||
| style | No | ||
| alignment | No |
Implementation Reference
- src/services/DocumentService.ts:67-92 (handler)The core handler function for the 'add_paragraph' tool. It reads the existing document file, creates a new DOCX document containing a single paragraph with the specified text, style, and alignment, then overwrites the original file with this new content.async addParagraph(filePath: string, options: ParagraphOptions): Promise<APIResponse> { try { const buffer = await fs.readFile(filePath); const doc = new Document({ sections: [{ properties: {}, children: [ new Paragraph({ text: options.text, style: options.style, alignment: options.alignment, }), ], }], }); await Packer.toBuffer(doc).then((buffer) => { return fs.writeFile(filePath, buffer); }); return { success: true }; } catch (error) { const err = error as Error; return { success: false, error: `添加段落失败: ${err.message}` }; } }
- src/types/index.ts:20-27 (schema)TypeScript interface defining the structure and types for ParagraphOptions used as input to the addParagraph handler.export interface ParagraphOptions { text: string; style?: string; alignment?: 'left' | 'center' | 'right' | 'start' | 'end' | 'both' | 'mediumKashida' | 'distribute' | 'numTab' | 'highKashida' | 'lowKashida' | 'thaiDistribute'; fontSize?: number; bold?: boolean; italic?: boolean; }
- src/mcp-server.ts:69-92 (registration)MCP server registration of the 'add_paragraph' tool, including Zod input schema validation and a wrapper function that invokes the DocumentService handler and formats the MCP response."add_paragraph", { filePath: z.string(), text: z.string(), style: z.string().optional(), alignment: z.enum(['left', 'center', 'right', 'start', 'end', 'both', 'mediumKashida', 'distribute', 'numTab', 'highKashida', 'lowKashida', 'thaiDistribute']).optional(), }, async (params) => { const result = await docService.addParagraph(params.filePath, { text: params.text, style: params.style, alignment: params.alignment, }); return { content: [ { type: "text", text: result.success ? "段落已添加" : result.error!, }, ], isError: !result.success, }; } );
- src/server.ts:39-50 (registration)Tool schema definition and registration in the HTTP server's tools list for 'add_paragraph', used for /tools/list endpoint and dispatched in the switch statement.name: 'add_paragraph', description: '向文档添加段落', parameters: { properties: { filePath: { type: 'string', description: '文档路径' }, text: { type: 'string', description: '段落文本' }, style: { type: 'string', description: '段落样式' }, alignment: { type: 'string', description: '对齐方式' }, }, required: ['filePath', 'text'], type: 'object', },
- src/server.ts:133-139 (registration)Dispatch handler in the HTTP server's /tools/call endpoint that routes 'add_paragraph' calls to the DocumentService.addParagraph method.case 'add_paragraph': result = await docService.addParagraph(parameters.filePath, { text: parameters.text, style: parameters.style, alignment: parameters.alignment, }); break;