get_posts
Retrieve posts from Erick Wendel's contributions with filtering by ID, title, language, or portal, and pagination controls.
Instructions
Get a list of posts with optional filtering and pagination.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Filter posts by ID | |
| title | No | Filter posts by title | |
| language | No | Filter posts by language | |
| portal | No | Filter posts by portal | |
| skip | No | Number of posts to skip | |
| limit | No | Maximum number of posts to return |
Implementation Reference
- src/tools/posts.ts:20-39 (handler)The handler function that executes the get_posts tool logic: fetches posts via API service and returns formatted JSON results as MCP text content.handler: async (params: PostsParams): Promise<McpResponse> => { try { const result = await fetchPosts(params); if (!result.getPosts) { throw new Error('No results returned from API'); } const content: McpTextContent = { type: "text", text: `Posts Results:\n\n${JSON.stringify(result.getPosts, null, 2)}` }; return { content: [content], }; } catch (error) { throw new Error(`Failed to fetch posts: ${error.message}`); } }
- src/tools/posts.ts:10-19 (schema)Tool schema including name, description, and Zod-based input parameters for filtering and pagination.name: TOOL_CONFIG.posts.name, description: TOOL_CONFIG.posts.description, parameters: { id: z.string().optional().describe("Filter posts by ID"), title: z.string().optional().describe("Filter posts by title"), language: z.string().optional().describe("Filter posts by language"), portal: z.string().optional().describe("Filter posts by portal"), skip: z.number().optional().default(0).describe("Number of posts to skip"), limit: z.number().optional().default(10).describe("Maximum number of posts to return"), },
- src/index.ts:28-33 (registration)Registration of the getPostsTool with the MCP server.server.tool( getPostsTool.name, getPostsTool.description, getPostsTool.parameters, getPostsTool.handler );
- src/services/api.ts:157-201 (helper)Helper function that performs the actual GraphQL query to fetch posts from the API./** * Fetches posts with optional filtering and pagination */ export async function fetchPosts(params: { id?: string; title?: string; language?: string; portal?: string; skip?: number; limit?: number; }): Promise<PostsResponse> { const { id, title, language, portal, skip, limit } = params; const languageCode = getLanguageCode(language); return await client.query({ getPosts: { __args: { _id: id, title, language: languageCode, portal, skip, limit, }, totalCount: true, retrieved: true, processedIn: true, posts: { _id: true, title: true, abstract: true, type: true, link: true, additionalLinks: true, portal: { link: true, name: true, }, tags: true, language: true, date: true, }, }, }) as PostsResponse; }
- src/config/api.ts:17-20 (schema)Configuration defining the tool name and description for get_posts.posts: { name: "get_posts", description: "Get a list of posts with optional filtering and pagination." },