Skip to main content
Glama

โœจ Plane.so MCP Server โœจ

CI License: MIT npm version Node.js Version TypeScript BiomeJS PRs Welcome

A Model Context Protocol (MCP) server acting as a bridge to the Plane.so API. ๐Ÿš€

This server allows MCP clients (like AI assistants or other tools) to interact with Plane.so resources (initially Issues) through defined tools.

๐Ÿ“š Table of Contents

Related MCP server: Plane MCP

๐Ÿ‘ค For Users

This section provides information for users who want to install and run the Plane.so MCP server to connect it with their MCP client (e.g., Cursor, Claude App).

โญ Available Tools

The server exposes the following tools to interact with the Plane.so API. Tool names use underscores (e.g., plane_get_issue).

plane_get_issue

Retrieves details of a specific issue.

Parameters:

  • project_id (string, required): ID of the project containing the issue.

  • issue_id (string, required): ID of the issue to retrieve.

Example:

{
  "project_id": "your_project_id_here",
  "issue_id": "your_issue_id_here"
}

plane_create_issue

Creates a new issue in a specified project.

Parameters:

  • project_id (string, required): ID of the project where the issue should be created.

  • name (string, required): Title of the issue.

  • description_html (string, optional): HTML description of the issue (Plane API often requires this format).

  • priority (string, optional): Priority of the issue ("urgent", "high", "medium", "low", "none").

  • state_id (string, optional): ID of the state for this issue.

  • assignees (array, optional): Array of user IDs to assign to this issue.

Example:

{
  "project_id": "your_project_id_here",
  "name": "New Feature Request",
  "description_html": "<p>Details about the new feature.</p>",
  "priority": "medium"
}

plane_update_issue

Updates an existing issue in a project.

Parameters:

  • project_id (string, required): ID of the project containing the issue.

  • issue_id (string, required): ID of the issue to update.

  • name (string, optional): Updated title of the issue.

  • description_html (string, optional): Updated HTML description of the issue.

  • priority (string, optional): Updated priority of the issue.

  • state_id (string, optional): Updated state ID of the issue.

  • assignees (array, optional): Updated array of user IDs assigned to this issue.

Example:

{
  "project_id": "your_project_id_here",
  "issue_id": "your_issue_id_here",
  "priority": "high",
  "assignees": ["user_id_1"]
}

โœ… Prerequisites

  • Node.js (v20 or higher recommended)

  • npm

  • A Plane.so account and an API Key -> Workspace Icon (top left) -> Settings -> API Tokens -> Add API Token

  • Plane.so Workspace slug -> https://app.plane.so/{workspace_slug}/ (Replace {workspace_slug} with your actual workspace slug)

๐Ÿ› ๏ธ Installation

npm install

๐Ÿš€ Usage

The server will start and listen for requests on its standard input (stdin) and send responses to its standard output (stdout). You need to configure your MCP client (like Cursor, Claude App, etc.) to launch this server process when needed.

For more details on the Model Context Protocol, visit modelcontextprotocol.io.

โœจ Examples

Here are some example prompts you could give your AI assistant (once the server is configured in it):

  • "Get the details for issue BUG-123 in the WebApp project."

  • "Create a new high-priority issue in the API project titled 'Refactor authentication module' with the description 'Need to update the auth library.'"

  • "Update issue FEAT-45 in the Design project and assign it to user_abc."

Your assistant will use the appropriate tools (plane_get_issue, plane_create_issue, plane_update_issue) and likely ask for your confirmation before making changes.

๐Ÿ›ก๏ธ Security Considerations

  • API Key Security: Your PLANE_API_KEY stored in the .env file grants access to your Plane.so workspace. Keep this file secure and never commit it to version control.

  • Permissions: Ensure the API key used has the necessary permissions within Plane.so to perform the actions required by the tools (e.g., read issues, create issues, update issues).

  • User Approval: Most MCP clients will require your explicit approval before executing actions that modify data (like creating or updating issues), providing a safety layer.


๐Ÿง‘โ€๐Ÿ’ป For Developers

This section is for developers who want to contribute to the project, run tests, or use the development environment.

Development ๐Ÿง‘โ€๐Ÿ’ป

npm run dev

Project Structure ๐Ÿ“‚

The project follows a domain-driven organization:

