by geropl
Provides tools to interact with the Linear issue‑tracking system via the MCP protocol, enabling creation, updating, searching, commenting on issues, and retrieving team information while respecting API rate limits.
Linear MCP Server exposes Linear's issue‑tracking capabilities through the MCP protocol, allowing AI assistants and command‑line tools to manage issues, comments, and team data programmatically.
export LINEAR_API_KEY=your_linear_api_key
./linear-mcp-go serve
Add --write-access
to enable creation, updates, and comments.setup
command:
./linear-mcp-go setup [--write-access] [--auto-approve=...] [--tool=cline]
This copies the binary, updates the assistant configuration, and optionally auto‑approves selected tools.--write-access
Q: Do I need to compile the binary? A: Pre‑built binaries are available on the GitHub Releases page for Linux, macOS, and Windows.
Q: How do I enable write operations?
A: Pass the --write-access
flag to serve
or setup
commands.
Q: Can I use this with other AI assistants besides Cline? A: Currently only Cline (VSCode extension) is supported, but the MCP protocol can be adopted by any compatible assistant.
Q: How are API rate limits handled? A: The server includes built‑in rate limiting to automatically throttle requests according to Linear's limits.
Q: Where are the tests run?
A: Tests use go-vcr
against the sandbox Linear instance linear.app/linear-mcp-go-test
and can be executed with go test -v ./...
.
A Model Context Protocol (MCP) server for Linear, written in Go. This server provides tools for interacting with the Linear API through the MCP protocol.
Pre-built binaries are available for Linux, macOS, and Windows on the GitHub Releases page.
chmod +x linear-mcp-go-*
# Download linux binary for the latest release
RELEASE=$(curl -s https://api.github.com/repos/geropl/linear-mcp-go/releases/latest)
DOWNLOAD_URL=$(echo $RELEASE | jq -r '.assets[] | select(.name | contains("linux")) | .browser_download_url')
curl -L -o ./linear-mcp-go $DOWNLOAD_URL
chmod +x ./linear-mcp-go
# Setup the mcp server (.gitpod.yml, dotfiles repo, etc.)
./linear-mcp-go setup --tool=cline
export LINEAR_API_KEY=your_linear_api_key
# Run in read-only mode (default)
./linear-mcp-go serve
# Run with write access enabled
./linear-mcp-go serve --write-access
The server will start and listen for MCP requests on stdin/stdout.
The setup
command automates the installation and configuration process for various AI assistants:
# Set your Linear API key as an environment variable
export LINEAR_API_KEY=your_linear_api_key
# Set up for Cline (default)
./linear-mcp-go setup
# Set up with write access enabled
./linear-mcp-go setup --write-access
# Set up with auto-approval for read-only tools
./linear-mcp-go setup --auto-approve=allow-read-only
# Set up with specific tools auto-approved
./linear-mcp-go setup --auto-approve=linear_get_issue,linear_search_issues
# Set up with write access and auto-approval for read-only tools
./linear-mcp-go setup --write-access --auto-approve=allow-read-only
# Set up for a different tool (only "cline" supported for now)
./linear-mcp-go setup --tool=cline
This command:
The --auto-approve
flag can be used to specify which tools should be auto-approved in the Cline configuration:
--auto-approve=allow-read-only
: Auto-approves all read-only tools (linear_search_issues
, linear_get_user_issues
, linear_get_issue
, linear_get_teams
)--auto-approve=tool1,tool2,...
: Auto-approves the specified comma-separated list of toolsCurrently supported AI assistants:
By default, the server runs in read-only mode, which means the following tools are disabled:
linear_create_issue
linear_update_issue
linear_add_comment
To enable these tools, use the --write-access=true
flag.
Creates a new Linear issue with specified details. Supports creating sub-issues and assigning labels.
Parameters:
title
(required): Issue titleteam
(required): Team identifier (key, UUID or name)description
: Issue descriptionpriority
: Priority (0-4)status
: Issue statusparentIssue
: Optional parent issue ID to create a sub-issuelabels
: Optional comma-separated list of label IDs to assignUpdates an existing Linear issue's properties.
Parameters:
id
(required): Issue IDtitle
: New titledescription
: New descriptionpriority
: New priority (0-4)status
: New statusSearches Linear issues using flexible criteria.
Parameters:
query
: Optional text to search in title and descriptionteamId
: Filter by team IDstatus
: Filter by status name (e.g., 'In Progress', 'Done')assigneeId
: Filter by assignee's user IDlabels
: Filter by label names (comma-separated)priority
: Filter by priority (1=urgent, 2=high, 3=normal, 4=low)estimate
: Filter by estimate pointsincludeArchived
: Include archived issues in results (default: false)limit
: Max results to return (default: 10)Retrieves issues assigned to a specific user or the authenticated user.
Parameters:
userId
: Optional user ID. If not provided, returns authenticated user's issuesincludeArchived
: Include archived issues in resultslimit
: Maximum number of issues to return (default: 50)Retrieves a single Linear issue by its ID.
Parameters:
issueId
(required): ID of the issue to retrieveAdds a comment to an existing Linear issue.
Parameters:
issueId
(required): ID of the issue to comment onbody
(required): Comment text in markdown formatcreateAsUser
: Optional custom username to show for the commentdisplayIconUrl
: Optional avatar URL for the commentRetrieves Linear teams with an optional name filter.
Parameters:
name
: Optional team name filter. Returns teams whose names contain this string.Tests are implemented using go-vcr
, and executed against https://linear.app/linear-mcp-go-test.
Using the existing recordings (cassettes):
go test -v ./...
Requires LINEAR_API_KEY
to be set.
go test -v -record=true ./...
This will update all tests that don't alter remote state.
go test -v -recordWrites=true ./...
This will re-run all tests, including some that might alter the outcome of other tests cases, which might require further manual work to adjust.
go test -v -golden=true ./...
Updates all .golden fields.
The project uses GitHub Actions for automated testing and releases:
v*
(e.g., v1.0.0
) is pushed, a new release is automatically createdTo create a new release:
pkg/server/server.go
git tag v1.0.0
git push origin v1.0.0
The GitHub Actions workflow will automatically create a release with the appropriate binaries.
MIT
Please log in to share your review and rating for this MCP.
Explore related MCPs that share similar capabilities and solve comparable challenges
by zed-industries
A high‑performance, multiplayer code editor designed for speed and collaboration.
by modelcontextprotocol
Model Context Protocol Servers
by modelcontextprotocol
A Model Context Protocol server for Git repository interaction and automation.
by modelcontextprotocol
A Model Context Protocol server that provides time and timezone conversion capabilities.
by cline
An autonomous coding assistant that can create and edit files, execute terminal commands, and interact with a browser directly from your IDE, operating step‑by‑step with explicit user permission.
by continuedev
Enables faster shipping of code by integrating continuous AI agents across IDEs, terminals, and CI pipelines, offering chat, edit, autocomplete, and customizable agent workflows.
by upstash
Provides up-to-date, version‑specific library documentation and code examples directly inside LLM prompts, eliminating outdated information and hallucinated APIs.
by github
Connects AI tools directly to GitHub, enabling natural‑language interactions for repository browsing, issue and pull‑request management, CI/CD monitoring, code‑security analysis, and team collaboration.
by daytonaio
Provides a secure, elastic infrastructure that creates isolated sandboxes for running AI‑generated code with sub‑90 ms startup, unlimited persistence, and OCI/Docker compatibility.