Skip to main content
Glama

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
NameRequiredDescriptionDefault
project_idYesID of the project to get issues from
state_idNoFilter by state ID (optional)
priorityNoFilter by priority (optional)
assignee_idNoFilter by assignee ID (optional)
limitNoMaximum number of issues to return (default: 50)

Implementation Reference

  • 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, }; }
  • 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, ], }));

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/kelvin6365/plane-mcp-server'

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