Skip to main content
Glama

平面 MCP 服务器

铁匠徽章

一个模型上下文协议 (MCP) 服务器,使 LLM 能够与Plane.so交互,从而允许他们通过 Plane 的 API 管理项目和问题。使用此服务器,像 Claude 这样的 LLM 可以直接与您的项目管理工作流交互,同时保持用户控制权和安全性。

特征

  • 列出 Plane 工作区中的所有项目

  • 获取有关特定项目的详细信息

  • 创建具有可自定义属性的新问题

  • 列出并过滤项目中的问题

  • 获取有关特定问题的详细信息

  • 使用新信息更新现有问题

Related MCP server: Plane MCP Server

先决条件

  • Node.js 22.x 或更高版本

  • Plane.so API 密钥

  • Plane.so 工作区

安装

选项 1:使用 Smithery

最快的入门方式是使用 Smithery 直接安装服务器:

# Install to Claude for Desktop
npx -y @smithery/cli install @kelvin6365/plane-mcp-server --client claude

此命令将自动设置 Plane MCP 服务器,以便与 Claude 配合使用。安装完成后,您需要通过 Claude 设置,使用您的 Plane API 密钥和工作区 slug 配置服务器。

有效的客户端选项有:claude、cline、windsurf、roo-cline、witsy、enconvo、cursor

使用 Cursor 安装的示例:

npx -y @smithery/cli install @kelvin6365/plane-mcp-server --client cursor

选项 2:手动设置

如果您希望手动设置服务器,请按照以下步骤操作:

  1. 克隆此存储库:

git clone https://github.com/kelvin6365/plane-mcp-server.git
cd plane-mcp-server
  1. 安装依赖项:

npm install
  1. 构建服务器:

npm run build

与 Claude 桌面版一起使用

**注意:**如果您使用了上面的选项 1(Smithery),则可以跳过此部分。Smithery 会自动为您配置 MCP 服务器。

  1. 打开您的 Claude for Desktop 配置文件:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

    • Windows: %APPDATA%\Claude\claude_desktop_config.json

  2. 添加 Plane MCP 服务器配置:

{
  "mcpServers": {
    "plane": {
      "command": "node",
      "args": ["path/to/plane-mcp-server/build/index.js"],
      "env": {
        "PLANE_API_KEY": "your_plane_api_key_here",
        "PLANE_WORKSPACE_SLUG": "your_workspace_slug_here"
      }
    }
  }
}
  1. 重启 Claude 桌面版

可用工具

**注意:**工具名称使用连字符(例如list-projects ),而不是下划线。服务器会自动将下划线转换为连字符以保持兼容性。

列出项目

列出 Plane 工作区中的所有项目。

参数:无

例子:

{}

获取项目

获取有关特定项目的详细信息。

参数:

  • project_id :要检索的项目的 ID

例子:

{
  "project_id": "01abc123-4567-89de-0123-456789abcdef"
}

创建问题

在指定项目中创建新问题。

参数:

  • project_id :应创建问题的项目的 ID

  • name :问题标题

  • description_html :问题的 HTML 描述(Plane API 所需)

  • priority (可选):问题的优先级(“紧急”,“高”,“中”,“低”,“无”)

  • state_id (可选):此问题的状态 ID

  • assignees (可选):分配给此问题的用户 ID 数组

注意: assignees参数必须是用户 ID 字符串数组。常见错误包括提供字典/对象而不是数组,或者意外地将整个问题数据嵌套在assignees 字段中。服务器会尝试处理这些情况,但最好使用正确的格式。

例子:

{
  "project_id": "01abc123-4567-89de-0123-456789abcdef",
  "name": "Implement new feature",
  "description_html": "<p>We need to implement the new reporting feature</p>",
  "priority": "high",
  "assignees": ["user-id-1", "user-id-2"]
}

列出问题

列出指定项目的问题,并带有可选的过滤功能。

参数:

  • project_id :获取问题的项目的 ID

  • state_id (可选):按州 ID 过滤

  • priority (可选):按优先级过滤

  • assignee_id (可选):按受让人ID过滤

  • limit (可选):返回的最大问题数(默认值:50)

例子:

{
  "project_id": "01abc123-4567-89de-0123-456789abcdef",
  "priority": "high",
  "limit": 10
}

获取问题

获取有关特定问题的详细信息。

参数:

  • project_id :包含该问题的项目的 ID

  • issue_id :要检索的问题的 ID

例子:

{
  "project_id": "01abc123-4567-89de-0123-456789abcdef",
  "issue_id": "01def456-7890-12gh-3456-789ijklmnopq"
}

更新问题

更新项目中的现有问题。

