Token导航 LogoToken导航

MCP Server · 安全风控

Svc MCP Linear

一个通过Keycard SDK处理OAuth认证的服务器,提供对Linear API的安全访问。

stdio官方级别未说明来源级核验工具 12
Python项目管理OAuth认证

快速开始

作者 / 组织
keycardai
提供方
keycardai
运行时
Python

工具数量

12

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

0

仓库热度

收录来源

1 个

MCP World

选型结论

Svc MCP Linear 属于安全风控类 MCP Server,公开资料标注 12 个工具,通过stdio 本地进程接入,客户端适配情况以官方文档为准,有可以直接复制的安装命令;接入前要先准备 OAuth 授权。

分类

安全风控

传输方式

stdio

认证方式

OAuth 授权

部署方式

公开资料未说明

安装与配置

安装命令

uv run python -m src.server

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    准备运行环境

    stdio 服务在本地起进程,需要先装好 Python,再按安装命令拉取依赖。

  2. 2

    安装服务

    复制下面的安装命令执行;命令里带占位符的位置换成自己的密钥或路径。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 12 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

详细介绍

svc-mcp线性

带钥匙卡身份验证的线性MCP服务器。

此服务器使用Keycard SDK来处理OAuth身份验证,为每个用户提供对Linear API的安全访问。

建筑

┌─────────────┐     ┌─────────────┐
│  MCP Client │────▶│ This Server │────▶ Linear API
└─────────────┘     └─────────────┘
                          │
                   ┌──────▼──────┐
                   │   Keycard   │
                   │   (OAuth)   │
                   └─────────────┘

Keycard处理OAuth令牌交换。每个用户都通过Keycard进行身份验证,服务器通过 @auth_provider.grant() 装饰师。

工具

工具类型描述
my_issues查询获取分配给经过身份验证的用户的问题
my_created_issues查询获取已验证用户创建的问题(包括未分配/分类)
issue查询通过标识符获取特定问题的详细信息(例如,ENG-123)
search查询按文本查询搜索问题(搜索标题和描述)
list_projects查询列出项目,可选择按团队筛选
list_project_updates查询获取项目的最新状态更新
create_issue突变创建新问题(需要team_id和title,可选project_id)
update_issue突变更新问题字段(标题、描述、优先级等)
update_status突变更改问题工作流状态
create_project突变创建新项目(需要名称和team_id)
create_project_update突变发布项目的状态更新
states查询列出团队的可用工作流状态

工具详细信息

my_issues

返回分配给已验证用户的问题。

答复:

{
  "success": true,
  "issues": [
    {
      "id": "uuid",
      "identifier": "ENG-123",
      "title": "Fix login bug",
      "description": "...",
      "state": { "name": "In Progress" },
      "priority": 2,
      "project": { "name": "Backend" }
    }
  ],
  "count": 1
}
my_created_issues

返回由经过身份验证的用户创建的问题。不像 my_issues,这包括 用户提交但未分配给自己的问题,例如,门票放在 团队的Triage收件箱。

答复:

{
  "success": true,
  "issues": [
    {
      "id": "uuid",
      "identifier": "AGE-200",
      "title": "New ticket in triage",
      "state": { "name": "Triage", "type": "triage" },
      "priority": 0,
      "project": null,
      "team": { "id": "team-uuid", "name": "Agent Dev" },
      "assignee": null
    }
  ],
  "count": 1
}
issue

获取特定问题的详细信息。

参数:

  • identifier (必填):问题标识符,如“ENG-123”

答复:

{
  "success": true,
  "issue": {
    "id": "uuid",
    "identifier": "ENG-123",
    "title": "Fix login bug",
    "description": "...",
    "state": { "id": "state-uuid", "name": "In Progress" },
    "priority": 2,
    "labels": { "nodes": [{ "name": "bug" }] },
    "assignee": { "name": "John Doe", "email": "john@example.com" },
    "team": { "id": "team-uuid", "name": "Engineering" },
    "comments": { "nodes": [...] }
  }
}
search

按文本查询搜索问题。

参数:

  • query (必填):搜索文本(不区分大小写,搜索标题和描述)
list_projects

