Skip to content
VS Code

Linear Project for VS Code

org.openlyuseful/linear-project

Scope-gated Linear project administration with optional GitHub and Obsidian evidence adapters

client:VS Code transport:stdio runtime:npm

Install Linear Project in VS Code

.vscode/mcp.json

{
  "inputs": [
    {
      "type": "promptString",
      "id": "linear-api-key",
      "description": "LINEAR_API_KEY",
      "password": true
    },
    {
      "type": "promptString",
      "id": "linear-access-token",
      "description": "LINEAR_ACCESS_TOKEN",
      "password": true
    },
    {
      "type": "promptString",
      "id": "linear-allowed-organization-id",
      "description": "LINEAR_ALLOWED_ORGANIZATION_ID",
      "password": true
    },
    {
      "type": "promptString",
      "id": "linear-allowed-team-ids",
      "description": "LINEAR_ALLOWED_TEAM_IDS",
      "password": true
    },
    {
      "type": "promptString",
      "id": "linear-allowed-project-ids",
      "description": "LINEAR_ALLOWED_PROJECT_IDS",
      "password": true
    },
    {
      "type": "promptString",
      "id": "linear-allowed-scope-codes",
      "description": "LINEAR_ALLOWED_SCOPE_CODES",
      "password": true
    },
    {
      "type": "promptString",
      "id": "github-token",
      "description": "GITHUB_TOKEN",
      "password": true
    },
    {
      "type": "promptString",
      "id": "github-allowed-repositories",
      "description": "GITHUB_ALLOWED_REPOSITORIES",
      "password": true
    },
    {
      "type": "promptString",
      "id": "obsidian-vault-path",
      "description": "OBSIDIAN_VAULT_PATH",
      "password": true
    },
    {
      "type": "promptString",
      "id": "obsidian-vault-name",
      "description": "OBSIDIAN_VAULT_NAME",
      "password": true
    },
    {
      "type": "promptString",
      "id": "obsidian-allowed-directories",
      "description": "OBSIDIAN_ALLOWED_DIRECTORIES",
      "password": true
    },
    {
      "type": "promptString",
      "id": "mcp-writes-enabled",
      "description": "MCP_WRITES_ENABLED",
      "password": true
    },
    {
      "type": "promptString",
      "id": "mcp-write-window-expires-at",
      "description": "MCP_WRITE_WINDOW_EXPIRES_AT",
      "password": true
    },
    {
      "type": "promptString",
      "id": "mcp-audit-log-path",
      "description": "MCP_AUDIT_LOG_PATH",
      "password": true
    }
  ],
  "servers": {
    "linear-project": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@openly-useful/linear-project-mcp-server"
      ],
      "env": {
        "LINEAR_API_KEY": "${input:linear-api-key}",
        "LINEAR_ACCESS_TOKEN": "${input:linear-access-token}",
        "LINEAR_ALLOWED_ORGANIZATION_ID": "${input:linear-allowed-organization-id}",
        "LINEAR_ALLOWED_TEAM_IDS": "${input:linear-allowed-team-ids}",
        "LINEAR_ALLOWED_PROJECT_IDS": "${input:linear-allowed-project-ids}",
        "LINEAR_ALLOWED_SCOPE_CODES": "${input:linear-allowed-scope-codes}",
        "GITHUB_TOKEN": "${input:github-token}",
        "GITHUB_ALLOWED_REPOSITORIES": "${input:github-allowed-repositories}",
        "OBSIDIAN_VAULT_PATH": "${input:obsidian-vault-path}",
        "OBSIDIAN_VAULT_NAME": "${input:obsidian-vault-name}",
        "OBSIDIAN_ALLOWED_DIRECTORIES": "${input:obsidian-allowed-directories}",
        "MCP_WRITES_ENABLED": "${input:mcp-writes-enabled}",
        "MCP_WRITE_WINDOW_EXPIRES_AT": "${input:mcp-write-window-expires-at}",
        "MCP_AUDIT_LOG_PATH": "${input:mcp-audit-log-path}"
      }
    }
  }
}

VS Code prompts for each input the first time the server starts, so no secret is written to the file. VS Code docs

Linear Project in other clients