线性MCP服务器
一个用于Linear的模型上下文协议(MCP)服务器,用Go语言编写。此服务器提供了通过MCP协议与Linear API交互的工具。
特点/特性
- 创建、更新和搜索线性问题
- 为用户分配任务
- 在问题上添加评论并回复现有评论
- URL感知的评论操作 - 直接粘贴线性评论URL,无需手动提取ID
- 获取团队信息
- 为尊重Linear的API限制,请对API请求进行速率限制
先决条件
- Go 1.23 或更高版本
- 线性API密钥
安装
来自发布
预编译的二进制文件适用于Linux、macOS和Windows系统,可在 。
- 下载适用于您平台的二进制文件
- 使其可执行(适用于Linux/macOS):
chmod +x linear-mcp-go-*- 按照“使用方法”部分所述运行二进制文件
自动化
# Download linux binary for the latest release
RELEASE=$(curl -s https://api.github.com/repos/geropl/linear-mcp-go/releases/latest)
DOWNLOAD_URL=$(echo $RELEASE | jq -r '.assets[] | select(.name | contains("linux")) | .browser_download_url')
curl -L -o ./linear-mcp-go $DOWNLOAD_URL
chmod +x ./linear-mcp-go
# Setup the mcp server (.gitpod.yml, dotfiles repo, etc.)
./linear-mcp-go setup --tool=cline用法
检查版本
检查Linear MCP服务器的版本:
./linear-mcp-go version这将显示版本号、Git提交哈希以及构建日期信息。
运行服务器
- 将您的Linear API密钥设置为环境变量:
export LINEAR_API_KEY=your_linear_api_key- 运行服务器:
# Run in read-only mode (default)
./linear-mcp-go serve
# Run with write access enabled
./linear-mcp-go serve --write-access服务器将启动并监听标准输入/输出上的MCP请求。
为人工智能助手进行设置
这个(或“该”) setup 该命令自动化了各种人工智能助手的安装和配置过程:
# Set your Linear API key as an environment variable
# Only exception: Ona does not require this for setup!
export LINEAR_API_KEY=your_linear_api_key
# Set up for Cline (default)
./linear-mcp-go setup
# Set up with write access enabled
./linear-mcp-go setup --write-access
# Set up with auto-approval for read-only tools
./linear-mcp-go setup --auto-approve=allow-read-only
# Set up with specific tools auto-approved
./linear-mcp-go setup --auto-approve=linear_get_issue,linear_search_issues
# Set up with write access and auto-approval for read-only tools
./linear-mcp-go setup --write-access --auto-approve=allow-read-only
# Set up for a different tool (only "cline" supported for now)
./linear-mcp-go setup --tool=cline这个命令:
- 检查线性MCP二进制文件是否已安装
- 如有需要,将当前二进制文件复制到安装目录
- 配置AI助手以使用线性MCP服务器
- 如需请求,为指定工具设置自动审批
这个(或:那个) --auto-approve 在 Cline 配置中,可以使用标志来指定哪些工具应自动获得批准:
--auto-approve=allow-read-only自动批准所有只读工具linear_search_issues,linear_get_user_issues,linear_get_issue,linear_get_teams)--auto-approve=tool1,tool2,...自动批准指定的以逗号分隔的工具列表
当前支持的AI助手:
- Cline(VSCode 扩展)
默认情况下,服务器以只读模式运行,这意味着以下工具将被禁用:
linear_create_issuelinear_update_issuelinear_add_commentlinear_reply_to_commentlinear_update_issue_comment
要启用这些工具,请使用 --write-access=true 旗帜。
可用工具
创建线性问题(或:线性问题创建)
根据指定的详细信息创建一个新的线性问题。 支持创建父子关系 (子问题)并给它们分配标签。
参数:
title(必填):问题标题team(必需):团队标识符(密钥、UUID 或名称)description问题描述priority优先级。接受值:0/“无优先级”,1/“紧急”,2/“高”,3/“中”,4/“低”status问题状态makeSubissueOf: 通过指定父问题ID或标识符来创建子问题 (例如,“TEAM-123”)。这在Linear中建立了一个父子关系。labels可选的、以逗号分隔的标签ID或名称列表,用于分配project可选的项目标识符(ID、名称或别名),用于将问题分配给该项目
示例:创建一个子问题
{
"title": "Implement login form validation",
"team": "ENG",
"makeSubissueOf": "ENG-42",
"description": "Add client-side validation for the login form"
}线性更新问题
更新现有线性问题的属性。
参数:
id(必填):问题IDtitle新标题description新的描述priority优先级。接受值:0/'无优先级',1/'紧急',2/'高',3/'中',4/'低'status新状态
线性搜索问题
使用灵活的标准搜索线性问题。
参数:
query在标题和描述中搜索的可选文本teamId按团队ID筛选status按状态名称筛选(例如,“进行中”,“已完成”)assigneeId按指派人用户ID筛选labels按标签名称过滤(用逗号分隔)priority优先级。接受值:0/'无优先级',1/'紧急',2/'高',3/'中',4/'低'estimate按估算点过滤includeArchived在结果中包含存档问题(默认:false)limit要返回的最大结果数(默认:10)
获取用户线性问题(或“获取用户的线性问题列表”)
检索分配给特定用户或已认证用户的任务。
参数:
userId可选的用户ID。如果未提供,则返回已认证用户的议题includeArchived在结果中包含已存档的期刊问题limit要返回的最大问题数(默认:50)
获取线性问题
通过ID检索单个线性问题。
参数:
issueId(必填):要检索的问题的ID
线性添加评论
向现有的Linear问题添加评论。支持通过传递评论标识符来回复现有评论 thread 参数。
参数:
issue(必填):要评论的问题的ID或标识符(例如,“TEAM-123”)body(必填):以Markdown格式的评论文本thread可选的评论标识符,用于回复。接受:完整的Linear评论URL、UUID、缩写(comment-abc123)或哈希(abc123)。此标识符用于创建线程回复,而非顶级评论。createAsUser可选的自定义用户名,用于显示评论
URL 支持: 你可以传递一个完整的Linear评论URL(例如。, https://linear.app/.../issue/TEST-10/...#comment-abc123) 直接到 thread 参数。该工具在调用API之前会自动将URL解析为UUID。
对评论的线性回复
便捷工具,用于回复已有评论。自动解析评论中的问题,因此您只需提供评论标识符和回复内容。
参数:
thread(必填):要回复的评论。接受:完整的线性评论URL、UUID、缩写形式(comment-abc123)或哈希值(abc123)body(必填):以Markdown格式回复文本createAsUser可选的自定义用户名,用于显示回复
为什么要使用这个工具? 当你有评论的URL或ID并且想要回复时,这个工具比(其他方法)更简单 linear_add_comment 因为你不需要单独指定问题。工具会自动从评论中查找问题。
获取线性问题的评论
检索Linear问题的评论,支持分页和线程导航。
参数:
issue(必填):要检索评论的问题的ID或标识符(例如,'TEAM-123')thread可选的父级评论的UUID,用于获取其回复。如果未提供,则返回顶级评论limit返回的最大评论数(默认:10)after用于分页的游标,以获取此点之后的评论
用例:
- 查看某个问题的所有评论
- 通过传递评论的UUID来浏览评论线程
thread参数 - 获取用于回复的评论UUID(尽管在URL中也支持)
linear_add_comment(这个,就不太必要了)
线性更新问题评论
更新Linear问题上的现有评论。
参数:
comment(必填):要更新的评论标识符。接受:完整的Linear评论URL、UUID、简写形式(comment-abc123)或哈希值(abc123)body(必填):以Markdown格式输入的新评论文本
URL 支持: 与其他评论工具一样,此工具接受完整的Linear评论URL,并自动将其解析为UUID。
获取线性团队(或:获取直线型团队)
检索线性团队,可选名称过滤。
参数:
name可选的团队名称过滤器。返回名称中包含此字符串的团队。
测试
测试是使用(某种工具或方法)来实施的 go-vcr并且在 https://linear.app/linear-mcp-go-test 上执行。
执行测试
使用现有的录音(磁带):
go test -v ./...重新录制测试:
需要 TEST_LINEAR_API_KEY 为测试工作区进行设置。
go test -v -record=true ./...这将更新所有不改变远程状态的测试。
go test -v -recordWrites=true ./...这将重新运行所有测试,包括一些可能会影响其他测试用例结果的测试,这可能需要进一步的手工调整工作。
go test -v -golden=true ./...更新所有“.golden”字段。
发布流程
该项目使用GitHub Actions进行自动化测试和发布。版本管理通过 ServerVersion (在……中)恒定不变的 pkg/server/server.go。
自动化测试与构建
- 所有对主分支的推送和拉取请求都会自动进行测试
- 当一个标签匹配该模式时
v*(例如。,v1.0.0当(某个按钮或选项)被按下时,会自动创建一个新的版本发布 - 为Linux、macOS和Windows构建的二进制文件已生成,并附带构建时间信息(Git提交记录和构建日期)一同发布
创建新版本
重要的版本标签应仅针对 main 在所有更改合并后创建分支。
- 更新版本修改
ServerVersion(在……中)恒定的pkg/server/server.go
// ServerVersion is the version of the MCP server
ServerVersion = "1.13.0"- 创建一篇公关稿提交版本更新作为拉取请求,以确保其经过审查和测试
- 合并到主分支一旦拉取请求(PR)被批准并合并到主分支
- 创建并推送发布标签:
# Ensure you're on the latest main branch
git checkout main
git pull origin main
# Create and push the tag (must match the version in server.go)
git tag v1.13.0
git push origin v1.13.0- 自动化发布GitHub Actions 工作流将自动:
- 为所有平台构建包含正确版本信息的二进制文件 - 创建一个带有标签的GitHub发布版 - 将编译后的二进制文件附加到发布版中
版本信息
这个(或“该”) version 命令显示:
- 版本从……读取
ServerVersion(在……中)始终如一的;不变的pkg/server/server.go - Git 提交(或 Git 提交更改)在构建时从当前提交哈希注入
- 构建日期在构建时注入当前时间戳
对于开发构建,git提交信息和构建日期将显示为“未知”。
许可证
麻省理工学院(MIT)
