Skip to main content
Glama

create-comment

Add comments to Notion pages to provide feedback, ask questions, or create threaded discussions within your workspace.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
page_idYesThe ID of the page to comment on
textYesThe comment text content
discussion_idNoOptional discussion ID for threaded comments

Implementation Reference

  • The main handler function for the MCP 'create-comment' tool. Formats user inputs into Notion API payload and delegates to notionService.createComment, handling response and errors appropriately.
    async ({ page_id, text, discussion_id }) => { try { const result = await this.notionService.createComment({ parent: { page_id: page_id, }, rich_text: [ { type: "text", text: { content: text, }, }, ], discussion_id, }); return { content: [ { type: "text", text: JSON.stringify(result, null, 2), }, ], }; } catch (error) { console.error("Error in create-comment tool:", error); return { content: [ { type: "text", text: `Error: Failed to create comment - ${ (error as Error).message }`, }, ], isError: true, }; } }
  • Input schema (Zod) for the 'create-comment' tool, validating page_id, text, and optional discussion_id.
    { page_id: z.string().describe("The ID of the page to comment on"), text: z.string().describe("The comment text content"), discussion_id: z .string() .optional() .describe("Optional discussion ID for threaded comments"), },
  • Registers the 'create-comment' tool with the MCP server inside the registerCommentTools method, providing name, input schema, and handler.
    this.server.tool( "create-comment", { page_id: z.string().describe("The ID of the page to comment on"), text: z.string().describe("The comment text content"), discussion_id: z .string() .optional() .describe("Optional discussion ID for threaded comments"), }, async ({ page_id, text, discussion_id }) => { try { const result = await this.notionService.createComment({ parent: { page_id: page_id, }, rich_text: [ { type: "text", text: { content: text, }, }, ], discussion_id, }); return { content: [ { type: "text", text: JSON.stringify(result, null, 2), }, ], }; } catch (error) { console.error("Error in create-comment tool:", error); return { content: [ { type: "text", text: `Error: Failed to create comment - ${ (error as Error).message }`, }, ], isError: true, }; } } );
  • Helper method in NotionService that performs the actual Notion API call to create a comment using the SDK client.
    async createComment(params: CreateComment) { try { return await this.client.comments.create(params); } catch (error) { this.handleError(error); } }
  • Detailed Zod schema and TypeScript type for Notion's CreateComment API parameters, used internally by the handler.
    export const CreateCommentSchema = z.object({ parent: z.object({ page_id: z.string(), }), rich_text: z.array( z.object({ type: z.literal("text"), text: z.object({ content: z.string(), link: z .object({ url: z.string(), }) .optional(), }), annotations: z .object({ bold: z.boolean().optional(), italic: z.boolean().optional(), strikethrough: z.boolean().optional(), underline: z.boolean().optional(), code: z.boolean().optional(), color: z .enum([ "default", "gray", "brown", "orange", "yellow", "green", "blue", "purple", "pink", "red", ]) .optional(), }) .optional(), }) ), discussion_id: z.string().optional(), });

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/ramidecodes/mcp-server-notion'

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