参数:

  • project_id :包含该问题的项目的 ID

  • issue_id :要更新的问题的 ID

  • name (可选):问题的更新标题

  • description_html (可选):问题的 HTML 描述(Plane API 要求)

  • priority (可选):更新问题的优先级

  • state_id (可选):问题的更新状态 ID

  • assignees (可选):更新分配给此问题的用户 ID 数组

注意: assignees参数必须是用户 ID 字符串数组,遵循与 create-issue 工具相同的格式指南。

例子:

{
  "project_id": "01abc123-4567-89de-0123-456789abcdef",
  "issue_id": "01def456-7890-12gh-3456-789ijklmnopq",
  "priority": "urgent",
  "description_html": "<p>Updated description with <strong>more details</strong></p>"
}

发展

  1. 安装开发依赖项:

npm install --save-dev typescript @types/node
  1. 以开发模式启动服务器:

npm run dev

测试

您可以使用 MCP 检查器测试服务器:

npx @modelcontextprotocol/inspector node dist/index.js

示例

设置 Plane MCP 服务器后,您可以尝试与 Claude 进行以下一些示例交互:

  1. “你能列出我的 Plane 工作区中的所有项目吗?”

  2. “请在营销项目中创建一个名为‘更新社交媒体策略’的新高优先级问题”

  3. “开发项目中所有高优先级问题是什么?”

  4. “更新 QA 项目中的问题 #123,将其优先级更改为紧急”

在创建或修改任何问题之前,Claude 将使用适当的工具与 Plane 进行交互,同时征求您的批准。

安全注意事项

  • API 密钥需要适当的 Plane 权限才能运行

  • 所有修改数据的操作都需要用户明确批准

  • 环境变量应得到妥善保护

  • API 密钥永远不应提交到版本控制

贡献

  1. 分叉存储库

  2. 创建你的功能分支( git checkout -b feature/amazing-feature )

  3. 提交您的更改( git commit -m 'Add some amazing feature' )

  4. 推送到分支( git push origin feature/amazing-feature )

  5. 打开拉取请求

执照

该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅 LICENSE 文件。

支持

如果您遇到任何问题或有疑问:

  1. 查看 GitHub 问题部分

  2. 请参阅modelcontextprotocol.io上的 MCP 文档

  3. 开启新问题并附上详细的复现步骤

星史

星空历史图

Available Tools

6 tools
create-issueC

Create a new issue in a project

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesID of the project where the issue should be created
nameYesTitle of the issue
description_htmlNoHTML description of the issue (required by Plane API)
priorityNoPriority of the issue (urgent, high, medium, low, none)
state_idNoID of the state for this issue (optional)
assigneesNoArray of user IDs to assign to this issue (optional)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states 'Create' which implies a write operation, but doesn't mention permissions, side effects, error handling, or response format. This is inadequate for a mutation tool with zero annotation coverage.

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, efficient sentence with no wasted words. It's appropriately sized and front-loaded with the core action, making it easy to parse quickly.

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 creation tool with 6 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain what happens after creation, error conditions, or provide enough context for safe usage despite the comprehensive schema.

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%, so the schema fully documents all 6 parameters. The description adds no additional parameter information beyond what's in the schema, maintaining the baseline score for high schema coverage.

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 verb ('Create') and resource ('new issue in a project'), making the purpose unambiguous. However, it doesn't differentiate from sibling tools like 'update-issue' or specify what distinguishes creation from other operations.

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 'list-issues', nor does it mention prerequisites or context for creation. It's a basic statement without usage context.

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

get-issueC

Get detailed information about a specific issue

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesID of the project containing the issue
issue_idYesID of the issue to retrieve

TDQS

C2.9/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 burden. It states 'Get detailed information,' implying a read-only operation, but does not disclose behavioral traits such as authentication needs, rate limits, error conditions, or what 'detailed information' includes (e.g., fields, format). This is inadequate for a tool with no annotation coverage.

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, efficient sentence with no wasted words. It is front-loaded with the core purpose, making it easy to parse quickly, though it lacks depth due to its brevity.

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 annotations and no output schema, the description is incomplete. It does not explain what 'detailed information' entails, potential return values, or error handling. For a read operation with rich sibling tools, more context is needed to guide the agent effectively.

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 clear descriptions for 'project_id' and 'issue_id' in the input schema. The description adds no additional meaning beyond the schema, such as parameter interactions or examples. Baseline 3 is appropriate when the schema does the heavy lifting.

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 verb ('Get') and resource ('detailed information about a specific issue'), making the purpose understandable. However, it does not explicitly differentiate from sibling tools like 'get-intake-issue' or 'get-issue-activity', which also retrieve issue-related information, leaving some ambiguity about scope.

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. With many sibling tools like 'list-issues' for multiple issues or 'get-intake-issue' for specific types, there is no indication of context, prerequisites, or exclusions, leaving the agent to infer usage.

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-issuesC