src/
โ”œโ”€โ”€ configs/         # Environment and configuration
โ”œโ”€โ”€ plane-client.js  # API client wrapper
โ”œโ”€โ”€ schemas/         # Zod validation schemas
โ”‚   โ”œโ”€โ”€ tools.schema.ts    # Common tool schemas and utilities
โ”‚   โ”œโ”€โ”€ project.schema.ts  # Project-specific schemas 
โ”‚   โ””โ”€โ”€ issue.schema.ts    # Issue-specific schemas
โ”œโ”€โ”€ services/        # Service layer for API interactions
โ”‚   โ”œโ”€โ”€ project.service.ts
โ”‚   โ””โ”€โ”€ issue.service.ts
โ”œโ”€โ”€ tools/           # MCP tool definitions and handlers
โ”‚   โ”œโ”€โ”€ index.ts           # Tool registration
โ”‚   โ”œโ”€โ”€ project.tools.ts   # Project tool definitions
โ”‚   โ””โ”€โ”€ issue.tools.ts     # Issue tool definitions
โ””โ”€โ”€ types/           # TypeScript type definitions

Validation and Error Handling โœ…

The project uses Zod for comprehensive validation:

  1. Schema Definition: Domain-specific schemas are defined in src/schemas/

  2. Schema Validation: The validateWithSchema utility ensures consistent validation

  3. Error Handling: Custom ValidationError class for structured error reporting

Example of using validation:

// In a service method
const validData = validateWithSchema(MySchema, inputData);
// validData is now correctly typed and validated

Adding New Tools ๐Ÿ”ง

To add a new tool:

  1. Define the tool interface in the appropriate domain file (e.g., src/tools/issue.tools.ts)

  2. Add validation schemas in the domain schema file (e.g., src/schemas/issue.schema.ts)

  3. Implement the service method in the service file (e.g., src/services/issue.service.ts)

  4. Register the tool in src/tools/index.ts

Testing ๐Ÿงช

The project includes multiple types of tests:

Unit Tests

Run unit tests (fast, no API calls):

npm run test:unit

Integration Tests

These tests make real API calls, so they need API credentials:

  1. Create a .env.test file with:

API_KEY=your_plane_api_key
WORKSPACE_SLUG=your_workspace_slug
  1. Run integration tests:

npm run test:local
  1. Quick endpoint check:

npm run check:local

Pre-commit Hooks

The pre-commit hooks only run linting and formatting, not tests. This ensures:

  • Faster commits

  • No API call requirements during development

  • No need for API credentials during regular development

When you want to run tests manually:

# Unit tests only
npm run test:unit

# All tests including integration (needs API credentials)
npm test

Linting and Formatting โœจ

Check for linting and formatting errors using Biome:

npm run lint
npm run format:check

Apply formatting and lint fixes automatically:

npm run format

(Note: Formatting is also automatically applied on commit via Husky and lint-staged!)

๐Ÿ™Œ Contributing

Contributions are welcome! Please see CONTRIBUTING.md for details on how to contribute, report bugs, or suggest features.

๐Ÿค Code of Conduct

We are committed to providing a welcoming and inclusive environment. Please review our CODE_OF_CONDUCT.md.


๐Ÿ“œ License

This project is licensed under the MIT License - see the LICENSE file for details.

Available Tools

10 tools
create-issueC

Create a new issue

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe ID of the project where the issue will be created
nameYesName of the issue
projectNoThe ID of the project where the issue will be created
descriptionNoDescription of the issue
description_htmlNoHTML description of the issue
priorityNoPriority of the issue (urgent, high, medium, low, none)
stateNoID of the state for this issue
assigneesNoArray of user IDs to assign to this issue
labelsNoArray of label IDs to apply to this issue
parentNoID of the parent issue, if this is a sub-issue
start_dateNoStart date in YYYY-MM-DD format
target_dateNoTarget completion date in YYYY-MM-DD format

TDQS

C2.4/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description bears full responsibility for disclosing behavioral traits. It merely says 'Create a new issue' without revealing side effects, permissions needed, error handling, or what the tool returns, which is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only 4 words, which is under-specified for a tool with 12 parameters and no output schema. It does not earn its place by adding value, and the brevity hinders clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (12 parameters, no output schema, no annotations), the description is woefully incomplete. It fails to address return values, error states, or constraints, leaving critical gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% parameter description coverage, so the baseline is 3. The description adds no additional meaning or context beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Create a new issue' clearly states the verb and resource, and while brief, it correctly indicates the tool's primary action without confusion. It distinguishes from sibling tools like 'create-project' by specifying 'issue'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'update-issue' or 'delete-issue'. There is no mention of preconditions, context, or when-not-to-use, leaving the agent with no decision support.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create-projectB

