关于 Abscissa
Abscissa 是供 MCP 客户端使用的本地 Python MCP 服务,用于管理 Linear 工作区。它涵盖问题、项目、周期和依赖项,并支持游标分页及破坏性操作的显式确认。
主要功能
- 01管理 Linear 问题、项目和周期
- 02创建和查看问题依赖项
- 03处理评论、标签、团队和用户
- 04为列表及搜索结果分页
- 05归档和删除操作要求确认
适用场景
- 01按项目查看和整理分配的未关闭问题
- 02创建或更新问题及项目记录
- 03查看被其他问题阻塞的问题
MCP 相关
Abscissa 通过 MCP stdio 传输向兼容客户端提供 42 个 Linear 工具。它从进程环境中读取 Linear API 密钥。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
42收录的工具列表 · 更新于 3 周前
此工具无需参数。
详细介绍
Abscissa 是一款面向 Linear 的 Python stdio MCP 服务。它将 Linear 的 GraphQL API 转换为供 MCP 客户端使用的 42 个工具:问题、项目、周期、依赖关系、 评论、标签、工作流状态、团队和用户。
设计的首要目标是让用户能够有意地控制项目数据。读取操作
会返回游标分页结果;get_user_issues() 会解析经过身份验证的
Linear 用户;归档和删除工具在执行破坏性 API 调用前,要求明确传入
confirm=true。服务不会存储凭据,而是从其进程环境中读取
LINEAR_API_KEY。
Abscissa 使用 模型上下文协议 提供的 stdio 传输方式。任何 支持 stdio MCP 的客户端都可以将其作为本地工具进程启动。
运行
你需要 Python 3.10+ 和一个 Linear 个人 API 密钥。
git clone https://github.com/KazKozDev/abscissa.git
cd abscissa
python3 -m venv .venv
.venv/bin/pip install -e '.[dev]'
export LINEAR_API_KEY='lin_api_…'
.venv/bin/abscissa
你也可以直接从 PyPI 安装 Abscissa:
pip install abscissa
最后一条命令会通过标准输入和输出启动 MCP 服务。在 MCP 客户端中,将
.venv/bin/abscissa 注册为 stdio 命令,并通过该客户端的环境变量或密钥管理器传入
LINEAR_API_KEY。
密钥不会保存在代码库中。.gitignore 会排除常见的本地
环境文件,包括 .env 和 .venv。
示例提示词
在 MCP 客户端中注册 Abscissa 后,可以尝试以下提示词:
Show my open Linear issues grouped by project.
Create an issue in ENG for fixing onboarding copy.
List issues blocked by GEN-32.
工具
| 区域 | 工具 |
|---|---|
| 身份 | get_current_user |
| 问题 | create_issue、update_issue、search_issues、get_user_issues、get_issue、assign_issue、add_comment、set_issue_estimate |
| 问题生命周期 | archive_issue、delete_issue |
| 依赖关系 | list_issue_dependencies、add_issue_dependency、remove_issue_dependency |
| 标签和工作流 | list_workflow_states、list_issue_labels、create_label、add_issue_label、remove_issue_label |
| 团队和人员 | list_teams、get_team、list_users |
| 项目 | create_project、get_project、list_projects、list_project_issues、set_issue_project、remove_issue_from_project、update_project、update_project_details、archive_project |
| 项目标签 | list_project_labels、create_project_label、add_project_label、remove_project_label |
| 项目更新 | create_project_update、list_project_updates |
| 周期 | create_cycle、update_cycle、archive_cycle、list_cycles、list_cycle_issues |
搜索和列表工具接受 limit 和 cursor。其响应保持相同的
结构:
{
"items": [],
"next_cursor": null
}
将非空的 next_cursor 作为 cursor 传回,即可请求下一页。
list_issue_dependencies 会分别返回 blocks 和 blocked_by 列表。
每个条目都包含其 relation_id;可以使用它移除相应依赖关系。其
next_cursors 对象为每个方向分别提供游标。
破坏性操作
archive_issue、archive_project 和 delete_issue 已标记 MCP 的
destructiveHint。只有客户端调用时传入 confirm=true,它们才会调用 Linear。
Deletion requires explicit confirmation: set confirm=true
这可以防止意外的工具调用删除或归档数据,但不能取代 Linear 自身的访问控制:API 密钥仍决定服务可以读取或更改哪些 资源。
验证代码检出
.venv/bin/ruff check .
.venv/bin/python -m pytest
当前代码检出会得到:
All checks passed!
.......... [100%]
10 passed
测试涵盖分页边界和响应结构、经过身份验证的用户问题解析、项目成员关系、周期查询、依赖方向、确认保护、 周期生命周期操作以及 MCP 工具注册。GitHub Actions 会在 Python 3.10、3.11、3.12 和 3.13 上运行相同的 lint 和测试命令。
局限性
Abscissa 是本地 stdio 服务,而非 HTTP 服务。它需要运行中的 MCP 客户端和有效的 Linear API 密钥。自动化测试套件不会修改真实的 Linear 工作区;因此,创建、更新、归档和删除行为由单元测试保障,而非通过实时写入测试验证。
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。