Scope-gated Linear project administration with optional GitHub and Obsidian evidence adapters
Connect Runs on your machine
claude mcp add linear-project -e LINEAR_API_KEY=<LINEAR_API_KEY> -e LINEAR_ACCESS_TOKEN=<LINEAR_ACCESS_TOKEN> -e LINEAR_ALLOWED_ORGANIZATION_ID=<LINEAR_ALLOWED_ORGANIZATION_ID> -e LINEAR_ALLOWED_TEAM_IDS=<LINEAR_ALLOWED_TEAM_IDS> -e LINEAR_ALLOWED_PROJECT_IDS=<LINEAR_ALLOWED_PROJECT_IDS> -e LINEAR_ALLOWED_SCOPE_CODES=<LINEAR_ALLOWED_SCOPE_CODES> -e GITHUB_TOKEN=<GITHUB_TOKEN> -e GITHUB_ALLOWED_REPOSITORIES=<GITHUB_ALLOWED_REPOSITORIES> -e OBSIDIAN_VAULT_PATH=<OBSIDIAN_VAULT_PATH> -e OBSIDIAN_VAULT_NAME=<OBSIDIAN_VAULT_NAME> -e OBSIDIAN_ALLOWED_DIRECTORIES=<OBSIDIAN_ALLOWED_DIRECTORIES> -e MCP_WRITES_ENABLED=<MCP_WRITES_ENABLED> -e MCP_WRITE_WINDOW_EXPIRES_AT=<MCP_WRITE_WINDOW_EXPIRES_AT> -e MCP_AUDIT_LOG_PATH=<MCP_AUDIT_LOG_PATH> -- npx -y @openly-useful/[email protected]
{
"mcpServers": {
"linear-project": {
"command": "npx",
"args": [
"-y",
"@openly-useful/[email protected]"
],
"env": {
"LINEAR_API_KEY": "<LINEAR_API_KEY>",
"LINEAR_ACCESS_TOKEN": "<LINEAR_ACCESS_TOKEN>",
"LINEAR_ALLOWED_ORGANIZATION_ID": "<LINEAR_ALLOWED_ORGANIZATION_ID>",
"LINEAR_ALLOWED_TEAM_IDS": "<LINEAR_ALLOWED_TEAM_IDS>",
"LINEAR_ALLOWED_PROJECT_IDS": "<LINEAR_ALLOWED_PROJECT_IDS>",
"LINEAR_ALLOWED_SCOPE_CODES": "<LINEAR_ALLOWED_SCOPE_CODES>",
"GITHUB_TOKEN": "<GITHUB_TOKEN>",
"GITHUB_ALLOWED_REPOSITORIES": "<GITHUB_ALLOWED_REPOSITORIES>",
"OBSIDIAN_VAULT_PATH": "<OBSIDIAN_VAULT_PATH>",
"OBSIDIAN_VAULT_NAME": "<OBSIDIAN_VAULT_NAME>",
"OBSIDIAN_ALLOWED_DIRECTORIES": "<OBSIDIAN_ALLOWED_DIRECTORIES>",
"MCP_WRITES_ENABLED": "<MCP_WRITES_ENABLED>",
"MCP_WRITE_WINDOW_EXPIRES_AT": "<MCP_WRITE_WINDOW_EXPIRES_AT>",
"MCP_AUDIT_LOG_PATH": "<MCP_AUDIT_LOG_PATH>"
}
}
}
}
{
"mcpServers": {
"linear-project": {
"command": "npx",
"args": [
"-y",
"@openly-useful/[email protected]"
],
"env": {
"LINEAR_API_KEY": "<LINEAR_API_KEY>",
"LINEAR_ACCESS_TOKEN": "<LINEAR_ACCESS_TOKEN>",
"LINEAR_ALLOWED_ORGANIZATION_ID": "<LINEAR_ALLOWED_ORGANIZATION_ID>",
"LINEAR_ALLOWED_TEAM_IDS": "<LINEAR_ALLOWED_TEAM_IDS>",
"LINEAR_ALLOWED_PROJECT_IDS": "<LINEAR_ALLOWED_PROJECT_IDS>",
"LINEAR_ALLOWED_SCOPE_CODES": "<LINEAR_ALLOWED_SCOPE_CODES>",
"GITHUB_TOKEN": "<GITHUB_TOKEN>",
"GITHUB_ALLOWED_REPOSITORIES": "<GITHUB_ALLOWED_REPOSITORIES>",
"OBSIDIAN_VAULT_PATH": "<OBSIDIAN_VAULT_PATH>",
"OBSIDIAN_VAULT_NAME": "<OBSIDIAN_VAULT_NAME>",
"OBSIDIAN_ALLOWED_DIRECTORIES": "<OBSIDIAN_ALLOWED_DIRECTORIES>",
"MCP_WRITES_ENABLED": "<MCP_WRITES_ENABLED>",
"MCP_WRITE_WINDOW_EXPIRES_AT": "<MCP_WRITE_WINDOW_EXPIRES_AT>",
"MCP_AUDIT_LOG_PATH": "<MCP_AUDIT_LOG_PATH>"
}
}
}
}
{
"servers": {
"linear-project": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@openly-useful/[email protected]"
],
"env": {
"LINEAR_API_KEY": "<LINEAR_API_KEY>",
"LINEAR_ACCESS_TOKEN": "<LINEAR_ACCESS_TOKEN>",
"LINEAR_ALLOWED_ORGANIZATION_ID": "<LINEAR_ALLOWED_ORGANIZATION_ID>",
"LINEAR_ALLOWED_TEAM_IDS": "<LINEAR_ALLOWED_TEAM_IDS>",
"LINEAR_ALLOWED_PROJECT_IDS": "<LINEAR_ALLOWED_PROJECT_IDS>",
"LINEAR_ALLOWED_SCOPE_CODES": "<LINEAR_ALLOWED_SCOPE_CODES>",
"GITHUB_TOKEN": "<GITHUB_TOKEN>",
"GITHUB_ALLOWED_REPOSITORIES": "<GITHUB_ALLOWED_REPOSITORIES>",
"OBSIDIAN_VAULT_PATH": "<OBSIDIAN_VAULT_PATH>",
"OBSIDIAN_VAULT_NAME": "<OBSIDIAN_VAULT_NAME>",
"OBSIDIAN_ALLOWED_DIRECTORIES": "<OBSIDIAN_ALLOWED_DIRECTORIES>",
"MCP_WRITES_ENABLED": "<MCP_WRITES_ENABLED>",
"MCP_WRITE_WINDOW_EXPIRES_AT": "<MCP_WRITE_WINDOW_EXPIRES_AT>",
"MCP_AUDIT_LOG_PATH": "<MCP_AUDIT_LOG_PATH>"
}
}
}
}
Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.
Tools
This server runs locally, so its tools are listed by your MCP client once it starts.
Environment variables
| Name | Description |
|---|---|
LINEAR_API_KEYOptional, secret | Linear API key. Configure this or LINEAR_ACCESS_TOKEN through a protected secret store. |
LINEAR_ACCESS_TOKENOptional, secret | Linear OAuth access token. Configure this or LINEAR_API_KEY through a protected secret store. |
LINEAR_ALLOWED_ORGANIZATION_IDRequired | Exact Linear organization ID allowed for scoped operations. |
LINEAR_ALLOWED_TEAM_IDSOptional | Comma-separated exact Linear team IDs. Required when reusing an existing team; leave empty only while bootstrapping a new dedicated team. |
LINEAR_ALLOWED_PROJECT_IDSOptional | Comma-separated exact Linear project IDs. Required after project discovery; leave empty only during initial bootstrap. |
LINEAR_ALLOWED_SCOPE_CODESOptional | Comma-separated exact scope codes. Leave empty for read-only capability inspection. |
GITHUB_TOKENOptional, secret | Optional GitHub token used only by the read-only evidence adapter. |
GITHUB_ALLOWED_REPOSITORIESOptional | Comma-separated owner/repository allowlist for GitHub evidence reads. |
OBSIDIAN_VAULT_PATHOptional | Optional normalized absolute path to an Obsidian vault. |
OBSIDIAN_VAULT_NAMEOptional | Optional expected Obsidian vault directory name. |
OBSIDIAN_ALLOWED_DIRECTORIESOptional | Comma-separated vault-relative directories allowed for Obsidian operations. |
MCP_WRITES_ENABLEDOptional | Global mutation gate. Keep false unless opening a separately bounded write window. |
MCP_WRITE_WINDOW_EXPIRES_ATOptional | Future RFC3339 expiry for a write window; enabled windows may last at most 60 minutes. |
MCP_AUDIT_LOG_PATHOptional | Optional normalized absolute path for the append-only NDJSON operation audit. |
Details
| Package | @openly-useful/[email protected] (NPM, stdio) |
| First published | 23 Aug 2026 |
| Last updated | 23 Aug 2026 |
| Registry name | org.openlyuseful/linear-project |
More productivity servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
