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