Linear MCP Server

Linear MCP Server

A high-performance HTTP service that bridges Claude Code or other MCP clients with Linear's GraphQL API, enabling natural language interaction with Linear issues, comments, projects, and other entities without dealing with UUIDs.

Category
访问服务器

README

Legible Linear MCP

A high-performance HTTP service that bridges Claude Code (or any MCP client) with Linear's GraphQL API.

Built to make accessing Linear more comfortable for LLMs

📋 Prerequisites

  • Node.js 18+
  • Linear API key (Get one here)
  • Optional: Linear webhook secret for webhook validation

🛠️ Installation

  1. Clone the repository:
git clone https://github.com/yourusername/bleugreen.git
cd linear-mcp
  1. Install dependencies:
npm install
npm run build
  1. Add to ~/.claude.json
{
...,
"mcpServers": {
    "linear-mcp": {
      "type": "stdio",
      "command": "node",
      "args": [
        "/PATH/TO/linear-mcp/dist/mcp-server.js"
      ],
      "env": {
        "LINEAR_API_KEY": "YOUR_API_KEY"
      }
    }
  }
}

Linear API keys can be created by going to Workspace Settings > Security & Access > "New API key"


Core Capabilities

  • JSON-RPC 2.0 API: Full CRUD operations on Linear entities (issues, comments, projects, cycles, teams, users)
  • Smart Content Chunking: Automatically splits large content across multiple comments - never truncates data
  • Human-Readable Identifiers: Use team keys (TEAM), issue identifiers (TEAM-123), project names, and user emails instead of UUIDs
  • Markdown Export: Get full issue content with all comments in clean markdown format
  • Server-Sent Events (SSE): Real-time push updates with automatic heartbeat (15s)
  • Webhook Integration: Receive and broadcast Linear webhook events as MCP notifications

Reliability & Performance

  • Rate Limiting: Automatic exponential backoff respecting Linear's 1,500 req/hr limit
  • Query Complexity Management: Automatically handles Linear's 10,000 complexity limit by splitting queries
  • Error Recovery: Comprehensive error handling with detailed JSON-RPC error responses
  • Observability: Prometheus metrics and structured JSON logging with Pino

Available RPC Methods

Issues

  • linear.issues.list - List issues with pagination (accepts team key: "TEAM")
  • linear.issues.get - Get issue by identifier (e.g., "TEAM-123")
  • linear.issues.create - Create issue (accepts team key, state name, label names)
  • linear.issues.update - Update issue (accepts issue identifier)
  • linear.issues.delete - Archive an issue (accepts issue identifier)
  • linear.issues.markdown - Get full issue as markdown (includes all comments)

Comments

  • linear.comments.list - List comments with positions (accepts issue identifier)
  • linear.comments.create - Create comment with position tracking (accepts issue identifier)

Projects

  • linear.projects.list - List all projects (no UUIDs in response)
  • linear.projects.get - Get project details (accepts project name)
  • linear.projects.create - Create new project (accepts team keys)
  • linear.projects.update - Update project (accepts project name)

Teams, Cycles, Users

  • linear.teams.list - List all teams (returns team keys, no UUIDs)
  • linear.teams.get - Get team details (accepts team key)
  • linear.cycles.list - List cycles for a team (accepts team key)
  • linear.users.get - Get user details (accepts email address)
  • linear.users.list - List workspace users
  • linear.users.me - Get authenticated user
  • linear.capabilities - Get server capabilities and features

💡 Usage Examples

Get Issue as Markdown

# Using identifier
curl -X POST http://localhost:3000/rpc \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "linear.issues.markdown",
    "params": {"id": "TEAM-123"},
    "id": 1
  }'

# Response includes formatted markdown with issue details and all comments

Create Issue with Human-Readable Identifiers

# Use team keys, state names, label names, and user emails
curl -X POST http://localhost:3000/rpc \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "linear.issues.create",
    "params": {
      "title": "RFC: New Architecture",
      "description": "... 100KB of content ...",
      "teamId": "TEAM",
      "stateId": "In Progress",
      "assigneeId": "user@example.com",
      "labelIds": ["bug", "high-priority"]
    },
    "id": 2
  }'

# Response (no UUIDs):
# {"identifier": "TEAM-123", "title": "...", "url": "...", "chunked": true, "chunks": 2}

Subscribe to Real-time Updates

# Connect to SSE stream
curl -N http://localhost:3000/stream \
  -H "X-Client-Id: my-client-123"

# Configure Linear webhook to POST to:
# https://your-domain.com/webhook

List Issues with Human-Readable Filters

curl -X POST http://localhost:3000/rpc \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "linear.issues.list",
    "params": {
      "teamId": "TEAM",
      "projectId": "Mobile App",
      "assigneeId": "john@example.com",
      "stateId": "Done",
      "limit": 10
    },
    "id": 3
  }'

🔗 Related Links

🐛 Troubleshooting

"Field membership argument userId required"

The server handles this automatically by using raw GraphQL queries for affected endpoints.

"Query too complex"

The server automatically splits complex queries. If you still see this error, please file an issue.

SSE Connection Drops

The server sends heartbeats every 15 seconds. Check your proxy/firewall timeout settings.

Rate Limiting

The server implements exponential backoff. If you're hitting limits frequently, consider reducing request frequency or batch operations.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选