Lets Claude use the Linear API to manage teams, issues, projects and cycles.
Setup
Choose your client, copy the config, then fill in any required environment variables.
claude mcp add linear-server-cpropster --env LINEAR_CLIENT_ID='<LINEAR_CLIENT_ID>' --env LINEAR_CLIENT_SECRET='<LINEAR_CLIENT_SECRET>' --env LINEAR_REDIRECT_URI='<LINEAR_REDIRECT_URI>' --env LINEAR_REFRESH_TOKEN='<LINEAR_REFRESH_TOKEN>' -- node /path/to/linear-mcp-server/build/index.js~/.codex/config.toml
[mcp_servers.linear-server-cpropster]
command = "node"
args = ["/path/to/linear-mcp-server/build/index.js"]
env = { LINEAR_CLIENT_ID = "<LINEAR_CLIENT_ID>", LINEAR_CLIENT_SECRET = "<LINEAR_CLIENT_SECRET>", LINEAR_REDIRECT_URI = "<LINEAR_REDIRECT_URI>", LINEAR_REFRESH_TOKEN = "<LINEAR_REFRESH_TOKEN>" }
# codex mcp add linear-server-cpropster --env LINEAR_CLIENT_ID='<LINEAR_CLIENT_ID>' --env LINEAR_CLIENT_SECRET='<LINEAR_CLIENT_SECRET>' --env LINEAR_REDIRECT_URI='<LINEAR_REDIRECT_URI>' --env LINEAR_REFRESH_TOKEN='<LINEAR_REFRESH_TOKEN>' -- node /path/to/linear-mcp-server/build/index.js~/.cursor/mcp.json
{
"mcpServers": {
"linear-server-cpropster": {
"command": "node",
"args": [
"/path/to/linear-mcp-server/build/index.js"
],
"env": {
"LINEAR_CLIENT_ID": "<LINEAR_CLIENT_ID>",
"LINEAR_CLIENT_SECRET": "<LINEAR_CLIENT_SECRET>",
"LINEAR_REDIRECT_URI": "<LINEAR_REDIRECT_URI>",
"LINEAR_REFRESH_TOKEN": "<LINEAR_REFRESH_TOKEN>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"linear-server-cpropster": {
"type": "stdio",
"command": "node",
"args": [
"/path/to/linear-mcp-server/build/index.js"
],
"env": {
"LINEAR_CLIENT_ID": "<LINEAR_CLIENT_ID>",
"LINEAR_CLIENT_SECRET": "<LINEAR_CLIENT_SECRET>",
"LINEAR_REDIRECT_URI": "<LINEAR_REDIRECT_URI>",
"LINEAR_REFRESH_TOKEN": "<LINEAR_REFRESH_TOKEN>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"linear-server-cpropster": {
"command": "node",
"args": [
"/path/to/linear-mcp-server/build/index.js"
],
"env": {
"LINEAR_CLIENT_ID": "<LINEAR_CLIENT_ID>",
"LINEAR_CLIENT_SECRET": "<LINEAR_CLIENT_SECRET>",
"LINEAR_REDIRECT_URI": "<LINEAR_REDIRECT_URI>",
"LINEAR_REFRESH_TOKEN": "<LINEAR_REFRESH_TOKEN>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"linear-server-cpropster": {
"command": "node",
"args": [
"/path/to/linear-mcp-server/build/index.js"
],
"env": {
"LINEAR_CLIENT_ID": "<LINEAR_CLIENT_ID>",
"LINEAR_CLIENT_SECRET": "<LINEAR_CLIENT_SECRET>",
"LINEAR_REDIRECT_URI": "<LINEAR_REDIRECT_URI>",
"LINEAR_REFRESH_TOKEN": "<LINEAR_REFRESH_TOKEN>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"linear-server-cpropster": {
"command": "node",
"args": [
"/path/to/linear-mcp-server/build/index.js"
],
"env": {
"LINEAR_CLIENT_ID": "<LINEAR_CLIENT_ID>",
"LINEAR_CLIENT_SECRET": "<LINEAR_CLIENT_SECRET>",
"LINEAR_REDIRECT_URI": "<LINEAR_REDIRECT_URI>",
"LINEAR_REFRESH_TOKEN": "<LINEAR_REFRESH_TOKEN>"
}
}
}
}Environment variables
LINEAR_CLIENT_IDLINEAR_CLIENT_SECRETLINEAR_REDIRECT_URILINEAR_REFRESH_TOKEN
Replace the placeholders with your own credentials and keep them out of version control.