列出线性项目。

参数:

  • team_id (可选):按以下方式筛选项目的团队UUID

答复:

{
  "success": true,
  "projects": [
    {
      "id": "project-uuid",
      "name": "Backend Refactor",
      "slugId": "backend-refactor",
      "state": "started",
      "teams": {
        "nodes": [
          { "id": "team-uuid", "name": "Engineering" }
        ]
      }
    }
  ],
  "count": 1
}
list_project_updates

获取项目的最新状态更新。

参数:

  • project_id (必填):项目UUID(从list_projects获取)
  • limit (可选):要返回的更新数(默认值10)
create_issue

创建新问题。

参数:

  • team_id (必填):团队UUID
  • title (必填):发行标题
  • description (可选):问题描述(支持markdown)
  • priority (可选):0=无,1=紧急,2=高,3=中,4=低
  • state_id (可选):初始工作流状态UUID
  • assignee_id (可选):受让人用户UUID
  • project_id (可选):要分配问题的项目UUID(从获取 list_projects)
update_issue

更新现有问题。还支持将问题转移到其他团队。

参数:

  • issue_id (必填):问题UUID(来自问题查询,而不是标识符)
  • title (可选):新标题
  • description (可选):新描述
  • priority (可选):新优先级
  • state_id (可选):新工作流状态UUID
  • assignee_id (可选):新受让人UUID
  • team_id (可选):目标团队UUID。设置后,将问题转移到该团队。Linear将状态映射到目标团队中的同一类型,如果未共享,则清除该项目--pass state_id 和 project_id 控制这些。
  • project_id (可选):要将问题分配给的项目UUID。传递一个空字符串以取消分配。
update_status

更改问题工作流状态。

参数:

  • issue_id (必填):发布UUID
  • state_id (必需):目标工作流状态UUID(从获取 states 工具)
create_project

创建一个新的线性项目。

参数:

  • name (必填):项目名称
  • team_id (必需):与项目关联的团队UUID
  • description (可选):项目描述
  • state (可选):项目状态(计划、已开始、已暂停、已完成、已取消)

答复:

{
  "success": true,
  "project": {
    "id": "project-uuid",
    "name": "New Project",
    "slugId": "new-project",
    "url": "https://linear.app/team/project/new-project"
  }
}
create_project_update

发布项目的状态更新。

参数:

  • project_id (必填):项目UUID(从list_projects获取)
  • body (必填):更新内容(支持markdown)
  • health (可选):健康状况(在轨、有风险、脱轨)
states

获取可用的工作流状态。

参数:

  • team_id (可选):团队UUID。如果没有提供,则返回所有团队的状态。

回应(单团队):

{
  "success": true,
  "team": { "id": "team-uuid", "name": "Engineering" },
  "states": [
    { "id": "state-1", "name": "Backlog", "type": "backlog" },
    { "id": "state-2", "name": "In Progress", "type": "started" },
    { "id": "state-3", "name": "Done", "type": "completed" }
  ]
}

本地开发

先决条件

  • Python 3.12+
  • 紫外线 包管理器
  • 钥匙卡应用凭据(zone_id、client_id、client_secret)

设置

  1. 克隆并输入目录:
   cd svc-mcp-linear
  1. 创建虚拟环境并安装依赖关系:
   uv venv
   source .venv/bin/activate
   uv sync
  1. 创建 .env 例如:
   cp .env.example .env
  1. 在中配置钥匙卡凭据 .env:
   KEYCARD_ZONE_ID=your_zone_id
   KEYCARD_CLIENT_ID=your_client_id
   KEYCARD_CLIENT_SECRET=your_client_secret
   MCP_SERVER_URL=http://localhost:8000
   PORT=8000

从您的Keycard仪表板获取这些凭据:

- 在keycard.cloud上创建一个区域 - 添加Linear作为凭证提供者 - 注册应用程序并复制凭据

在本地运行

uv run python -m src.server

服务器启动时间 http://localhost:8000/mcp

测试

服务器需要Keycard身份验证。要进行测试,请使用配置了指向服务器URL的Keycard身份验证的MCP客户端。

运行测试

uv run pytest

覆盖范围:

