mcpField
A
Abscissa

Abscissa

本地服务
github.com生产力116 周前更新

关于 Abscissa

Abscissa 是供 MCP 客户端使用的本地 Python MCP 服务,用于管理 Linear 工作区。它涵盖问题、项目、周期和依赖项,并支持游标分页及破坏性操作的显式确认。

主要功能

  1. 01管理 Linear 问题、项目和周期
  2. 02创建和查看问题依赖项
  3. 03处理评论、标签、团队和用户
  4. 04为列表及搜索结果分页
  5. 05归档和删除操作要求确认

适用场景

  1. 01按项目查看和整理分配的未关闭问题
  2. 02创建或更新问题及项目记录
  3. 03查看被其他问题阻塞的问题

MCP 相关

Abscissa 通过 MCP stdio 传输向兼容客户端提供 42 个 Linear 工具。它从进程环境中读取 Linear API 密钥。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"abscissa": {
"command": "uvx",
"args": [
"abscissa"
],
"env": {
"LINEAR_API_KEY": "<LINEAR_API_KEY>"
}
}
}
}
启动命令uvx abscissa
需要配置的环境变量
LINEAR_API_KEY密钥Linear personal API key used to authenticate API requests.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiabscissa0.1.3

工具

42

收录的工具列表 · 更新于 3 周前

此工具无需参数。

详细介绍

Abscissa

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 工作区;因此,创建、更新、归档和删除行为由单元测试保障,而非通过实时写入测试验证。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。