线性mcp-rs
用于Linear的Rust MCP服务器。单个~4MB二进制文件,无运行时依赖关系。
安装
gh release download --repo davidjpnelson/linear-mcp-rs -p install.sh -O- | bash
需要 .下载适用于您的OS/arch的正确二进制文件 ~/.local/bin/linear-mcp.
设置
1.线性API键
在创建个人API密钥 https://linear.app → 设置 → 安全和访问 → 个人API密钥
服务器按顺序检查这些:
LINEAR_API_KEY 环境变量- 带服务名称的macOS钥匙串条目
linear-api-key
选项A--环境变量 (添加到 ~/.zshrc):
export LINEAR_API_KEY="lin_api_your_key_here"
选项B-macOS钥匙扣:
security add-generic-password -s linear-api-key -a "$USER" -w "lin_api_your_key_here"
2.添加到您的编码代理
Claude Code
claude mcp add linear-mcp ~/.local/bin/linear-mcp
然后重新启动Claude Code。
OpenAI Codex CLI
codex mcp add linear-mcp -- ~/.local/bin/linear-mcp
或添加到 ~/.codex/config.toml (使用完整的主路径):
[mcp_servers.linear-mcp]
command = "/Users/YOUR_USER/.local/bin/linear-mcp"
Gemini CLI
gemini mcp add --name linear-mcp -- ~/.local/bin/linear-mcp
或添加到 ~/.gemini/settings.json (使用完整的主路径):
{
"mcpServers": {
"linear-mcp": {
"command": "/Users/YOUR_USER/.local/bin/linear-mcp"
}
}
}
Open Code
添加 ~/.config/opencode/opencode.json (或 opencode.json 在项目根目录中,使用完整的主路径):
{
"mcp": {
"linear-mcp": {
"type": "local",
"command": ["/Users/YOUR_USER/.local/bin/linear-mcp"]
}
}
}
Jules
Jules内置了线性MCP支持,不需要二进制文件。首选 Jules设置→ MCP,输入Linear API键,然后启动会话。
工具
253个工具,具有线性API的全部CRUD覆盖范围。所有人都接受人性化的输入(团队密钥如 ENG、电子邮件、州名称、项目名称、问题标识符),并自动将其解析为ID。
问题
| 工具 | 说明 |
|---|
list_issues | 按团队、受让人、状态、项目、标签、优先级筛选。分页。 |
search_issues | 在标题、描述和评论中进行全文搜索 |
semantic_search | 基于人工智能的跨问题语义搜索 |
get_issue | 按标识符列出的全部细节(例如。 ENG-123)或UUID。包括评论、标签、关系。 |
my_issues | 按状态分组分配的问题 |
create_issue | 使用团队密钥、受让人电子邮件、州名称、标签、优先级创建问题 |
create_issue_from_template | 从保存的模板创建问题 |
batch_create_issues | 在团队中同时创建多个问题 |
update_issue | 更新任何字段。使用 "none" 清除受让人/到期日期。 |
bulk_update_issues | 同时更新多个问题(状态、优先级、受让人、标签) |
archive_issue | 存档问题 |
unarchive_issue | 恢复已存档的问题 |
add_issue_label | 为问题添加标签 |
remove_issue_label | 从问题中删除标签 |
get_issue_priority_values | 列出所有优先级及其值 |
search_issue_figma_file_key | 查找与Figma文件链接的问题 |
get_issue_filter_suggestion | AI为问题查询建议了过滤器 |
问题关系
| 工具 | 说明 |
|---|
list_issue_relations | 列出问题的关系 |
get_issue_relation | 获取特定问题关系 |
create_issue_relation | 在问题(相关、块、重复)之间创建关系 |
update_issue_relation | 更新关系类型 |
delete_issue_relation | 删除关系 |
分诊
| 工具 | 说明 |
|---|
list_triage_issues | 列出团队分诊状态中的问题 |
triage_issue | 将分流问题移动到目标工作流状态 |
list_triage_responsibilities | 列出分流责任分配 |
get_triage_responsibility | 按ID获得分流责任 |
create_triage_responsibility | 创建分流责任分配 |
update_triage_responsibility | 更新分流责任 |
delete_triage_responsibility | 删除分流责任 |
工作流状态
| 工具 | 说明 |
|---|
list_states | 按团队分组的工作流状态 |
get_workflow_state | 按ID获取工作流状态 |
create_workflow_state | 为团队创建新的工作流状态 |
update_workflow_state | 更新工作流状态的名称、颜色或位置 |
archive_workflow_state | 存档工作流状态 |
评论
| 工具 | 说明 |
|---|
list_comments_all | 列出所有问题的评论 |
get_comment | 按ID获取特定评论 |
add_comment | 添加标记注释(支持线程回复) |
update_comment | 编辑现有评论 |
delete_comment | 删除评论 |
反应
| 工具 | 说明 |
|---|
add_reaction | 在评论中添加表情符号反应 |
remove_reaction | 通过UUID删除反应 |
标签
| 工具 | 说明 |
|---|
list_labels | 列出工作区和团队范围的标签 |
get_issue_label | 按ID获取特定标签 |
create_label | 创建标签(工作区或团队范围,带颜色) |
update_label | 更新标签的名称或颜色 |
archive_label | 存档标签 |
项目
| 工具 | 说明 |
|---|
list_projects | 具有状态、进度、领导和团队的项目 |
get_project | 完整的项目详细信息 |
create_project | 使用团队关联、潜在客户和日期创建项目 |
update_project | 更新项目详细信息 |
archive_project | 归档项目 |
unarchive_project | 还原已存档的项目 |
delete_project | 永久删除项目 |
update_project_relation | 更新项目关系的锚点类型 |
get_project_filter_suggestion | AI建议的项目查询过滤器 |
项目里程碑和更新
| 工具 | 说明 |
|---|
list_project_milestones | 列出项目的里程碑 |
get_project_milestone | 获取特定的项目里程碑 |
create_project_milestone | 创建具有目标日期的里程碑 |
list_project_updates | 列出项目的状态更新 |
create_project_update | 向项目发布状态更新 |
项目状态
| 工具 | 说明 |
|---|
list_project_statuses | 列出所有项目状态 |
get_project_status | 按ID获取项目状态 |
create_project_status | 创建新的项目状态 |
update_project_status | 更新项目状态 |
archive_project_status | 归档项目状态 |
unarchive_project_status | 恢复已存档的项目状态 |
项目标签
| 工具 | 说明 |
|---|
list_project_labels | 列出项目级标签 |
get_project_label | 按ID获取项目标签 |
create_project_label | 创建项目标签 |
update_project_label | 更新项目标签 |
delete_project_label | 删除项目标签 |
循环
| 工具 | 说明 |
|---|
list_cycles | 列出团队的周期 |
get_cycle | 获取循环详细信息 |
create_cycle | 创建具有开始/结束日期的新周期 |
add_issue_to_cycle | 将问题添加到循环中 |
remove_issue_from_cycle | 从循环中删除问题 |
举措
| 工具 | 说明 |
|---|
list_initiatives | 列出所有工作空间计划 |
create_initiative | 创建一个包含状态、所有者和目标日期的计划 |
update_initiative | 更新倡议 |
archive_initiative | 将倡议存档 |
unarchive_initiative | 恢复已存档的计划 |
delete_initiative | 永久删除倡议 |
update_initiative_to_project | 将倡议更新到项目链接 |
archive_initiative_update | 存档倡议更新 |
unarchive_initiative_update | 恢复已存档的计划更新 |
update_initiative_update | 更新倡议更新 |
倡议关系
| 工具 | 说明 |
|---|
list_initiative_relations | 列出倡议关系 |
get_initiative_relation | 通过ID获得主动关系 |
create_initiative_relation | 建立主动关系 |
update_initiative_relation | 更新倡议关系 |
delete_initiative_relation | 删除倡议关系 |
客户
| 工具 | 说明 |
|---|
get_customer_need | 通过ID获取客户需求 |
archive_customer_need | 归档客户需求 |
unarchive_customer_need | 恢复已存档的客户需求 |
delete_customer_need | 删除客户需求 |
merge_customers | 合并两条客户记录 |
客户状态
| 工具 | 说明 |
|---|
list_customer_statuses | 列出所有客户状态 |
get_customer_status | 通过ID获取客户状态 |
create_customer_status | 创建客户状态 |
update_customer_status | 更新客户状态 |
delete_customer_status | 删除客户状态 |
客户层次
| 工具 | 说明 |
|---|
list_customer_tiers | 列出所有客户层级 |
get_customer_tier | 按ID获取客户级别 |
create_customer_tier | 创建客户层 |
update_customer_tier | 更新客户层 |
delete_customer_tier | 删除客户层 |
发布
| 工具 | 说明 |
|---|
get_release | 通过ID获取释放 |
search_releases | 按查询字符串搜索发布 |
archive_release | 存档发布 |
unarchive_release | 恢复已存档的版本 |
delete_release | 删除发布 |
释放管道
| 工具 | 说明 |
|---|
list_release_pipelines | 列出发布管道 |
get_release_pipeline | 按ID获取发布管道 |
create_release_pipeline | 创建发布管道 |
update_release_pipeline | 更新发布管道 |
delete_release_pipeline | 删除发布管道 |
发布阶段
| 工具 | 说明 |
|---|
list_release_stages | 列出发布阶段 |
get_release_stage | 按ID获取发布阶段 |
create_release_stage | 创建发布阶段 |
update_release_stage | 更新发布阶段 |
发布问题
| 工具 | 说明 |
|---|
list_issue_to_releases | 列出发布关联的问题 |
get_issue_to_release | 按ID获取发布链接的问题 |
add_issue_to_release | 在发布中添加问题 |
remove_issue_from_release | 从发布中删除问题 |
文件
| 工具 | 说明 |
|---|
list_documents | 列出文档,可选择按项目筛选 |
get_document | 获取完整文档内容 |
get_document_content_history | 获取文档的内容修订历史记录 |
search_documents | 跨文档的全文搜索 |
create_document | 创建文档,可选择链接到项目 |
update_document | 更新文档标题或内容 |
unarchive_document | 还原已存档的文档 |
团队
| 工具 | 说明 |
|---|
list_teams | 所有持有钥匙的团队 |
get_team | 按密钥或UUID获取团队详细信息 |
create_team | 创建新团队 |
update_team | 更新团队名称、描述或时区 |
delete_team | 删除团队 |
unarchive_team | 恢复已存档的团队 |
list_archived_teams | 列出已存档的团队 |
团队成员
| 工具 | 说明 |
|---|
list_team_memberships | 列出团队成员资格,可选择按团队筛选 |
get_team_membership | 通过ID获取团队成员资格 |
create_team_membership | 将用户添加到团队 |
update_team_membership | 更新会员资格(例如所有者标志) |
delete_team_membership | 从团队中删除用户 |
用户
| 工具 | 说明 |
|---|
list_users | 具有角色的工作区成员 |
get_user | 通过电子邮件或UUID获取用户 |
get_viewer | 获取经过身份验证的用户信息 |
update_user | 更新用户显示名称、状态或描述 |
list_external_users | 列出外部(访客)用户 |
通知
| 工具 | 说明 |
|---|
list_notifications | 您最近的通知 |
get_notification | 按ID获取特定通知 |
get_notifications_unread_count | 获取未读通知的计数 |
mark_notification_read | 将通知标记为已读 |
通知订阅
| 工具 | 说明 |
|---|
list_notification_subscriptions | 列出通知订阅 |
get_notification_subscription | 按ID获取订阅 |
create_notification_subscription | 创建通知订阅(团队、项目或标签范围) |
update_notification_subscription | 更新订阅 |
视图
| 工具 | 说明 |
|---|
list_views | 列出已保存的自定义视图 |
get_view_issues | 获取与自定义视图筛选器匹配的问题 |
get_custom_view_suggestion | AI建议从提示中自定义视图 |
check_custom_view_has_subscribers | 检查自定义视图是否有订阅者 |
附件
| 工具 | 说明 |
|---|
list_attachments | 列出问题的附件 |
get_attachment | 按ID获取附件 |
add_attachment | 向问题添加URL附件 |
attach_link_url | 将URL链接附加到问题 |
get_attachments_for_url | 查找与URL匹配的附件 |
收藏夹
| 工具 | 说明 |
|---|
list_favorites | 列出您最喜欢的项目 |
get_favorite | 按ID获取收藏夹 |
add_favorite | 喜欢某个问题或项目 |
update_favorite | 更新收藏夹的排序顺序或文件夹 |
remove_favorite | 按UUID删除收藏夹 |
模板
| 工具 | 说明 |
|---|
list_templates | 列出问题模板 |
get_template | 按ID获取模板 |
create_template | 创建新模板 |
update_template | 更新模板 |
delete_template | 删除模板 |
实体外部链接
| 工具 | 说明 |
|---|
get_entity_external_link | 通过ID获取外部链接 |
create_entity_external_link | 在实体上创建外部链接 |
update_entity_external_link | 更新外部链接 |
delete_entity_external_link | 删除外部链接 |
表情符号
| 工具 | 说明 |
|---|
list_emojis | 列出自定义表情符号 |
get_emoji | 通过ID获取表情符号 |
create_emoji | 创建自定义表情符号 |
delete_emoji | 删除自定义表情符号 |
时间进度计划
| 工具 | 说明 |
|---|
list_time_schedules | 列出时间表 |
get_time_schedule | 按ID获取时间表 |
create_time_schedule | 制定时间表 |
update_time_schedule | 更新时间表 |
delete_time_schedule | 删除时间表 |
Git自动化
| 工具 | 说明 |
|---|
create_git_automation_state | 创建git自动化状态映射 |
update_git_automation_state | 更新git自动化状态映射 |
delete_git_automation_state | 删除git自动化状态映射 |
create_git_automation_target_branch | 创建git自动化目标分支 |
update_git_automation_target_branch | 更新git自动化目标分支 |
delete_git_automation_target_branch | 删除git自动化目标分支 |
电子邮件接收
| 工具 | 说明 |
|---|
get_email_intake_address | 通过ID获取电子邮件接收地址 |
create_email_intake_address | 为团队创建电子邮件接收地址 |
update_email_intake_address | 更新电子邮件接收地址 |
delete_email_intake_address | 删除电子邮件接收地址 |
历史与审计
| 工具 | 说明 |
|---|
get_issue_history | 对问题变更的审计跟踪 |
query_audit_log | 工作区审核日志(仅限管理员) |
集成和Webhooks
| 工具 | 说明 |
|---|
list_integrations | 列出工作区集成 |
list_webhooks | 列出webhooks(仅限管理员) |
create_webhook | 创建webhook(仅限管理员) |
delete_webhook | 删除webhook(仅限管理员) |
组织与制度
| 工具 | 说明 |
|---|
get_organization | 获取工作区组织信息 |
get_application_info | 获取API应用程序信息 |
get_rate_limit_status | 获取当前API费率限制状态 |
list_roadmaps | 列出路线图 |
建筑
- MCP-SDK: rmcp v0.15与stdio传输
- 线性API:原始GraphQL通过
reqwest (无线性SDK) - 传输层安全:rustls(不依赖OpenSSL)
- 缓存:用于实体解析的内存缓存(团队键→ ID,问题标识符→ UUID)
- 在线富集:在查询中内联获取的相关实体(州、受让人、标签),没有N+1
从源代码构建
需要 防锈工具链.
git clone git@github.com:davidjpnelson/linear-mcp-rs.git
cd linear-mcp-rs
cargo build --release
# Binary: target/release/linear-mcp