List issues from a project

ParametersJSON 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)

TDQS

C2.7/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 burden. It states 'List issues' but doesn't disclose behavioral traits like pagination (implied by 'limit'), default sorting, rate limits, authentication needs, or error handling. This leaves significant gaps for an agent to understand how the tool behaves.

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, efficient sentence with zero waste. It's front-loaded and appropriately sized for a basic listing tool, making it easy to parse quickly.

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 annotations and no output schema, the description is incomplete. It doesn't explain return values (e.g., issue format), pagination behavior, or error cases. For a tool with 5 parameters and no structured behavioral hints, this leaves the agent under-informed about critical usage aspects.

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%, so the schema fully documents all 5 parameters. The description adds no meaning beyond the schema, such as explaining how filters combine or the format of returned issues. Baseline 3 is appropriate since the schema does the heavy lifting.

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

Purpose3/5

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

The description 'List issues from a project' clearly states the verb ('List') and resource ('issues'), but it's vague about scope (e.g., all issues vs. filtered) and doesn't distinguish from siblings like 'get-issue' (single issue) or 'list-projects' (different resource). It's functional but lacks specificity.

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. For example, it doesn't mention using 'get-issue' for a single issue or 'list-projects' to find project IDs first. The description implies usage for listing issues but offers no context on prerequisites or exclusions.

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-issueC

Update an existing issue in a project, delete just update the issue title with 'delete' or 'remove'

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesID of the project containing the issue
issue_idYesID of the issue to update
nameNoUpdated title of the issue (optional)
description_htmlNoHTML description of the issue (required by Plane API)
priorityNoUpdated priority of the issue (optional)
state_idNoUpdated state ID of the issue (optional)
assigneesNoUpdated array of user IDs to assign to this issue (optional)

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but is inadequate. It mentions updating and a deletion method, but doesn't disclose critical behavioral traits like required permissions, whether updates are reversible, rate limits, or what happens to unspecified fields. The deletion note is vague and doesn't explain if it's a standard feature or workaround.

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 concise with two clauses, but the second clause about deletion is poorly integrated and confusing, reducing clarity. It's front-loaded with the main purpose but the additional note doesn't earn its place effectively, making the structure somewhat disjointed.

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 of a mutation tool with 7 parameters, no annotations, and no output schema, the description is incomplete. It lacks details on behavior, error handling, return values, and how it differs from siblings. The deletion note adds confusion rather than completeness, failing to provide adequate context for safe and effective 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%, so the schema fully documents all 7 parameters. The description adds no meaningful parameter semantics beyond what's in the schema, such as explaining interactions between fields or special cases. It mentions 'delete' or 'remove' for the title but doesn't tie this to the 'name' parameter clearly.

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 verb ('Update') and resource ('existing issue in a project'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'create-issue' or 'get-issue' beyond the update action, and the second part about deleting with 'delete' or 'remove' is confusing rather than clarifying.

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 'create-issue' or 'get-issue'. It mentions a deletion method but doesn't clarify if this is the primary deletion mechanism or when to use it over other tools, offering minimal usage context.

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.

  1. 6 tool updates
    • First observedcreate-issue
    • First observedget-issue
    • First observedget-project
    • First observedlist-issues
    • First observedlist-projects
    • First observedupdate-issue

TDQS

B3.4/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no ambiguity: create-issue, get-issue, update-issue, and list-issues handle issues, while get-project and list-projects handle projects. The descriptions reinforce this separation, making misselection unlikely.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with hyphen separation (e.g., create-issue, list-projects). This predictable naming scheme enhances readability and usability across the tool set.

Tool Count5/5

With 6 tools, the server is well-scoped for managing issues and projects in a workspace. Each tool earns its place by covering essential CRUD operations without being overly sparse or bloated.

Completeness4/5

The tool set provides strong coverage for issues (create, get, list, update) and projects (get, list), but lacks explicit create-project, update-project, and delete operations. Agents can work around this with the update-issue workaround for deletion, but minor gaps exist.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    A Model Context Protocol server that enables large language models to interact with Linear's issue tracking system, allowing management of issues, projects, teams, and other Linear resources.
    19
    35 npm
    1
    MIT
  • 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.
    5
    46
    121 npm
    336
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    A Model Context Protocol (MCP) server that enables LLMs to interact with Plane.so, allowing them to manage projects and issues through Plane's API. Using this server, LLMs like Claude can directly interact with your project management workflows while maintaining user control and security.
    76
    10 npm
    1
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    An MCP server that enables LLMs to fully manage a Plane workspace, including projects, work items, states, labels, cycles, modules, comments, and members.
    38
    MIT