L
Linear (Go)
community
other
Allows LLM to interact with Linear's API via a single static binary.
Linear MCP Server
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.
Features
- Create, update, and search Linear issues
- Get issues assigned to a user
- Add comments to issues
- Retrieve team information
- Rate-limited API requests to respect Linear's API limits
Prerequisites
- Go 1.23 or higher
- Linear API key
Installation
From Releases
Pre-built binaries are available for Linux, macOS, and Windows on the GitHub Releases page.
- Download the appropriate binary for your platform
- Make it executable (Linux/macOS):
chmod +x linear-mcp-go-*
- Run the binary as described in the Usage section
Automated
# 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
Usage
Running the Server
- Set your Linear API key as an environment variable:
export LINEAR_API_KEY=your_linear_api_key
- Run the server:
# 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.
Setting Up for AI Assistants
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:
- Checks if the Linear MCP binary is already installed
- Copies the current binary to the installation directory if needed
- Configures the AI assistant to use the Linear MCP server
- Sets up auto-approval for specified tools if requested
The
--auto-approve
flag can be used to specify which tools should be auto-approved in the Cline configuration:
: Auto-approves all read-only tools (--auto-approve=allow-read-only
,linear_search_issues
,linear_get_user_issues
,linear_get_issue
)linear_get_teams
: Auto-approves the specified comma-separated list of tools--auto-approve=tool1,tool2,...
Currently supported AI assistants:
- Cline (VSCode extension)
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.Available Tools
linear_create_issue
Creates a new Linear issue with specified details. Supports creating sub-issues and assigning labels.
Parameters:
(required): Issue titletitle
(required): Team identifier (key, UUID or name)team
: Issue descriptiondescription
: Priority (0-4)priority
: Issue statusstatus
: Optional parent issue ID to create a sub-issueparentIssue
: Optional comma-separated list of label IDs to assignlabels
linear_update_issue
Updates an existing Linear issue's properties.
Parameters:
(required): Issue IDid
: New titletitle
: New descriptiondescription
: New priority (0-4)priority
: New statusstatus
linear_search_issues
Searches Linear issues using flexible criteria.
Parameters:
: Optional text to search in title and descriptionquery
: Filter by team IDteamId
: Filter by status name (e.g., 'In Progress', 'Done')status
: Filter by assignee's user IDassigneeId
: Filter by label names (comma-separated)labels
: Filter by priority (1=urgent, 2=high, 3=normal, 4=low)priority
: Filter by estimate pointsestimate
: Include archived issues in results (default: false)includeArchived
: Max results to return (default: 10)limit
linear_get_user_issues
Retrieves issues assigned to a specific user or the authenticated user.
Parameters:
: Optional user ID. If not provided, returns authenticated user's issuesuserId
: Include archived issues in resultsincludeArchived
: Maximum number of issues to return (default: 50)limit
linear_get_issue
Retrieves a single Linear issue by its ID.
Parameters:
(required): ID of the issue to retrieveissueId
linear_add_comment
Adds a comment to an existing Linear issue.
Parameters:
(required): ID of the issue to comment onissueId
(required): Comment text in markdown formatbody
: Optional custom username to show for the commentcreateAsUser
: Optional avatar URL for the commentdisplayIconUrl
linear_get_teams
Retrieves Linear teams with an optional name filter.
Parameters:
: Optional team name filter. Returns teams whose names contain this string.name
Test
Tests are implemented using
go-vcr
, and executed against https://linear.app/linear-mcp-go-test.Execute tests
Using the existing recordings (cassettes):
go test -v ./...
Re-recording test:
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.
Release Process
The project uses GitHub Actions for automated testing and releases:
- All pushes to the main branch and pull requests are automatically tested
- When a tag matching the pattern
(e.g.,v*
) is pushed, a new release is automatically createdv1.0.0
- Binaries for Linux, macOS, and Windows are built and attached to the release
To create a new release:
- Update the version in
pkg/server/server.go
- Commit the changes
- Create and push a tag matching the version:
git tag v1.0.0 git push origin v1.0.0
The GitHub Actions workflow will automatically create a release with the appropriate binaries.
License
MIT
Related Servers
S
Sequential Thinking
reference
Dynamic and reflective problem-solving through thought sequences
View Details