A production-ready Model Context Protocol server for the Linear API.
This template lets Claude Desktop, Cursor, Windsurf, Claude Code, and other MCP-compatible clients list Linear issues, inspect issue details, create issues, list teams, and list projects through controlled Linear tools.
Built as a starter template for teams that want a secure baseline before adding company-specific issue tracking, engineering workflow, and project management automation.
This repository is useful for:
- developers building AI assistants for Linear workspaces,
- engineering teams connecting Linear to Claude, Cursor, or AI agents,
- platform engineers who need a clean TypeScript MCP server example,
- agencies building Linear automation for clients,
- teams that want controlled Linear read/write tools with authentication and rate limiting.
- TypeScript + Express MCP server
- Linear GraphQL API client
- API key protection for
/mcp - Rate limiting for MCP requests
- Health endpoint at
/health - Structured Pino logging
- Zod-based environment validation
- MCP tools for issues, teams, and projects
- Jest + Supertest test setup
- GitHub Actions CI workflow
- Dockerfile and Docker Compose support
Claude Desktop / Cursor / Windsurf
│
│ HTTP POST /mcp
│ X-API-Key: <MCP_API_KEY>
▼
Express Server
│
├── JSON body parser
├── Rate limiter
├── API key middleware
│
▼
MCP SDK Handler
│
├── list_issues ─┐
├── get_issue ─┤
├── create_issue ─┤──► Linear GraphQL API
├── list_teams ─┤
└── list_projects ─┘
GET /health → Linear API dependency status
See the larger diagram in docs/architecture.md.
The complete production-ready Linear MCP Server template is available on GitHub.
Repository:
https://github.com/kamolc4/linear-mcp-server
The repository includes:
- Complete TypeScript source code
- Linear GraphQL API client
- MCP tools for issues, teams, and projects
- GitHub Actions CI
- Jest test suite
- MIT License
- Claude Desktop and Cursor configuration
- Production deployment examples
Fork the repository or download it as a ZIP to start building immediately.
| Tool | Purpose |
|---|---|
list_issues |
List Linear issues with optional filters for team, assignee, state, and priority. |
get_issue |
Retrieve a Linear issue by ID or identifier such as ENG-123. |
create_issue |
Create a new Linear issue in a selected team. |
list_teams |
List Linear teams available to the configured API key. |
list_projects |
List Linear projects, optionally filtered by team. |
# Clone repository
git clone https://github.com/kamolc4/linear-mcp-server.git
cd linear-mcp-server
# Install dependencies
npm cicp .env.example .envEdit .env:
PORT=3000
NODE_ENV=development
LOG_LEVEL=info
LINEAR_API_KEY=lin_api_your_linear_api_key
LINEAR_API_URL=https://api.linear.app/graphql
MCP_API_KEY=replace-with-a-long-random-secret
RATE_LIMIT_WINDOW_MS=60000
RATE_LIMIT_MAX_REQUESTS=100npm run devcurl http://localhost:3000/health \
-H "X-API-Key: replace-with-your-mcp-api-key"curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "X-API-Key: replace-with-your-mcp-api-key" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'This starter template uses a Linear API key.
- Open Linear.
- Go to workspace settings.
- Open API settings.
- Create a personal API key or use a workspace token appropriate for your use case.
- Add it to
.envasLINEAR_API_KEY.
For production, use a managed secret store and rotate API keys regularly.
If your Linear deployment uses OAuth or a brokered token service, replace the static LINEAR_API_KEY loading with per-user or per-workspace token resolution.
Build and start the server first:
npm run build
npm startThen add an MCP server entry in your Claude Desktop configuration:
{
"mcpServers": {
"linear": {
"url": "http://localhost:3000/mcp",
"headers": {
"X-API-Key": "replace-with-your-mcp-api-key"
}
}
}
}Restart Claude Desktop after editing the configuration.
In Cursor, add a new MCP server using the HTTP endpoint:
{
"name": "linear",
"url": "http://localhost:3000/mcp",
"headers": {
"X-API-Key": "replace-with-your-mcp-api-key"
}
}Then restart Cursor or reload the MCP server list.
This template is safer than a minimal demo, but you should harden it before production use.
Recommended production changes:
- Store
LINEAR_API_KEYandMCP_API_KEYin a managed secret manager, not in plain.envfiles. - Rotate
MCP_API_KEYregularly. - Add per-user or per-workspace authorization if multiple users will access the server.
- Restrict write tools such as
create_issuebehind approvals. - Add audit logs for every MCP tool call.
- Use HTTPS in production.
- Review Linear API permissions and keep scopes minimal.
- Add monitoring for Linear API failures and rate limit responses.
Verify this server with MCPForge:
https://www.mcpforge.tech/verify
MCPForge can help review:
- exposed tools,
- authentication behavior,
- health checks,
- compatibility with MCP clients,
- risk level of write operations,
- security posture before publishing or deployment.
Verified MCP profile:
https://www.mcpforge.tech/verified/linear-mcp
Starter template on MCPForge:
https://www.mcpforge.tech/code/linear-api-client-template
Read the complete Linear MCP Server guide:
https://www.mcpforge.tech/blog/linear-mcp-server
Related MCPForge guides:
- Linear MCP OAuth: https://www.mcpforge.tech/blog/linear-mcp-oauth
- Linear MCP Setup: https://www.mcpforge.tech/blog/linear-mcp-setup
- Linear MCP with Claude: https://www.mcpforge.tech/blog/linear-mcp-with-claude
- Linear MCP with Cursor: https://www.mcpforge.tech/blog/linear-mcp-with-cursor
- Linear MCP Security Review: https://www.mcpforge.tech/blog/linear-mcp-security-review
- Best MCP Servers for Claude Code: https://www.mcpforge.tech/blog/best-mcp-servers-for-claude-code
A common production setup:
- Deploy this service to Railway, Render, Fly.io, AWS, GCP, Azure, or a private Kubernetes cluster.
- Configure environment variables in the hosting provider.
- Set
LINEAR_API_KEYandMCP_API_KEYas protected secrets. - Verify
/healthbefore connecting production MCP clients. - Test
/mcpwithtools/list. - Run a public or private verification with MCPForge.
npm run lint
npm run typecheck
npm test
npm run build| Method | Path | Description |
|---|---|---|
GET |
/health |
Health and Linear connectivity check. |
POST |
/mcp |
MCP endpoint protected by X-API-Key. |
Latest stable release:
v1.0.0
See the Releases page for the full changelog.
Contributions are welcome.
If you want to improve this Linear MCP Server template, open an issue or submit a pull request.
Looking for other production-ready MCP Server templates?
- GitHub MCP Server
- Slack MCP Server
- Stripe MCP Server
- Notion MCP Server
- Shopify MCP Server
- HubSpot MCP Server
- PostgreSQL MCP Server
Browse the complete collection:
https://www.mcpforge.tech/code
MIT — see LICENSE.