Skip to main content
Glama

add_paragraph

Insert formatted text paragraphs into Word documents by specifying file path, content, and styling options like alignment.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
filePathYes
textYes
styleNo
alignmentNo

Implementation Reference

  • 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}` };
      }
    }
  • 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;
    }
  • 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;

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/puchunjie/doc-tools-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server