GitHub - geropl/linear-mcp-go: linear MCP server based on mcp-go (original) (raw)

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

Prerequisites

Installation

From Releases

Pre-built binaries are available for Linux, macOS, and Windows on the GitHub Releases page.

  1. Download the appropriate binary for your platform
  2. Make it executable (Linux/macOS):
  3. 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

  1. Set your Linear API key as an environment variable:

export LINEAR_API_KEY=your_linear_api_key

  1. 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:

  1. Checks if the Linear MCP binary is already installed
  2. Copies the current binary to the installation directory if needed
  3. Configures the AI assistant to use the Linear MCP server
  4. 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:

Currently supported AI assistants:

By default, the server runs in read-only mode, which means the following tools are disabled:

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:

linear_update_issue

Updates an existing Linear issue's properties.

Parameters:

linear_search_issues

Searches Linear issues using flexible criteria.

Parameters:

linear_get_user_issues

Retrieves issues assigned to a specific user or the authenticated user.

Parameters:

linear_get_issue

Retrieves a single Linear issue by its ID.

Parameters:

linear_add_comment

Adds a comment to an existing Linear issue.

Parameters:

linear_get_teams

Retrieves Linear teams with an optional name filter.

Parameters:

Test

Tests are implemented using go-vcr, and executed against https://linear.app/linear-mcp-go-test.

Execute tests

Using the existing recordings (cassettes):

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:

  1. All pushes to the main branch and pull requests are automatically tested
  2. When a tag matching the pattern v* (e.g., v1.0.0) is pushed, a new release is automatically created
  3. Binaries for Linux, macOS, and Windows are built and attached to the release

To create a new release:

  1. Update the version in pkg/server/server.go
  2. Commit the changes
  3. 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