Linear模型上下文协议
通过标准化的模型上下文协议接口,提供对Linear问题跟踪系统的访问,允许用户通过自然语言创建、更新、搜索和管理问题、项目和评论。
服务介绍
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 文件以获取详细信息。