uv run pytest --cov=src --cov-report=term-missing

渲染部署

服务器部署在Render上 https://svc-mcp-linear.onrender.com/mcp.

配置

渲染所需的环境变量:

  • KEYCARD_ZONE_ID
  • KEYCARD_CLIENT_ID
  • KEYCARD_CLIENT_SECRET
  • MCP_SERVER_URL (设置为渲染URL)
  • PORT (渲染会自动提供此功能)

部署

  1. 将您的仓库连接到Render
  2. 设置启动命令: uv run python -m src.server
  3. 在Render仪表板中添加环境变量

手动部署

git push origin main  # Auto-deploys if connected to Render

错误处理

所有工具都返回一致的响应结构:

成功:

{
  "success": true,
  "issues": [...],
  "count": 5
}

错误:

{
  "success": false,
  "error": "Error message describing what went wrong",
  "isError": true
}

常见错误:

  • No authentication context -未配置钥匙卡身份验证
  • Authentication errors: [...] -用户未通过身份验证或令牌已过期
  • Linear API returned HTTP 401 -令牌无效或已撤销
  • Issue ENG-999 not found -问题不存在或无法访问

项目结构

svc-mcp-linear/
├── src/
│   ├── __init__.py
│   ├── auth.py            # Keycard AuthProvider singleton
│   ├── server.py          # FastMCP entry point
│   ├── client.py          # Linear GraphQL client
│   └── tools/
│       ├── __init__.py
│       ├── issues.py      # my_issues, issue, search, list_projects, list_project_updates
│       ├── mutations.py   # create_issue, update_issue, update_status, create_project, create_project_update
│       └── states.py      # states
├── tests/
│   ├── __init__.py
│   ├── conftest.py
│   ├── test_client.py
│   └── test_tools.py
├── pyproject.toml
├── .env.example
└── README.md

许可证

仅供内部使用。

工具与能力

工具数量

12

资源数量

0

提示词数量

0

能力标签

OAuth认证Python本地部署LinearAPIKeycardSDK项目管理

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

资产与漏洞排查

批量查询资产和漏洞信息,输出待修清单。

日志审计

从日志里筛出异常访问和高风险操作。

合规检查

按规则核对配置项,记录不符合项。

选择建议

值得选的地方

  • 工具数量 12 个,一次接入能覆盖的操作比单点工具更全。
  • 有现成的安装命令,不用自己找入口,照着跑就能起服务。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

  • stdio 方式要求本地装好 Python,换机器要重新装一遍。
  • 需要自备OAuth 授权,没有凭据没法直接试。
  • 公开摘要偏短,具体能力和限制要回到仓库确认。

更适合

  • 需要在安全风控场景里让模型直接调用外部能力的人。
  • 想先快速试一下、能接受在本地跑服务的人。

不太适合

  • 完全不想在本地装环境的人。
  • 暂时拿不到OAuth 授权的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
Svc MCP Linear

MCP World · 本页

12stdio有1 个2026-05-17
Modelcontextprotocol C22988b0

MCP World

0stdio有1 个2026-05-17
Hexstrike AI

MCP World

0stdio有1 个2026-05-17
Cyber Strike AI

MCP World

75未说明未标注1 个2026-05-17
MCP Scan

MCP World

0stdio有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

Svc MCP Linear 怎么安装?

公开资料给出的安装命令是 uv run python -m src.server,运行环境为 Python。装完后按客户端要求写进 MCP 配置,重启客户端生效。

Svc MCP Linear 怎么在 Claude Desktop、Cursor 里配置?

它是stdio 本地进程,客户端配置里要写启动命令和参数,运行环境是 Python;保存后完全退出客户端再打开,配置才会生效。

Svc MCP Linear 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

Svc MCP Linear 需要 API Key 吗?

公开资料标注的认证方式是OAuth 授权,也就是要先拿到凭据才能连上;凭据只填在自己本地的配置里,不要写进公开仓库。

Svc MCP Linear 支持哪些客户端?

公开资料没有标注具体客户端;能配置本地 MCP 命令的客户端都能接,配置方式参照官方文档。

来源信息

继续浏览同类 MCP