Linear MCP服务器

基于Dedalus平台构建的Linear MCP服务器,用于通过OAuth2与Linear工作区交互,支持问题管理、评论、项目、周期等操作。

  • by dedalus-labs
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 dedalus-labs/linear-mcp

使用说明

线性mcp

A. 线性 MCP服务器建立在 戴达卢斯 平台。

先决条件

  • Python 3.11+
  • uv
  • 带有OAuth2应用程序的线性工作空间
  • A. 戴达卢斯 账户

快速开始

1.创建线性OAuth应用程序

  1. 首选 线性→ 设置→ API → OAuth2应用程序 (链接).
  2. 创建新应用程序。
  3. 在...之下 重定向URI,添加:
    https://as.dedaluslabs.ai/oauth/callback
    
  4. 注意 客户端ID 和 客户端密钥.

2.配置环境变量

cp .env.example .env

填写您的 .env:

# Linear OAuth (consumed by the Dedalus platform during deployment)
OAUTH_ENABLED=true
OAUTH_AUTHORIZE_URL=https://linear.app/oauth/authorize
OAUTH_TOKEN_URL=https://api.linear.app/oauth/token
OAUTH_CLIENT_ID=<your-linear-client-id>
OAUTH_CLIENT_SECRET=<your-linear-client-secret>
OAUTH_SCOPES_AVAILABLE=read,write,issues:create,comments:create
OAUTH_BASE_URL=https://api.linear.app

# Dedalus Platform (for the sample client)
DEDALUS_API_KEY=<your-dedalus-api-key>
DEDALUS_API_URL=https://api.dedaluslabs.ai
DEDALUS_AS_URL=https://as.dedaluslabs.ai

# After deploying, set this to your slug
LINEAR_MCP_SLUG=your-org/linear-mcp

3.部署到Dedalus

  1. 登录到 Dedalus仪表板.
  2. 首选 添加服务器 并连接此GitHub存储库。
  3. 在服务器配置中,从您的 .env (OAUTH_CLIENT_ID, OAUTH_CLIENT_SECRET等等)。
  4. 部署。仪表板将显示您的服务器slug(例如。 your-org/linear-mcp).

4.安装依赖项

uv sync

5.运行客户端

uv run src/_client.py

首次使用时,客户端将打开您的浏览器进行线性OAuth授权。 完成流程后,您可以通过代理与Linear进行交互。

=== Linear MCP Agent ===
Server: your-org/linear-mcp
Type 'quit' or 'exit' to end the session.

You: What issues are assigned to me?
Assistant: ...

环境变量

线性OAuth(服务器端,在Dedalus部署期间设置)

变量 描述
OAUTH_ENABLED true
OAUTH_AUTHORIZE_URL https://linear.app/oauth/authorize
OAUTH_TOKEN_URL https://api.linear.app/oauth/token
OAUTH_CLIENT_ID 您的Linear OAuth应用程序客户端ID
OAUTH_CLIENT_SECRET 您的Linear OAuth应用程序客户端密钥
OAUTH_SCOPES_AVAILABLE read,write,issues:create,comments:create
OAUTH_BASE_URL https://api.linear.app

Dedalus平台(客户端,用于 _client.py)

|变量|描述| | --- | --- | | DEDALUS_API_KEY |您的Dedalus API密钥(dsk_*) | | DEDALUS_API_URL |API基本URL(默认值: https://api.dedaluslabs.ai) | | DEDALUS_AS_URL |授权服务器URL(默认值: https://as.dedaluslabs.ai) |

在本地运行服务器

uv run src/main.py

这将启动端口8080上的MCP服务器。请注意 _client.py 始终连接 通过Dedalus(不是本地主机)。使用此功能进行直接MCP客户端的本地测试。


棉绒和字体检查

uv run --group lint ruff format src/
uv run --group lint ruff check src/ --fix
uv run --group lint ty check src/

可用工具

工具 R/W 说明
linear_get_issue R 通过ID或标识符(ENG-123)获取问题
linear_list_issues R 列出过滤器的问题
linear_create_issue W 创建新问题
linear_update_issue W 更新现有问题
linear_list_comments R 列出对某个问题的评论
linear_create_comment W 为问题添加评论
linear_get_project R 按ID获取项目
linear_list_projects R 列出项目
linear_create_project W 创建新项目
linear_update_project W 更新现有项目
linear_list_cycles R 列出团队的周期
linear_get_cycle R 按ID获取循环
linear_active_cycle R 获取团队的当前活动周期
linear_list_teams R 列出所有团队
linear_get_team R 按ID获取团队
linear_list_team_states R 列出团队的工作流状态
linear_whoami R 获取经过身份验证的用户配置文件
linear_list_users R 列出工作区成员
linear_list_labels R 列出标签
linear_create_label W 创建新标签
linear_search_issues R 跨问题的全文搜索
linear_issue_context R 完整的问题背景(详细信息+评论+状态)
linear_my_issues R 分配给经过身份验证的用户的问题
linear_get_attachment R 按ID获取附件
linear_get_attachment_by_url R 通过URL获取附件
linear_create_attachment W 针对某个问题创建附件
linear_update_attachment W 更新现有附件

建筑

Linear使用单个GraphQL端点(POST /graphql).请求层 通过Dedalus HTTP飞地发送查询,该飞地注入OAuth 透明的凭证。

src/
├── linear/
│   ├── config.py      # Connection definition (OAuth)
│   ├── request.py     # GraphQL dispatch + coercion helpers
│   └── types.py       # Typed dataclass models
├── tools/
│   ├── issues.py      # Issue CRUD
│   ├── comments.py    # Comment operations
│   ├── projects.py    # Project CRUD
│   ├── cycles.py      # Cycle queries
│   ├── teams.py       # Team + workflow states
│   ├── users.py       # User queries
│   ├── labels.py      # Label operations
│   ├── search.py      # Issue search
│   ├── attachments.py # Attachment operations
│   └── compound.py    # Multi-step workflows (issue context, my issues)
├── server.py          # MCPServer setup
├── main.py            # Server entry point
└── _client.py         # Interactive agent client (DAuth)

故障排除

“线性MCP服务器当前不可用”

客户端要求Dedalus平台通过slug路由到您的MCP服务器。这 错误意味着平台无法访问它。常见原因:

  1. 服务器未部署 --首先从Dedalus仪表板部署此仓库。
  2. 错误的slug --验证 LINEAR_MCP_SLUG 与您的部署相匹配。
  3. OAuth未完成 --在提示时完成线性OAuth流程。

“应用程序的redirect_uri参数无效”

Linear的OAuth拒绝了回调URL。通过添加 https://as.dedaluslabs.ai/oauth/callback 到您的Linear OAuth应用程序 重定向URI 在 线性设置→ API → OAuth2应用程序.

OAuth重新部署后的重新授权

重新部署服务器可能会生成一个新的服务器ID,使之前的OAuth无效 代币。如果在重新部署后看到401错误,请再次运行客户端,然后 在系统提示时完成OAuth流程。


备注

  • Linear的API是GraphQL-only。每个工具都会分派一个GraphQL查询或变异。
  • 工作流程状态因团队而异。使用 linear_list_team_states 发现有效 创建或转换问题之前的状态ID。
  • 问题标识符(例如。 ENG-123)可以与UUID互换使用。
  • 优先级值:0=无优先级,1=紧急,2=高,3=中,4=低。
  • 默认情况下,已存档的资源是隐藏的;一些工具接受 include_archived.
  • 身份验证通过DAuth使用OAuth2。不支持个人API密钥。