GitHub Actions for Plane-MCP

GitHub Actions for Plane-MCP

✈ 飞机适用MCP (Fēijī shìyòng MCP)

Creodot

开发者工具
访问服务器

README

✨ Plane.so MCP 服务器 ✨

CI License: MIT npm version <!-- Replace YOUR_PACKAGE_NAME if published --> Node.js Version <!-- Replace YOUR_PACKAGE_NAME if published --> TypeScript BiomeJS PRs Welcome

一个 模型上下文协议 (MCP) 服务器,充当 Plane.so API 的桥梁。🚀

此服务器允许 MCP 客户端(如 AI 助手或其他工具)通过定义的工具与 Plane.so 资源(最初是 Issues)进行交互。

📚 目录

👤 面向用户

本节为希望安装和运行 Plane.so MCP 服务器以将其与 MCP 客户端(例如,Cursor、Claude App)连接的用户提供信息。

⭐ 可用工具

服务器公开以下工具以与 Plane.so API 交互。 工具名称使用下划线(例如,plane_get_issue)。

plane_get_issue

检索特定 issue 的详细信息。

参数:

  • project_id (字符串,必需): 包含 issue 的项目的 ID。
  • issue_id (字符串,必需): 要检索的 issue 的 ID。

示例:

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

plane_create_issue

在指定的项目中创建一个新的 issue。

参数:

  • project_id (字符串,必需): 应在其中创建 issue 的项目的 ID。
  • name (字符串,必需): issue 的标题。
  • description_html (字符串,可选): issue 的 HTML 描述(Plane API 通常需要此格式)。
  • priority (字符串,可选): issue 的优先级(“urgent”、“high”、“medium”、“low”、“none”)。
  • state_id (字符串,可选): 此 issue 的状态 ID。
  • assignees (字符串数组,可选): 要分配给此 issue 的用户 ID 数组。

示例:

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

plane_update_issue

更新项目中现有的 issue。

参数:

  • project_id (字符串,必需): 包含 issue 的项目的 ID。
  • issue_id (字符串,必需): 要更新的 issue 的 ID。
  • name (字符串,可选): issue 的更新标题。
  • description_html (字符串,可选): issue 的更新 HTML 描述。
  • priority (字符串,可选): issue 的更新优先级。
  • state_id (字符串,可选): issue 的更新状态 ID。
  • assignees (字符串数组,可选): 分配给此 issue 的更新用户 ID 数组。

示例:

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

✅ 先决条件

  • Node.js (建议 v20 或更高版本)
  • npm
  • 一个 Plane.so 帐户和一个 API 密钥 -> 工作区图标(左上角)-> 设置 -> API 令牌 -> 添加 API 令牌
  • Plane.so 工作区 slug -> https://app.plane.so/{workspace_slug}/ (将 {workspace_slug} 替换为您的实际工作区 slug)

🛠️ 安装

npm install

🚀 使用

服务器将启动并侦听其标准输入 (stdin) 上的请求,并将响应发送到其标准输出 (stdout)。 您需要配置您的 MCP 客户端(如 Cursor、Claude App 等)以在需要时启动此服务器进程。

有关模型上下文协议的更多详细信息,请访问 modelcontextprotocol.io

✨ 示例

以下是一些您可以提供给 AI 助手的示例提示(一旦在其中配置了服务器):

  • “获取 WebApp 项目中 issue BUG-123 的详细信息。”
  • “在 API 项目中创建一个新的高优先级 issue,标题为 '重构身份验证模块',描述为 '需要更新 auth 库'。”
  • “更新 Design 项目中的 issue FEAT-45 并将其分配给 user_abc。”

您的助手将使用适当的工具(plane_get_issueplane_create_issueplane_update_issue),并且可能会在进行更改之前要求您确认。

🛡️ 安全注意事项

  • API 密钥安全: 存储在 .env 文件中的 PLANE_API_KEY 授予对您的 Plane.so 工作区的访问权限。 确保此文件安全,并且永远不要将其提交到版本控制。
  • 权限: 确保使用的 API 密钥在 Plane.so 中具有执行工具所需操作的必要权限(例如,读取 issue、创建 issue、更新 issue)。
  • 用户批准: 大多数 MCP 客户端在执行修改数据的操作(如创建或更新 issue)之前,都需要您的明确批准,从而提供安全层。

