适用于Linear.app的企业级MCP服务器,具有企业级弹性、性能优化和清晰架构。
基于cline/linear-mcp构建,增加了10项主要改进和5,116行生产代码。
# 克隆仓库
git clone https://github.com/locomotive-agency/linear-mcp.git
cd linear-mcp
# 安装依赖
npm install
# 构建服务器
npm run build
# 全局安装
npm install -g @locomotive/linear-mcp
# 或在项目中本地安装
npm install @locomotive/linear-mcp
密钥看起来像:lin_api_xxxxxxxxxxxxxxxxxxxxxxxxxxxx
1. 查找您的Claude Code配置文件:
~/.claude.json~/.claude.json%USERPROFILE%\.claude.json2. 添加MCP服务器配置:
{
"mcpServers": {
"linear": {
"command": "node",
"args": ["/绝对路径/to/linear-mcp/build/index.js"],
"env": {
"LINEAR_API_KEY": "lin_api_your_key_here"
}
}
}
}
3. 重启Claude Code
4. 验证是否正常工作:
询问Claude: "列出我的Linear团队"
1. 查找您的Claude Desktop配置:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.config/Claude/claude_desktop_config.json2. 添加MCP服务器配置:
{
"mcpServers": {
"linear": {
"command": "node",
"args": ["/绝对路径/to/linear-mcp/build/index.js"],
"env": {
1. "LINEAR_API_KEY": "lin_api_your_key_here"
}
}
}
}
3. 重启Claude Desktop
4. 验证:
1. 打开Cursor设置:
Cursor → 设置 → MCP文件 → 首选项 → MCP2. 添加服务器配置:
编辑或创建~/.cursor/mcp.json(macOS/Linux)或%APPDATA%\.cursor\mcp.json(Windows):
{
"mcpServers": {
"linear": {
"command": "node",
"args": ["/绝对路径/to/linear-mcp/build/index.js"],
"env": {
"LINEAR_API_KEY": "lin_api_your_key_here"
}
}
}
}
3. 重启Cursor
4. 在Cursor聊天中验证:
询问Cursor: "使用MCP工具列出我的Linear团队"
1. 查找Cline MCP设置:
~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json%APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json2. 添加服务器配置:
{
"mcpServers": {
"linear": {
"command": "node",
"args": ["/绝对路径/to/linear-mcp/build/index.js"],
"env": {
"LINEAR_API_KEY": "lin_api_your_key_here"
},
"disabled": false,
"autoApprove": []
}
}
}
3. 刷新VS Code窗口
4. 验证:
注意:OpenAI不直接支持MCP服务器,但您可以:
选项1:作为本地API使用
选项2:使用Claude Code作为代理
选项3:直接集成(需要开发) 创建围绕此MCP服务器的OpenAI插件/动作包装器。
1. 查找Continue配置:
~/.continue/config.json2. 将MCP服务器添加到工具部分:
{
"tools": [
{
"type": "mcp",
"name": "linear",
"command": "node",
"args": ["/绝对路径/to/linear-mcp/build/index.js"],
"env": {
"LINEAR_API_KEY": "lin_api_your_key_here"
}
}
]
}
3. 重启Continue
1. 创建或编辑Windsurf MCP配置:
~/.windsurf/mcp.json2. 添加配置:
{
"mcpServers": {
"linear": {
"command": "node",
"args": ["/绝对路径/to/linear-mcp/build/index.js"],
"env": {
"LINEAR_API_KEY": "lin_api_your_key_here"
}
}
}
}
3. 重启Windsurf
对于任何兼容MCP的客户端:
配置模板:
{
"mcpServers": {
"linear": {
"command": "node",
"args": ["/绝对路径/to/linear-mcp/build/index.js"],
"env": {
"LINEAR_API_KEY": "lin_api_your_key_here"
}
}
}
}
要求:
npm run build)build/index.js的绝对路径// 使用Claude Code、Claude Desktop或Cursor
"在LOCOMOTIVE团队中创建一个新的Linear问题:
标题:实现用户身份验证
描述:添加Google和GitHub提供商的OAuth 2.0身份验证
优先级:高(2)
估算:5个故事点"
"搜索LOCOMOTIVE团队中的所有‘进行中’问题,并将其更新为‘审核中’"
"创建名为'2025年第四季度功能'的新项目,其中包含这些里程碑:
- Alpha发布(11月1日)
- Beta发布(11月15日)
- 生产(12月1日)
然后为该项目创建5个初始问题。"
// MCP服务器会自动优化相关查询
"获取项目ABC-123的项目详情、所有里程碑和所有问题"
// 这内部使用了查询批处理 - 仅使用1个速率限制槽而不是3个
# 运行所有测试
npm test
# 运行特定测试套件
npm test -- rate-limiter.test.ts
# 在监视模式下运行测试
npm test:watch
# 运行集成测试(需要LINEAR_API_KEY)
npm run test:integration
src/
├── auth/ # 模块化认证
│ ├── types.ts # 认证接口
│ ├── api-key-auth.ts # API密钥实现
│ ├── oauth-auth.ts # OAuth实现
│ └── index.ts # 工厂/适配器
├── core/
│ ├── handlers/ # 带生命周期钩子的领域处理器
│ ├── middleware/ # 速率限制、重试逻辑
│ ├── errors/ # 领域特定错误类型
│ └── types/ # TypeScript定义
├── features/
│ ├── issues/ # 问题管理
│ ├── projects/ # 项目管理
│ ├── teams/ # 团队管理
│ ├── milestones/ # 里程碑管理
│ ├── comments/ # 评论管理
│ └── monitoring/ # 速率限制监控
└── graphql/
├── client.ts # 带批处理的GraphQL客户端
├── queries.ts # 查询定义
└── mutations.ts # 变异定义
工具:linear_get_rate_limit_status
"检查我的Linear API配额状态"
// 返回:
{
"warningLevel": "正常",
"usage": {
"requestsThisHour": 150,
"hourlyUsagePercent": 15.0
},
"quota": {
"remainingHour": 850,
"resetTime": "3245秒后"
}
}
linear_create_issue创建单个问题,支持所有字段(标题、描述、团队、指派人、优先级、估算、项目、自定义显示)。
linear_create_issues批量操作 - 一次API调用创建多个问题。比单独创建快约10倍。
linear_update_issue更新任何问题字段:标题、描述、指派人、优先级、状态、项目或里程碑。
linear_bulk_update_issues批量操作 - 以相同更改更新多个问题。每个问题错误处理高效。
linear_update_issue_milestone将问题分配给里程碑或将里程碑分配移除(传递null/空)。
linear_search_issues使用高级过滤搜索问题:查询文本、团队、指派人、状态、优先级。支持分页。
提示:保持first参数≤20以获得最佳性能。
linear_delete_issue通过标识符(LOC-123)或UUID删除单个问题。
linear_delete_issues批量操作 - 一次性删除多个问题。
linear_link_issues创建问题之间的关系:“阻止”,“相关”或“重复”。
linear_unlink_issues移除问题之间的关系。
linear_get_issue_comments获取问题的所有评论,包括线程回复。支持分页和已归档评论。
linear_create_comment向问题添加评论或创建线程回复。支持Markdown。OAuth应用可以设置自定义显示名称。
linear_create_project_with_issues原子操作 - 创建项目和初始问题在一个事务中。
重要:teamIds是一个数组,不是单个teamId。
linear_get_project获取详细的项目信息,带有富文本描述(documentContent支持)。
linear_search_projects按精确名称匹配搜索项目。
linear_create_project_milestone创建单个里程碑,带有名称、描述、目标日期和排序顺序。
linear_create_project_milestones批量操作 - 一次调用为项目创建多个里程碑。
linear_get_project_milestone获取详细的里程碑信息,包括相关问题。
linear_get_project_milestones列出特定项目的所有里程碑,支持分页。
linear_search_project_milestones使用过滤器搜索里程碑:名称、项目、目标日期。
linear_update_project_milestone更新里程碑属性:名称、描述、目标日期、排序顺序或移动到不同的项目。
linear_delete_project_milestone永久删除里程碑。
linear_get_teams列出所有团队,带有状态、标签和工作流程细节。 最佳实践:在会话开始时调用一次并缓存团队ID。
linear_get_user获取认证用户信息:ID、姓名、电子邮件、可访问团队。 用途:验证认证,获取用于分配的用户ID。