linear-mcp-fast 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- linear_mcp_fast-0.1.0/PKG-INFO +160 -0
- linear_mcp_fast-0.1.0/README.md +136 -0
- linear_mcp_fast-0.1.0/pyproject.toml +54 -0
- linear_mcp_fast-0.1.0/setup.cfg +4 -0
- linear_mcp_fast-0.1.0/src/linear_mcp_fast/__init__.py +8 -0
- linear_mcp_fast-0.1.0/src/linear_mcp_fast/__main__.py +6 -0
- linear_mcp_fast-0.1.0/src/linear_mcp_fast/reader.py +433 -0
- linear_mcp_fast-0.1.0/src/linear_mcp_fast/server.py +367 -0
- linear_mcp_fast-0.1.0/src/linear_mcp_fast/store_detector.py +117 -0
- linear_mcp_fast-0.1.0/src/linear_mcp_fast.egg-info/PKG-INFO +160 -0
- linear_mcp_fast-0.1.0/src/linear_mcp_fast.egg-info/SOURCES.txt +42 -0
- linear_mcp_fast-0.1.0/src/linear_mcp_fast.egg-info/dependency_links.txt +1 -0
- linear_mcp_fast-0.1.0/src/linear_mcp_fast.egg-info/entry_points.txt +2 -0
- linear_mcp_fast-0.1.0/src/linear_mcp_fast.egg-info/requires.txt +2 -0
- linear_mcp_fast-0.1.0/src/linear_mcp_fast.egg-info/top_level.txt +4 -0
- linear_mcp_fast-0.1.0/vendor/ccl_chromium_reader/ccl_chromium_reader/__init__.py +2 -0
- linear_mcp_fast-0.1.0/vendor/ccl_chromium_reader/ccl_chromium_reader/ccl_chromium_cache.py +1335 -0
- linear_mcp_fast-0.1.0/vendor/ccl_chromium_reader/ccl_chromium_reader/ccl_chromium_filesystem.py +302 -0
- linear_mcp_fast-0.1.0/vendor/ccl_chromium_reader/ccl_chromium_reader/ccl_chromium_history.py +357 -0
- linear_mcp_fast-0.1.0/vendor/ccl_chromium_reader/ccl_chromium_reader/ccl_chromium_indexeddb.py +1060 -0
- linear_mcp_fast-0.1.0/vendor/ccl_chromium_reader/ccl_chromium_reader/ccl_chromium_localstorage.py +454 -0
- linear_mcp_fast-0.1.0/vendor/ccl_chromium_reader/ccl_chromium_reader/ccl_chromium_notifications.py +268 -0
- linear_mcp_fast-0.1.0/vendor/ccl_chromium_reader/ccl_chromium_reader/ccl_chromium_profile_folder.py +568 -0
- linear_mcp_fast-0.1.0/vendor/ccl_chromium_reader/ccl_chromium_reader/ccl_chromium_sessionstorage.py +368 -0
- linear_mcp_fast-0.1.0/vendor/ccl_chromium_reader/ccl_chromium_reader/ccl_chromium_snss2.py +332 -0
- linear_mcp_fast-0.1.0/vendor/ccl_chromium_reader/ccl_chromium_reader/ccl_shared_proto_db_downloads.py +189 -0
- linear_mcp_fast-0.1.0/vendor/ccl_chromium_reader/ccl_chromium_reader/common.py +19 -0
- linear_mcp_fast-0.1.0/vendor/ccl_chromium_reader/ccl_chromium_reader/download_common.py +78 -0
- linear_mcp_fast-0.1.0/vendor/ccl_chromium_reader/ccl_chromium_reader/profile_folder_protocols.py +276 -0
- linear_mcp_fast-0.1.0/vendor/ccl_chromium_reader/ccl_chromium_reader/serialization_formats/__init__.py +0 -0
- linear_mcp_fast-0.1.0/vendor/ccl_chromium_reader/ccl_chromium_reader/serialization_formats/ccl_blink_value_deserializer.py +401 -0
- linear_mcp_fast-0.1.0/vendor/ccl_chromium_reader/ccl_chromium_reader/serialization_formats/ccl_easy_chromium_pickle.py +133 -0
- linear_mcp_fast-0.1.0/vendor/ccl_chromium_reader/ccl_chromium_reader/serialization_formats/ccl_protobuff.py +276 -0
- linear_mcp_fast-0.1.0/vendor/ccl_chromium_reader/ccl_chromium_reader/serialization_formats/ccl_v8_value_deserializer.py +627 -0
- linear_mcp_fast-0.1.0/vendor/ccl_chromium_reader/ccl_chromium_reader/storage_formats/__init__.py +0 -0
- linear_mcp_fast-0.1.0/vendor/ccl_chromium_reader/ccl_chromium_reader/storage_formats/ccl_leveldb.py +582 -0
- linear_mcp_fast-0.1.0/vendor/ccl_chromium_reader/tools_and_utilities/Chromium_dump_local_storage.py +111 -0
- linear_mcp_fast-0.1.0/vendor/ccl_chromium_reader/tools_and_utilities/Chromium_dump_session_storage.py +92 -0
- linear_mcp_fast-0.1.0/vendor/ccl_chromium_reader/tools_and_utilities/benchmark.py +35 -0
- linear_mcp_fast-0.1.0/vendor/ccl_chromium_reader/tools_and_utilities/ccl_chrome_audit.py +651 -0
- linear_mcp_fast-0.1.0/vendor/ccl_chromium_reader/tools_and_utilities/dump_indexeddb_details.py +59 -0
- linear_mcp_fast-0.1.0/vendor/ccl_chromium_reader/tools_and_utilities/dump_leveldb.py +53 -0
- linear_mcp_fast-0.1.0/vendor/ccl_simplesnappy/ccl_simplesnappy/__init__.py +1 -0
- linear_mcp_fast-0.1.0/vendor/ccl_simplesnappy/ccl_simplesnappy/ccl_simplesnappy.py +306 -0
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: linear-mcp-fast
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Fast MCP server for Linear - reads from Linear.app's local cache on macOS
|
|
5
|
+
Author: everything-chalna
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/everything-chalna/linear-mcp-fast
|
|
8
|
+
Project-URL: Repository, https://github.com/everything-chalna/linear-mcp-fast
|
|
9
|
+
Project-URL: Issues, https://github.com/everything-chalna/linear-mcp-fast/issues
|
|
10
|
+
Keywords: linear,mcp,cache,indexeddb,macos
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: Operating System :: MacOS
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
20
|
+
Requires-Python: >=3.10
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
Requires-Dist: mcp>=1.0.0
|
|
23
|
+
Requires-Dist: brotli>=1.0.0
|
|
24
|
+
|
|
25
|
+
# linear-mcp-fast
|
|
26
|
+
|
|
27
|
+
Fast, read-only MCP server for Linear that reads from Linear.app's local cache on macOS.
|
|
28
|
+
|
|
29
|
+
**Why?**
|
|
30
|
+
- **Instant**: No API calls, reads directly from local IndexedDB cache
|
|
31
|
+
- **Offline**: Works without internet
|
|
32
|
+
- **Lower context**: Smaller responses for AI assistants
|
|
33
|
+
|
|
34
|
+
**Use with**: Official Linear MCP for write operations (comments, updates).
|
|
35
|
+
|
|
36
|
+
## Installation
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
pip install linear-mcp-fast
|
|
40
|
+
# or
|
|
41
|
+
uv pip install linear-mcp-fast
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Setup
|
|
45
|
+
|
|
46
|
+
### Claude Code
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
# 1. Add linear-mcp-fast (reads from local cache)
|
|
50
|
+
claude mcp add linear-fast -- uvx linear-mcp-fast
|
|
51
|
+
|
|
52
|
+
# 2. Add official Linear MCP (for writes)
|
|
53
|
+
claude mcp add --transport http linear https://mcp.linear.app/mcp
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Now you have:
|
|
57
|
+
- `linear-fast` → Fast reads from local cache
|
|
58
|
+
- `linear` → Writes (comments, updates)
|
|
59
|
+
|
|
60
|
+
### Claude Desktop
|
|
61
|
+
|
|
62
|
+
Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
|
|
63
|
+
|
|
64
|
+
```json
|
|
65
|
+
{
|
|
66
|
+
"mcpServers": {
|
|
67
|
+
"linear-fast": {
|
|
68
|
+
"command": "uvx",
|
|
69
|
+
"args": ["linear-mcp-fast"]
|
|
70
|
+
},
|
|
71
|
+
"linear": {
|
|
72
|
+
"command": "npx",
|
|
73
|
+
"args": ["-y", "mcp-remote", "https://mcp.linear.app/mcp"]
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Cursor / VS Code
|
|
80
|
+
|
|
81
|
+
```json
|
|
82
|
+
{
|
|
83
|
+
"mcpServers": {
|
|
84
|
+
"linear-fast": {
|
|
85
|
+
"command": "uvx",
|
|
86
|
+
"args": ["linear-mcp-fast"]
|
|
87
|
+
},
|
|
88
|
+
"linear": {
|
|
89
|
+
"command": "npx",
|
|
90
|
+
"args": ["-y", "mcp-remote", "https://mcp.linear.app/mcp"]
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Prerequisites
|
|
99
|
+
|
|
100
|
+
- **macOS** (Linear.app stores cache in `~/Library/Application Support/Linear/`)
|
|
101
|
+
- **Linear.app** installed and opened at least once
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Available Tools
|
|
106
|
+
|
|
107
|
+
### Reading (linear-fast)
|
|
108
|
+
|
|
109
|
+
| Tool | Description |
|
|
110
|
+
|------|-------------|
|
|
111
|
+
| `list_issues` | List issues with filters (assignee, team, state, priority) |
|
|
112
|
+
| `get_issue` | Get issue details with comments |
|
|
113
|
+
| `search_issues` | Search issues by title |
|
|
114
|
+
| `get_my_issues` | Get issues assigned to a user |
|
|
115
|
+
| `list_teams` | List all teams |
|
|
116
|
+
| `list_projects` | List all projects |
|
|
117
|
+
| `get_summary` | Get cache summary |
|
|
118
|
+
|
|
119
|
+
### Writing (official Linear MCP)
|
|
120
|
+
|
|
121
|
+
Use the official Linear MCP (`linear`) for:
|
|
122
|
+
- Creating/updating issues
|
|
123
|
+
- Adding comments
|
|
124
|
+
- Changing status
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Troubleshooting
|
|
129
|
+
|
|
130
|
+
### "Linear database not found"
|
|
131
|
+
|
|
132
|
+
Linear.app needs to be installed and opened at least once:
|
|
133
|
+
```bash
|
|
134
|
+
ls ~/Library/Application\ Support/Linear/IndexedDB/
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Data seems stale
|
|
138
|
+
|
|
139
|
+
Local cache is updated when Linear.app syncs. Open Linear.app to refresh.
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## How It Works
|
|
144
|
+
|
|
145
|
+
```
|
|
146
|
+
Linear.app (Electron)
|
|
147
|
+
↓ syncs to
|
|
148
|
+
IndexedDB (LevelDB format)
|
|
149
|
+
~/Library/Application Support/Linear/IndexedDB/...
|
|
150
|
+
↓ read by
|
|
151
|
+
linear-mcp-fast
|
|
152
|
+
↓ provides
|
|
153
|
+
Fast read-only access to issues, users, teams, comments
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## License
|
|
159
|
+
|
|
160
|
+
MIT
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# linear-mcp-fast
|
|
2
|
+
|
|
3
|
+
Fast, read-only MCP server for Linear that reads from Linear.app's local cache on macOS.
|
|
4
|
+
|
|
5
|
+
**Why?**
|
|
6
|
+
- **Instant**: No API calls, reads directly from local IndexedDB cache
|
|
7
|
+
- **Offline**: Works without internet
|
|
8
|
+
- **Lower context**: Smaller responses for AI assistants
|
|
9
|
+
|
|
10
|
+
**Use with**: Official Linear MCP for write operations (comments, updates).
|
|
11
|
+
|
|
12
|
+
## Installation
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
pip install linear-mcp-fast
|
|
16
|
+
# or
|
|
17
|
+
uv pip install linear-mcp-fast
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Setup
|
|
21
|
+
|
|
22
|
+
### Claude Code
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
# 1. Add linear-mcp-fast (reads from local cache)
|
|
26
|
+
claude mcp add linear-fast -- uvx linear-mcp-fast
|
|
27
|
+
|
|
28
|
+
# 2. Add official Linear MCP (for writes)
|
|
29
|
+
claude mcp add --transport http linear https://mcp.linear.app/mcp
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Now you have:
|
|
33
|
+
- `linear-fast` → Fast reads from local cache
|
|
34
|
+
- `linear` → Writes (comments, updates)
|
|
35
|
+
|
|
36
|
+
### Claude Desktop
|
|
37
|
+
|
|
38
|
+
Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
|
|
39
|
+
|
|
40
|
+
```json
|
|
41
|
+
{
|
|
42
|
+
"mcpServers": {
|
|
43
|
+
"linear-fast": {
|
|
44
|
+
"command": "uvx",
|
|
45
|
+
"args": ["linear-mcp-fast"]
|
|
46
|
+
},
|
|
47
|
+
"linear": {
|
|
48
|
+
"command": "npx",
|
|
49
|
+
"args": ["-y", "mcp-remote", "https://mcp.linear.app/mcp"]
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Cursor / VS Code
|
|
56
|
+
|
|
57
|
+
```json
|
|
58
|
+
{
|
|
59
|
+
"mcpServers": {
|
|
60
|
+
"linear-fast": {
|
|
61
|
+
"command": "uvx",
|
|
62
|
+
"args": ["linear-mcp-fast"]
|
|
63
|
+
},
|
|
64
|
+
"linear": {
|
|
65
|
+
"command": "npx",
|
|
66
|
+
"args": ["-y", "mcp-remote", "https://mcp.linear.app/mcp"]
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Prerequisites
|
|
75
|
+
|
|
76
|
+
- **macOS** (Linear.app stores cache in `~/Library/Application Support/Linear/`)
|
|
77
|
+
- **Linear.app** installed and opened at least once
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Available Tools
|
|
82
|
+
|
|
83
|
+
### Reading (linear-fast)
|
|
84
|
+
|
|
85
|
+
| Tool | Description |
|
|
86
|
+
|------|-------------|
|
|
87
|
+
| `list_issues` | List issues with filters (assignee, team, state, priority) |
|
|
88
|
+
| `get_issue` | Get issue details with comments |
|
|
89
|
+
| `search_issues` | Search issues by title |
|
|
90
|
+
| `get_my_issues` | Get issues assigned to a user |
|
|
91
|
+
| `list_teams` | List all teams |
|
|
92
|
+
| `list_projects` | List all projects |
|
|
93
|
+
| `get_summary` | Get cache summary |
|
|
94
|
+
|
|
95
|
+
### Writing (official Linear MCP)
|
|
96
|
+
|
|
97
|
+
Use the official Linear MCP (`linear`) for:
|
|
98
|
+
- Creating/updating issues
|
|
99
|
+
- Adding comments
|
|
100
|
+
- Changing status
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Troubleshooting
|
|
105
|
+
|
|
106
|
+
### "Linear database not found"
|
|
107
|
+
|
|
108
|
+
Linear.app needs to be installed and opened at least once:
|
|
109
|
+
```bash
|
|
110
|
+
ls ~/Library/Application\ Support/Linear/IndexedDB/
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Data seems stale
|
|
114
|
+
|
|
115
|
+
Local cache is updated when Linear.app syncs. Open Linear.app to refresh.
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## How It Works
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
Linear.app (Electron)
|
|
123
|
+
↓ syncs to
|
|
124
|
+
IndexedDB (LevelDB format)
|
|
125
|
+
~/Library/Application Support/Linear/IndexedDB/...
|
|
126
|
+
↓ read by
|
|
127
|
+
linear-mcp-fast
|
|
128
|
+
↓ provides
|
|
129
|
+
Fast read-only access to issues, users, teams, comments
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## License
|
|
135
|
+
|
|
136
|
+
MIT
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=61.0"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "linear-mcp-fast"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "Fast MCP server for Linear - reads from Linear.app's local cache on macOS"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = "MIT"
|
|
11
|
+
requires-python = ">=3.10"
|
|
12
|
+
authors = [
|
|
13
|
+
{ name = "everything-chalna" }
|
|
14
|
+
]
|
|
15
|
+
keywords = ["linear", "mcp", "cache", "indexeddb", "macos"]
|
|
16
|
+
classifiers = [
|
|
17
|
+
"Development Status :: 4 - Beta",
|
|
18
|
+
"Environment :: Console",
|
|
19
|
+
"Intended Audience :: Developers",
|
|
20
|
+
"Operating System :: MacOS",
|
|
21
|
+
"Programming Language :: Python :: 3",
|
|
22
|
+
"Programming Language :: Python :: 3.10",
|
|
23
|
+
"Programming Language :: Python :: 3.11",
|
|
24
|
+
"Programming Language :: Python :: 3.12",
|
|
25
|
+
"Programming Language :: Python :: 3.13",
|
|
26
|
+
]
|
|
27
|
+
dependencies = [
|
|
28
|
+
"mcp>=1.0.0",
|
|
29
|
+
"brotli>=1.0.0",
|
|
30
|
+
]
|
|
31
|
+
|
|
32
|
+
[project.urls]
|
|
33
|
+
Homepage = "https://github.com/everything-chalna/linear-mcp-fast"
|
|
34
|
+
Repository = "https://github.com/everything-chalna/linear-mcp-fast"
|
|
35
|
+
Issues = "https://github.com/everything-chalna/linear-mcp-fast/issues"
|
|
36
|
+
|
|
37
|
+
[project.scripts]
|
|
38
|
+
linear-mcp-fast = "linear_mcp_fast:main"
|
|
39
|
+
|
|
40
|
+
[tool.setuptools.packages.find]
|
|
41
|
+
where = ["src", "vendor/ccl_chromium_reader", "vendor/ccl_simplesnappy"]
|
|
42
|
+
|
|
43
|
+
[tool.setuptools.package-dir]
|
|
44
|
+
"" = "src"
|
|
45
|
+
"ccl_chromium_reader" = "vendor/ccl_chromium_reader/ccl_chromium_reader"
|
|
46
|
+
"ccl_chromium_reader.serialization_formats" = "vendor/ccl_chromium_reader/ccl_chromium_reader/serialization_formats"
|
|
47
|
+
"ccl_chromium_reader.storage_formats" = "vendor/ccl_chromium_reader/ccl_chromium_reader/storage_formats"
|
|
48
|
+
"ccl_simplesnappy" = "vendor/ccl_simplesnappy/ccl_simplesnappy"
|
|
49
|
+
|
|
50
|
+
[dependency-groups]
|
|
51
|
+
dev = [
|
|
52
|
+
"pytest>=7.0.0",
|
|
53
|
+
"ruff>=0.1.0",
|
|
54
|
+
]
|