🧑‍💻 面向开发者

本节适用于希望为项目做出贡献、运行测试或使用开发环境的开发人员。

开发 🧑‍💻

npm run dev

项目结构 📂

该项目遵循领域驱动的组织结构:

src/
├── configs/         # 环境和配置
├── plane-client.js  # API 客户端包装器
├── schemas/         # Zod 验证模式
│   ├── tools.schema.ts    # 通用工具模式和实用程序
│   ├── project.schema.ts  # 项目特定模式
│   └── issue.schema.ts    # Issue 特定模式
├── services/        # API 交互的服务层
│   ├── project.service.ts
│   └── issue.service.ts
├── tools/           # MCP 工具定义和处理程序
│   ├── index.ts           # 工具注册
│   ├── project.tools.ts   # 项目工具定义
│   └── issue.tools.ts     # Issue 工具定义
└── types/           # TypeScript 类型定义

验证和错误处理 ✅

该项目使用 Zod 进行全面验证:

  1. 模式定义:特定于域的模式在 src/schemas/ 中定义
  2. 模式验证validateWithSchema 实用程序确保一致的验证
  3. 错误处理:用于结构化错误报告的自定义 ValidationError

使用验证的示例:

// 在服务方法中
const validData = validateWithSchema(MySchema, inputData);
// validData 现在已正确键入和验证

添加新工具 🔧

要添加新工具:

  1. 在适当的域文件中定义工具接口(例如,src/tools/issue.tools.ts
  2. 在域模式文件中添加验证模式(例如,src/schemas/issue.schema.ts
  3. 在服务文件中实现服务方法(例如,src/services/issue.service.ts
  4. src/tools/index.ts 中注册该工具

测试 🧪

该项目包括多种类型的测试:

单元测试

运行单元测试(快速,无 API 调用):

npm run test:unit

集成测试

这些测试会进行真实的 API 调用,因此需要 API 凭据:

  1. 创建一个包含以下内容的 .env.test 文件:
API_KEY=your_plane_api_key
WORKSPACE_SLUG=your_workspace_slug
  1. 运行集成测试:
npm run test:local
  1. 快速端点检查:
npm run check:local

预提交钩子

预提交钩子仅运行代码检查和格式化,不运行测试。 这确保:

  • 更快的提交
  • 开发期间无需 API 调用
  • 常规开发期间无需 API 凭据

当您想手动运行测试时:

# 仅单元测试
npm run test:unit

# 包括集成的所有测试(需要 API 凭据)
npm test

代码检查和格式化 ✨

使用 Biome 检查代码检查和格式化错误:

npm run lint
npm run format:check

自动应用格式化和代码检查修复:

npm run format

(注意:格式化也会通过 Husky 和 lint-staged 在提交时自动应用!)

🙌 贡献

欢迎贡献! 请参阅 CONTRIBUTING.md 了解有关如何贡献、报告错误或建议功能的详细信息。

🤝 行为准则

我们致力于提供一个热情和包容的环境。 请查看我们的 CODE_OF_CONDUCT.md


📜 许可证

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

推荐服务器

Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
MCP Package Docs Server

MCP Package Docs Server

促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。

精选
本地
TypeScript
Claude Code MCP

Claude Code MCP

一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。

精选
本地
JavaScript
@kazuph/mcp-taskmanager

@kazuph/mcp-taskmanager

用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。

精选
本地
JavaScript
mermaid-mcp-server

mermaid-mcp-server

一个模型上下文协议 (MCP) 服务器,用于将 Mermaid 图表转换为 PNG 图像。

精选
JavaScript
Jira-Context-MCP

Jira-Context-MCP

MCP 服务器向 AI 编码助手(如 Cursor)提供 Jira 工单信息。

精选
TypeScript
Linear MCP Server

Linear MCP Server

一个模型上下文协议(Model Context Protocol)服务器,它与 Linear 的问题跟踪系统集成,允许大型语言模型(LLM)通过自然语言交互来创建、更新、搜索和评论 Linear 问题。

精选
JavaScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Curri MCP Server

Curri MCP Server

通过管理文本笔记、提供笔记创建工具以及使用结构化提示生成摘要,从而实现与 Curri API 的交互。

官方
本地
JavaScript