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