Create a new project

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the project
identifierYesUnique identifier for the project (e.g., PROJ)
descriptionNoDescription of the project
networkNoProject visibility (0 = Secret, 2 = Public)
emojiNoHTML emoji DEX code without the '&#'
module_viewNoEnable/disable module view for the project
cycle_viewNoEnable/disable cycle view for the project
issue_views_viewNoEnable/disable issue views for the project
page_viewNoEnable/disable page view for the project
inbox_viewNoEnable/disable inbox view for the project
archive_inNoMonths in which to auto-archive issues (0-12)
close_inNoMonths in which to auto-close issues (0-12)
default_assigneeNoUUID of user to auto-assign issues to
project_leadNoUUID of the project lead user

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It only states 'Create a new project' without describing side effects, authorization needs, idempotency, or return behavior, which is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely short (4 words), which is concise but may be too minimal for a tool with 14 parameters. It states the purpose but lacks supporting detail. Score reflects adequate but not optimal conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (14 parameters, no output schema), the description is incomplete. It does not explain what creating a project entails, expected outcomes, or any constraints beyond the schema. More detail is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond the schema; it does not explain parameter relationships or usage context. Therefore, a 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Create a new project' clearly states the action and resource. It distinguishes the tool from siblings like create-issue or delete-project, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. No prerequisites, context, or exclusions are mentioned, leaving the agent without usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete-issueC

Delete an issue

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe ID of the project
issue_idYesThe ID of the issue to delete

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, and the description does not disclose any behavioral traits such as irreversibility, permission requirements, or side effects. It merely states the action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at three words, which is efficient for a straightforward delete action. No unnecessary information is included.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of an output schema and annotations, the description should explain the return behavior or success/failure handling. It does not, leaving the agent without important context for a destructive operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters (project_id and issue_id) have descriptions in the input schema, so the tool description adds no extra meaning. With 100% schema coverage, the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Delete an issue' clearly specifies the action (delete) and resource (issue), distinguishing it from sibling tools like create-issue or get-issue. However, it does not mention the project context, which is required as a parameter.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as update-issue or delete-project. The description lacks any context for selection or exclusion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete-projectC

Delete a project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesID of the project to delete

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It fails to disclose behavioral traits like irreversibility, cascading effects, or permission requirements. The bare statement 'Delete a project' is insufficient for safe invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at four words, which is appropriate for a simple operation. It is front-loaded and avoids unnecessary detail, though it could include a brief behavioral note without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of output schema and annotations, the description is incomplete. It omits critical behavioral context for a destructive operation, such as confirmation prompts or post-deletion effects, which are essential for safe use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the input schema provides a description for the sole parameter. The tool description adds no additional meaning, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (delete) and the resource (project), aligning with the tool name. It distinguishes from sibling tools like delete-issue by specifying 'project'. However, it adds no extra clarity beyond the name, lacking scope or context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool compared to alternatives such as update-project or delete-issue. There is no mention of prerequisites or situations where deletion is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-issueB

Get an issue by its ID

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe ID of the project
issue_idYesThe ID of the issue

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description carries full burden. It only states the action, omitting details like error handling (e.g., behavior if issue not found), rate limits, or authentication needs. Minimal disclosure beyond the basic function.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, front-loaded with the main action and resource. No fluff or redundancy; every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple GET operation with no output schema, the description should at least hint at the return format or behavior on missing IDs. It currently does not, leaving agents uncertain about expected outcomes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (both parameters described by name and type), and the description does not add further meaning beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and resource ('an issue'), and distinguishes it from sibling tools like create-issue or delete-issue by the verb and scope (by ID).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives, no context on prerequisites or limitations. The description simply states what it does without any usage conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-projectB

Get detailed information about a specific project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesID of the project to retrieve

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations supplied, the description carries the full burden of behavioral disclosure. It only states 'Get detailed information,' omitting any details about authentication, rate limits, or what 'detailed' encompasses. For a read operation, it is minimally transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no extraneous words. It is front-loaded and efficient, earning its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple get operation with one parameter and no output schema, the description is adequate but lacks context about the return format or any prerequisites. It does not fully compensate for the absence of annotations or additional behavioral notes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the parameter 'project_id' is adequately described in the schema as 'ID of the project to retrieve.' The description adds no extra meaning beyond that, meeting the baseline for parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves detailed information about a specific project, using a specific verb+resource structure. It successfully distinguishes from sibling tools like create-project, delete-project, and get-issue.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as list-projects or get-issue. There are no exclusions, prerequisites, or context for appropriate use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list-issuesB

List all issues in a project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe ID of the project to list issues from

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description must bear the burden of transparency. It only says 'list all issues' without disclosing pagination, sorting, or any behavioral constraints like read-only nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words, achieving high conciseness while conveying the essential purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description is too minimal. It lacks details like return format, pagination behavior, or any limitations, leaving the agent underinformed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% as the parameter 'project_id' is described inline. The tool description adds no additional meaning beyond the schema, so a baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List', the resource 'issues', and the scope 'in a project'. It is specific and distinct from sibling tools like create-issue or list-projects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list-projectsA

