list-issues
Retrieve and filter project issues from Plane.so by project ID, with options to sort by state, priority, assignee, and limit results.
Instructions
List issues from a project
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ID of the project to get issues from | |
| state_id | No | Filter by state ID (optional) | |
| priority | No | Filter by priority (optional) | |
| assignee_id | No | Filter by assignee ID (optional) | |
| limit | No | Maximum number of issues to return (default: 50) |
Implementation Reference
- src/index.ts:345-366 (handler)The switch case handler for executing the 'list-issues' tool. It validates the project_id, builds a query string from optional filters (state_id, priority, assignee_id, limit), calls the Plane API endpoint /projects/{project_id}/issues/ with the query, and returns the JSON response.case "list-issues": { if (!args || typeof args.project_id !== "string") { throw new Error("Project ID is required"); } const { project_id, ...queryParams } = args; // Build query string from other parameters const queryString = Object.entries(queryParams) .filter(([_, value]) => value !== undefined) .map(([key, value]) => `${key}=${encodeURIComponent(String(value))}`) .join("&"); const endpoint = `/projects/${project_id}/issues/${ queryString ? `?${queryString}` : "" }`; const issues = await callPlaneAPI(endpoint, "GET"); return { content: [{ type: "text", text: JSON.stringify(issues, null, 2) }], isError: false, }; }
- src/index.ts:95-125 (schema)The Tool object definition for 'list-issues', specifying name, description, and inputSchema with required project_id and optional filters for state, priority, assignee, and limit.const LIST_ISSUES_TOOL: Tool = { name: "list-issues", description: "List issues from a project", inputSchema: { type: "object", properties: { project_id: { type: "string", description: "ID of the project to get issues from", }, state_id: { type: "string", description: "Filter by state ID (optional)", }, priority: { type: "string", description: "Filter by priority (optional)", enum: ["urgent", "high", "medium", "low", "none"], }, assignee_id: { type: "string", description: "Filter by assignee ID (optional)", }, limit: { type: "number", description: "Maximum number of issues to return (default: 50)", }, }, required: ["project_id"], }, };
- src/index.ts:262-271 (registration)Registration of available tools in the ListToolsRequestSchema handler, including the LIST_ISSUES_TOOL in the tools array returned to clients.server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: [ LIST_PROJECTS_TOOL, GET_PROJECT_TOOL, CREATE_ISSUE_TOOL, LIST_ISSUES_TOOL, GET_ISSUE_TOOL, UPDATE_ISSUE_TOOL, ], }));