esa_list_comments
Retrieve a list of comments for a specific post by specifying the post number, page, and results per page, using the esa MCP Server.
Instructions
Get a list of comments for a post
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number to retrieve | |
| per_page | No | Number of results per page (default: 20, max: 100) | |
| post_number | Yes | Post number to get comments for |
Implementation Reference
- index.ts:525-538 (handler)MCP CallToolRequest handler case for 'esa_list_comments': validates arguments, calls EsaClient.listComments, and returns JSON response.case "esa_list_comments": { const args = request.params.arguments as unknown as ListCommentsArgs; if (!args.post_number) { throw new Error("post_number is required"); } const response = await esaClient.listComments( args.post_number, args.page, args.per_page ); return { content: [{ type: "text", text: JSON.stringify(response) }], }; }
- index.ts:226-249 (schema)Tool definition for 'esa_list_comments' including name, description, and input schema for MCP ListTools response.const listCommentsTool: Tool = { name: "esa_list_comments", description: "Get a list of comments for a post", inputSchema: { type: "object", properties: { post_number: { type: "number", description: "Post number to get comments for", }, page: { type: "number", description: "Page number to retrieve", default: 1, }, per_page: { type: "number", description: "Number of results per page (default: 20, max: 100)", default: 20, }, }, required: ["post_number"], }, };
- index.ts:389-399 (helper)EsaClient method implementing the core logic: constructs ESA API URL for post comments list and fetches data.async listComments(post_number: number, page?: number, per_page?: number): Promise<any> { const params = new URLSearchParams(); if (page) params.append("page", page.toString()); if (per_page) params.append("per_page", per_page.toString()); const url = `${this.baseUrl}/posts/${post_number}/comments${params.toString() ? `?${params}` : ""}`; const response = await fetch(url, { headers: this.headers }); return response.json(); }
- index.ts:49-53 (schema)TypeScript interface defining input arguments for esa_list_comments tool.interface ListCommentsArgs { post_number: number; page?: number; per_page?: number; }
- index.ts:604-619 (registration)Registers esa_list_comments (via listCommentsTool) by including it in the tools list returned for ListToolsRequest.server.setRequestHandler(ListToolsRequestSchema, async () => { console.error("ListToolsRequest received"); return { tools: [ listPostsTool, getPostTool, createPostTool, updatePostTool, listCommentsTool, getCommentTool, createCommentTool, getMembersTool, getMemberTool, ], }; });