L

Linear模型上下文协议

@packetnomad/linear-mcp
0 Stars 42 次浏览 packetnomad 更新于 2026-08-23

通过标准化的模型上下文协议接口,提供对Linear问题跟踪系统的访问,允许用户通过自然语言创建、更新、搜索和管理问题、项目和评论。

该服务暂未提供标准配置,请参考 README 手动接入

服务介绍

Linear MCP 服务器

这是一个实现了模型上下文协议 (MCP) 的服务器,通过标准化接口提供对 Linear 问题跟踪系统的访问。

功能

  • 支持标签的新问题和子问题创建
  • 获取 Linear 项目的列表
  • 获取项目更新
  • 创建带有健康状态的新项目更新
  • 使用全字段修改更新现有问题
  • 带验证的问题删除
  • 使用 'me' 关键字自我分配问题
  • 利用 Linear 强大的过滤功能进行高级搜索
  • 按周期(当前、下一个、上一个或特定 UUID 或编号的周期)筛选问题
  • 支持 Markdown 的问题评论添加
  • 通过 ID 或键查询 Linear 问题,并可选择关联关系
  • 使用增强元数据的自定义查询搜索问题
  • 使用 Linear 官方 SDK 进行类型安全操作
  • 全面的错误处理
  • 速率限制处理
  • 清洁的数据转换
  • 带有团队继承的父子关系追踪
  • 标签管理和同步

前提条件

  • Bun 运行时 (v1.0.0 或更高版本)
  • 具备 API 访问权限的 Linear 账户

环境变量

LINEAR_API_KEY=your_api_key  # Your Linear API token

安装与设置

1. 克隆仓库:

git clone [repository-url]
cd linear-mcp

2. 安装依赖并构建:

bun install
bun run build

3. 配置 MCP 服务器:

编辑相应的配置文件:

macOS:

  • Cline: ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
  • Claude Desktop: ~/Library/Application Support/Claude/claude_desktop_config.json

Windows:

  • Cline: %APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json
  • Claude Desktop: %APPDATA%\Claude Desktop\claude_desktop_config.json

Linux:

  • Cline: ~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
  • Claude Desktop: 遗憾的是,尚不存在

mcpServers 对象下添加如下配置:

{
  "mcpServers": {
    "linear": {
      "command": "node",
      "args": ["/absolute/path/to/linear-mcp/build/index.js"],
      "env": {
        "LINEAR_API_KEY": "your_api_key"
      }
    }
  }
}

4. 重启 MCP 服务器。

在 Cline 的 MCP 设置中,重启 MCP 服务器。重新启动 Claude Desktop 以加载新的 MCP 服务器。

开发

运行开发服务器:

bun run dev

构建项目:

bun run build

可用的 MCP 工具

有关所有工具的详细使用示例,请参阅 USAGE.md

create_issue

创建一个新的 Linear 问题或子问题。

输入模式:

{
  "teamId": "string",     
  "title": "string",      
  "description": "string",
  "parentId": "string",   
  "status": "string",
  "priority": "number",   
  "assigneeId": "string | 'me'",
  "labelIds": ["string"]  
}

update_issue

更新现有的 Linear 问题。

输入模式:

{
  "issueId": "string",    
  "title": "string",      
  "description": "string",
  "status": "string",     
  "priority": "number",   
  "assigneeId": "string | 'me'",
  "labelIds": ["string"],
  "cycleId": "string"
}

get_issue

获取特定 Linear 问题的详细信息,可选相关联的关系。

输入模式:

{
  "issueId": "string",
  "includeRelationships": "boolean"  
}

search_issues

使用查询字符串和高级过滤器搜索 Linear 问题。支持 Linear 强大的过滤能力。

输入模式:

{
  "query": "string",
  "includeRelationships": "boolean",
  "filter": {
    "title": { "contains": "string", "eq": "string", ... },
    "description": { "contains": "string", "eq": "string", ... },
    "priority": { "gte": "number", "lt": "number", ... },
    "estimate": { "eq": "number", "in": ["number"], ... },
    "dueDate": { "lt": "string", "gt": "string", ... },
    "createdAt": { "gt": "P2W", "lt": "2024-01-01", ... },
    "updatedAt": { "gt": "P1M", ... },
    "completedAt": { "null": true, ... },
    "assignee": { "id": { "eq": "string" }, "name": { "contains": "string" } },
    "creator": { "id": { "eq": "string" }, "name": { "contains": "string" } },
    "team": { "id": { "eq": "string" }, "key": { "eq": "string" } },
    "state": { "type": { "eq": "started" }, "name": { "eq": "string" } },
    "labels": { "name": { "in": ["string"] }, "every": { "name": { "eq": "string" } } },
    "project": { "id": { "eq": "string" }, "name": { "contains": "string" } },
    "and": [{ /* filters */ }],
    "or": [{ /* filters */ }],
    "assignedTo": "string | 'me'",
    "createdBy": "string | 'me'"
  },
  "projectId": "string",
  "projectName": "string"
}

支持的比较运算符:

  • 字符串字段:eq, neq, in, nin, contains, startsWith, endsWith(以及不区分大小写的变体)
  • 数字字段:eq, neq, lt, lte, gt, gte, in, nin
  • 日期字段:eq, neq, lt, lte, gt, gte(支持 ISO 8601 时间间隔)

get_teams

获取 Linear 团队列表,并可选地按名称/键过滤。

输入模式:

{
  "nameFilter": "string"  
}

delete_issue

删除一个现有的 Linear 问题。

输入模式:

{
  "issueId": "string"
}

create_comment

在一个 Linear 问题上创建新的评论。

输入模式:

{
  "issueId": "string",
  "body": "string"
}

get_projects

获取 Linear 项目列表,并可选地按名称过滤和分页。

输入模式:

{
  "nameFilter": "string",
  "includeArchived": "boolean",
  "first": "number",
  "after": "string"
}

get_project_updates

根据给定的项目 ID 获取项目更新,并可选地使用过滤参数。

输入模式:

{
  "projectId": "string",
  "includeArchived": "boolean",
  "first": "number",
  "after": "string",
  "createdAfter": "string",
  "createdBefore": "string",
  "userId": "string | 'me'",
  "health": "string"
}

create_project_update

为 Linear 项目创建一个新的更新。

输入模式:

{
  "projectId": "string",
  "body": "string",
  "health": "onTrack | atRisk | offTrack",
  "isDiffHidden": "boolean"
}

技术细节

  • 使用严格模式的 TypeScript 构建
  • 使用 Linear 的官方 SDK (@linear/sdk)
  • 使用 MCP SDK (@modelcontextprotocol/sdk 1.4.0)
  • 通过 API 令牌进行身份验证
  • 全面的错误处理
  • 考虑了速率限制
  • 使用 Bun 运行时以提高性能
  • 全程使用 ESM 模块
  • 使用 Vite 构建系统
  • 类型安全的操作
  • 数据清理功能:
    • 问题提及提取(ABC-123 格式)
    • 用户提及提取(@用户名格式)
    • Markdown 内容清理
    • 针对 AI 上下文的内容优化
  • 自动分配支持:
    • 自动解析当前用户
    • 在创建/更新操作中支持 'me' 关键词
    • 高效的用户 ID 缓存
  • 高级搜索功能:
    • 使用 Linear 的 API 进行全面过滤
    • 支持所有字段比较器
    • 关系过滤
    • 逻辑运算符(and, or)
    • 相对日期过滤
    • 按分配者/创建者(包括自己)过滤
    • 支持特定用户 ID
    • 按 ID 或名称过滤项目
    • 高效查询优化
  • 项目管理功能:
    • 带有过滤和分页的项目列表
    • 创建带有健康状态跟踪的项目更新
    • 带有过滤选项的项目更新检索

错误处理

服务器实现了全面的错误处理策略:

  • 网络错误检测并提供适当的提示信息
  • HTTP 状态码处理
  • 详细错误消息,附带状态码
  • 将错误详情记录到控制台
  • 对所有参数进行输入验证
  • 标签验证和同步
  • 通过 MCP 协议安全传播错误
  • 检测并处理速率限制
  • 身份验证错误处理
  • 无效查询处理
  • 子问题的团队继承验证
  • 用户解析验证
  • 搜索过滤验证

许可证

本项目采用 MIT 许可证 - 请参阅 LICENCE 文件以获取详细信息。

相关 MCP 服务