Skip to main content
Glama
index.ts12.5 kB
import { ToolWithClass } from '../types/mcp.js'; import { ListProjectsTool } from './projects/list.js'; import { CreateProjectTool } from './projects/create.js'; import { UpdateProjectTool } from './projects/update.js'; import { DeleteProjectTool } from './projects/delete.js'; import { ListIssuesTools } from './issues/list.js'; import { CreateIssueTool } from './issues/create.js'; import { GetIssueTool } from './issues/get.js'; import { UpdateIssueTool } from './issues/update.js'; // Export all tools with their classes export const allTools: ToolWithClass[] = [ { name: 'claudeus_plane_projects__list', description: 'Lists all projects in a Plane workspace. If no workspace is specified, lists projects from the default workspace.', status: 'enabled', inputSchema: { type: 'object', properties: { workspace_slug: { type: 'string', description: 'The slug of the workspace to list projects from. If not provided, uses the default workspace.' }, include_archived: { type: 'boolean', description: 'Whether to include archived projects', default: false } } }, class: ListProjectsTool }, { name: 'claudeus_plane_projects__create', description: 'Creates a new project in a workspace. If no workspace is specified, uses the default workspace.', status: 'enabled', inputSchema: { type: 'object', properties: { workspace_slug: { type: 'string', description: 'The slug of the workspace to create the project in. If not provided, uses the default workspace.' }, name: { type: 'string', description: 'The name of the project' }, identifier: { type: 'string', description: 'The unique identifier for the project' }, description: { type: 'string', description: 'A description of the project' } }, required: ['name', 'identifier'] }, class: CreateProjectTool }, { name: 'claudeus_plane_projects__update', description: 'Updates an existing project in a workspace. If no workspace is specified, uses the default workspace.', status: 'enabled', inputSchema: { type: 'object', properties: { workspace_slug: { type: 'string', description: 'The slug of the workspace to update the project in. If not provided, uses the default workspace.' }, project_id: { type: 'string', description: 'The ID of the project to update.' }, name: { type: 'string', description: 'The new name of the project.' }, description: { type: 'string', description: 'The new description of the project.' }, start_date: { type: 'string', format: 'date', description: 'The new start date of the project.' }, end_date: { type: 'string', format: 'date', description: 'The new end date of the project.' }, status: { type: 'string', description: 'The new status of the project.' } }, required: ['project_id'] }, class: UpdateProjectTool }, { name: 'claudeus_plane_projects__delete', description: 'Deletes an existing project in a workspace. If no workspace is specified, uses the default workspace.', status: 'enabled', inputSchema: { type: 'object', properties: { workspace_slug: { type: 'string', description: 'The slug of the workspace to delete the project from. If not provided, uses the default workspace.' }, project_id: { type: 'string', description: 'The ID of the project to delete.' } }, required: ['project_id'] }, class: DeleteProjectTool }, { name: 'claudeus_plane_issues__list', description: 'Lists issues in a Plane project', status: 'enabled', inputSchema: { type: 'object', properties: { workspace_slug: { type: 'string', description: 'The slug of the workspace to list issues from. If not provided, uses the default workspace.' }, project_id: { type: 'string', description: 'The ID of the project to list issues from' }, state: { type: 'string', description: 'Filter issues by state ID' }, priority: { type: 'string', enum: ['urgent', 'high', 'medium', 'low', 'none'], description: 'Filter issues by priority' }, assignee: { type: 'string', description: 'Filter issues by assignee ID' }, label: { type: 'string', description: 'Filter issues by label ID' }, created_by: { type: 'string', description: 'Filter issues by creator ID' }, start_date: { type: 'string', format: 'date', description: 'Filter issues by start date (YYYY-MM-DD)' }, target_date: { type: 'string', format: 'date', description: 'Filter issues by target date (YYYY-MM-DD)' }, subscriber: { type: 'string', description: 'Filter issues by subscriber ID' }, is_draft: { type: 'boolean', description: 'Filter draft issues', default: false }, archived: { type: 'boolean', description: 'Filter archived issues', default: false }, page: { type: 'number', description: 'Page number (1-based)', default: 1 }, page_size: { type: 'number', description: 'Number of items per page', default: 100 } }, required: ['project_id'] }, class: ListIssuesTools }, { name: 'claudeus_plane_issues__create', description: 'Creates a new issue in a Plane project', status: 'enabled', inputSchema: { type: 'object', properties: { workspace_slug: { type: 'string', description: 'The slug of the workspace to create the issue in. If not provided, uses the default workspace.' }, project_id: { type: 'string', description: 'The ID of the project to create the issue in' }, name: { type: 'string', description: 'The name/title of the issue' }, description_html: { type: 'string', description: 'The HTML description of the issue' }, priority: { type: 'string', enum: ['urgent', 'high', 'medium', 'low', 'none'], description: 'The priority of the issue', default: 'none' }, start_date: { type: 'string', format: 'date', description: 'The start date of the issue (YYYY-MM-DD)' }, target_date: { type: 'string', format: 'date', description: 'The target date of the issue (YYYY-MM-DD)' }, estimate_point: { type: 'number', description: 'Story points or time estimate for the issue' }, state: { type: 'string', description: 'The state ID for the issue' }, assignees: { type: 'array', items: { type: 'string' }, description: 'Array of user IDs to assign to the issue' }, labels: { type: 'array', items: { type: 'string' }, description: 'Array of label IDs to apply to the issue' }, parent: { type: 'string', description: 'ID of the parent issue (for sub-issues)' }, is_draft: { type: 'boolean', description: 'Whether this is a draft issue', default: false } }, required: ['project_id', 'name'] }, class: CreateIssueTool }, { name: 'claudeus_plane_issues__get', description: 'Gets a single issue by ID from a Plane project', status: 'enabled', inputSchema: { type: 'object', properties: { workspace_slug: { type: 'string', description: 'The slug of the workspace containing the issue. If not provided, uses the default workspace.' }, project_id: { type: 'string', description: 'The ID of the project containing the issue' }, issue_id: { type: 'string', description: 'The ID of the issue to retrieve' } }, required: ['project_id', 'issue_id'] }, class: GetIssueTool }, { name: 'claudeus_plane_issues__update', description: 'Updates an existing issue in a Plane project', status: 'enabled', inputSchema: { type: 'object', properties: { workspace_slug: { type: 'string', description: 'The slug of the workspace containing the issue. If not provided, uses the default workspace.' }, project_id: { type: 'string', description: 'The ID of the project containing the issue' }, issue_id: { type: 'string', description: 'The ID of the issue to update' }, name: { type: 'string', description: 'The new name/title of the issue' }, description_html: { type: 'string', description: 'The new HTML description of the issue' }, priority: { type: 'string', enum: ['urgent', 'high', 'medium', 'low', 'none'], description: 'The new priority of the issue' }, start_date: { type: 'string', format: 'date', description: 'The new start date of the issue (YYYY-MM-DD)' }, target_date: { type: 'string', format: 'date', description: 'The new target date of the issue (YYYY-MM-DD)' }, estimate_point: { type: 'number', description: 'The new story points or time estimate for the issue' }, state: { type: 'string', description: 'The new state ID for the issue' }, assignees: { type: 'array', items: { type: 'string' }, description: 'New array of user IDs to assign to the issue' }, labels: { type: 'array', items: { type: 'string' }, description: 'New array of label IDs to apply to the issue' }, parent: { type: 'string', description: 'New parent issue ID (for sub-issues)' }, is_draft: { type: 'boolean', description: 'Whether this issue should be marked as draft' }, archived_at: { type: 'string', format: 'date-time', description: 'When to archive the issue (ISO 8601 format)' }, completed_at: { type: 'string', format: 'date-time', description: 'When the issue was completed (ISO 8601 format)' } }, required: ['project_id', 'issue_id'] }, class: UpdateIssueTool } ]; // Define tool capabilities export const toolCapabilities = { // Projects claudeus_plane_projects__list: true, claudeus_plane_projects__get: false, // Coming soon claudeus_plane_projects__create: true, claudeus_plane_projects__update: true, claudeus_plane_projects__delete: true, // Issues claudeus_plane_issues__list: true, claudeus_plane_issues__get: true, claudeus_plane_issues__create: true, claudeus_plane_issues__update: true, claudeus_plane_issues__delete: false, // Coming soon // Cycles (Coming soon) claudeus_plane_cycles__list: false, claudeus_plane_cycles__get: false, claudeus_plane_cycles__create: false, claudeus_plane_cycles__update: false, claudeus_plane_cycles__delete: false, // Modules (Coming soon) claudeus_plane_modules__list: false, claudeus_plane_modules__get: false, claudeus_plane_modules__create: false, claudeus_plane_modules__update: false, claudeus_plane_modules__delete: false };

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/deus-h/claudeus-plane-mcp'

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