oh-my-linearmcp
Unified MCP server for Linear on macOS.
- Fast reads from Linear local cache
- Automatic fallback to official Linear MCP for unsupported/degraded reads
- Write support via official Linear MCP (through the same auth flow)
Name Change
This project name is now oh-my-linearmcp.
- New package/command:
oh-my-linearmcp - Legacy executable alias:
linear-mcp-fast(compatibility only)
Read/Write Policy
| Operation | Path |
|---|---|
| Read | local cache first, then official MCP fallback |
| Write | official MCP only |
| Post-write read window | temporary remote-first window (default 30s) |
Requirements
- macOS (Linear.app local cache path is macOS-specific)
- Linear.app installed and opened at least once
- Node.js/npm (
npx) for default official bridge (mcp-remote) - Network access for official fallback/write calls
Setup
Use only this server. It handles both local-fast reads and official MCP bridge.
Claude Code
claude mcp add oh-my-linearmcp -- uvx oh-my-linearmcp
From local checkout:
claude mcp add oh-my-linearmcp -- uvx --from /path/to/oh-my-linearmcp oh-my-linearmcp
Module run:
python -m oh_my_linearmcp
Claude Desktop / Cursor / VS Code / Windsurf
{
"mcpServers": {
"oh-my-linearmcp": {
"command": "uvx",
"args": ["oh-my-linearmcp"]
}
}
}
Write Support (Official MCP)
Writes are supported by routing to official Linear MCP.
- Use
list_official_toolsto discover official MCP tool names - Use
official_call_toolto execute those official tools
Example flow:
list_official_tools()
official_call_tool(name="create_issue", args={...})
official_call_tool(name="update_issue", args={...})
Available Tools
Local Read Tools (cache-first)
list_issuesget_issuelist_teamsget_teamlist_projectsget_projectlist_usersget_userlist_issue_statusesget_issue_statuslist_commentslist_issue_labelslist_initiativesget_initiativelist_cycleslist_documentsget_documentlist_milestonesget_milestonelist_project_updatesget_status_updates(local supports onlytype="project")
Unified/Official Bridge Tools
official_call_tool(call any official MCP tool)list_official_toolsrefresh_cacheget_cache_health
Environment Variables
LINEAR_OFFICIAL_MCP_TRANSPORT(stdiodefault, orhttp)LINEAR_OFFICIAL_MCP_COMMAND(default:npx, used when transport=stdio)LINEAR_OFFICIAL_MCP_ARGS(default:-y mcp-remote https://mcp.linear.app/mcp, used when transport=stdio)LINEAR_OFFICIAL_MCP_ENV(JSON object, optional env for stdio child process)LINEAR_OFFICIAL_MCP_CWD(optional working directory for stdio child process)LINEAR_OFFICIAL_MCP_URL(default:https://mcp.linear.app/mcp)LINEAR_OFFICIAL_MCP_HEADERS(JSON headers, used when transport=http)LINEAR_FAST_COHERENCE_WINDOW_SECONDS(default:30)LINEAR_FAST_ACCOUNT_EMAILS(comma-separated; limit local cache to orgs for these account emails)LINEAR_FAST_USER_ACCOUNT_IDS(comma-separated; direct account-id scope override)
How It Works
Linear.app (Electron)
-> local IndexedDB cache
-> oh-my-linearmcp
-> read: local-first
-> unsupported/degraded reads: official MCP fallback
-> write: official MCP
Notes
- Local reads can be stale; post-write remote-first window reduces mismatch risk.
- If local parsing is degraded, reads fall back to official MCP.
- Local
get_status_updatessupports onlytype="project"; others fall back to official MCP. - With account scope env vars set, local IndexedDB is filtered to organizations of that account only.
Troubleshooting
npx: command not found
- Install Node.js/npm, or switch to
LINEAR_OFFICIAL_MCP_TRANSPORT=http.
Official calls unauthorized
- Re-run official Linear MCP auth in your client (existing OAuth process).
Local data seems stale
- Open Linear.app to sync, or run
refresh_cache.
Linear local DB not found
ls ~/Library/Application\ Support/Linear/IndexedDB/
License
MIT
Metadata
Release files for oh-my-linearmcp 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| oh_my_linearmcp-0.5.0.tar.gz | 104.9 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| oh_my_linearmcp-0.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 228.9 kB
Release files / oh_my_linearmcp-0.5.0.tar.gz
| Download URL | oh_my_linearmcp-0.5.0.tar.gz |
|---|---|
| Size | 104.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
97992aac9c631e6f233eb8cbb5ac402fdb97cc15d4bcf2b39d7f640ee9b2037b
|
|
BLAKE2b-256 checksum How to use checksums |
5154189bbc91b02a4a65ec43ce3c0dfa9a76d357bac68dd47685cbc9e06620a9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Release files / oh_my_linearmcp-0.5.0-py3-none-any.whl
| Download URL | oh_my_linearmcp-0.5.0-py3-none-any.whl |
|---|---|
| Size | 124.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7fc9b731a3f3d8680a6865641a20898673bccaa58386173d420055f526be874a
|
|
BLAKE2b-256 checksum How to use checksums |
98d9916c27892f43d00946bb46107b8b4af6c10c12072d7acf157e8234f0fe08
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Security for oh-my-linearmcp 0.5.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.