List all projects in the workspace

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description should fully describe behavior. It is minimal, only stating a read operation. It lacks details on pagination, ordering, or whether results are comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at 5 words, with no filler. Every word is informative and necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter list tool, the description is mostly complete. It specifies workspace scope, but could mention if results are limited or paginated. Still adequate for the simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, so schema coverage is 100%. The description does not need to add parameter details, and it appropriately avoids extraneous information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (List), the resource (projects), and the scope (in the workspace). It effectively distinguishes from sibling tools like get-project (single project) and create-project.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives like get-project. Usage is implied but not clarified with when-not or specific contexts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update-issueD

Update an issue

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe ID of the project
issue_idYesThe ID of the issue to update
nameNoUpdated name of the issue
descriptionNoUpdated description of the issue
description_htmlNoUpdated HTML description of the issue
priorityNoUpdated priority of the issue (urgent, high, medium, low, none)
stateNoUpdated ID of the state for this issue
assigneesNoUpdated array of user IDs to assign to this issue
labelsNoUpdated array of label IDs to apply to this issue
parentNoUpdated ID of the parent issue, if this is a sub-issue
start_dateNoUpdated start date in YYYY-MM-DD format
target_dateNoUpdated target completion date in YYYY-MM-DD format

TDQS

D1.7/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must disclose behavioral traits. It does not mention that the tool modifies existing data, requires the issue to exist, or any side effects. This is a critical gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

While extremely short (4 words), it is under-specified rather than concise. It lacks front-loading of key information like what fields can be updated or the effect of the operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 12 parameters, no output schema, and no annotations, the description is woefully incomplete. It should explain return values, required permissions, or behavioral nuances.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the input schema already documents all parameters. The description adds no additional meaning, but the baseline for high coverage is 3. No enhancement is needed for parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Update an issue' is nearly a tautology of the tool name. It distinguishes from siblings only through the verb 'update', but provides no detail on what an issue is or what updating entails.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like create-issue or get-issue. No context on prerequisites, when not to use, or typical workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update-projectC

Update a project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesID of the project to update
nameNoUpdated name of the project
descriptionNoUpdated description of the project
networkNoUpdated project visibility (0 = Secret, 2 = Public)
emojiNoUpdated HTML emoji DEX code without the '&#'
module_viewNoUpdated module view setting
cycle_viewNoUpdated cycle view setting
issue_views_viewNoUpdated issue views setting
page_viewNoUpdated page view setting
inbox_viewNoUpdated inbox view setting
archive_inNoUpdated months for auto-archiving (0-12)
close_inNoUpdated months for auto-closing (0-12)
default_assigneeNoUpdated UUID of default assignee
project_leadNoUpdated UUID of project lead

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full responsibility. It fails to disclose whether updates are partial or full, idempotent, or require specific permissions. The brief description does not compensate for the lack of annotation context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise (four words), but at the cost of omitting useful detail. It is front-loaded but lacks any structural elements to aid quick comprehension. Acceptable for a simple tool but could be improved.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 14 parameters, no output schema, and no annotations, the description does not cover key aspects like update behavior (partial vs full), response format, or error conditions. The tool definition is incomplete for effective agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter having a clear description. The tool description does not add additional parameter information, but the schema already provides sufficient semantics, justifying a baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Update a project' clearly states the verb and resource. It distinguishes from sibling tools like 'update-issue' or 'create-project', but does not add specificity beyond the tool name itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., create-project, delete-project). Lacks prerequisites, context, or exclusions, leaving the agent uninformed about appropriate usage scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 10 tool updatesv0.4.0
    • First observedcreate-issue
    • First observedcreate-project
    • First observeddelete-issue
    • First observeddelete-project
    • First observedget-issue
    • First observedget-project
    • First observedlist-issues
    • First observedlist-projects
    • First observedupdate-issue
    • First observedupdate-project

TDQS

B3.2/5.0
Disambiguation5/5

Each tool clearly targets either an issue or a project with distinct actions. There is no overlap or confusion between tools.

Naming Consistency5/5

All tools follow a consistent hyphen-separated verb-noun pattern (e.g., create-issue, delete-project), making the naming predictable and easy to parse.

Tool Count5/5

10 tools provide full CRUD coverage for both issues and projects. The count is balanced and appropriate for the domain.

Completeness5/5

The toolset covers all basic lifecycle operations (create, read, update, delete, list) for both issues and projects, leaving no obvious gaps for a minimal project management server.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    A Model Context Protocol server that enables AI interfaces to seamlessly interact with Plane's project management system, allowing management of projects, issues, states, and other work items through a standardized API.
    46
    121
    306
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables interaction with self-hosted Plane project management instances using X-API-Key authentication, offering tools for project discovery, issue management, and workflow state operations.
    7
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to interact with Plane project management APIs, offering tools for managing projects, work items, cycles, modules, initiatives, and more through MCP.
    MIT

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

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