MCP server for Linear — 23+ tools to manage issues, projects, and sprints from Claude Code
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio counts 28 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
add_comment
-
add_issue_to_cycle
-
add_labels
-
archive_issue
-
bulk_update_issues
-
create_issue
-
create_issue_relation
-
delete_issue
-
delete_issue_relation
-
get_current_cycle
-
get_issue
-
get_my_issues
-
get_viewer
-
list_cycles
-
list_issues
-
list_labels
-
list_members
-
list_notifications
-
list_projects
-
list_teams
-
list_workflow_states
-
mark_notification_read
-
remove_issue_from_cycle
-
remove_labels
-
search_issues
-
transition_issue
-
unassign_issue
-
update_issue
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 951af2a · analyzer v33 · 6d ago
skills & prompt files 1
- agent-rules suryamp-linear-mcp-951af2a/CLAUDE.md
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 7
filesystem 2
- fs (weak) suryamp-linear-mcp-951af2a/scripts/fetch_schema.py :12
from pathlib import Path - fs (weak) suryamp-linear-mcp-951af2a/tests/test_schema_validation.py :12
from pathlib import Path
network 3
- net (weak) suryamp-linear-mcp-951af2a/scripts/fetch_schema.py :14
import httpx - net suryamp-linear-mcp-951af2a/src/linear_mcp/client.py :5
import httpx - net (weak) suryamp-linear-mcp-951af2a/tests/test_client.py :4
import httpx
secrets 2
- secrets (weak) suryamp-linear-mcp-951af2a/scripts/fetch_schema.py :19
API_KEY = os.environ.get("LINEAR_API_KEY", "") - secrets suryamp-linear-mcp-951af2a/src/linear_mcp/server.py :28
key = os.environ.get("LINEAR_API_KEY", "")
tool registrations 28
- get_viewer suryamp-linear-mcp-951af2a/src/linear_mcp/server.py :60
- list_teams suryamp-linear-mcp-951af2a/src/linear_mcp/server.py :68
- list_members suryamp-linear-mcp-951af2a/src/linear_mcp/server.py :74
- list_workflow_states suryamp-linear-mcp-951af2a/src/linear_mcp/server.py :86
- get_my_issues suryamp-linear-mcp-951af2a/src/linear_mcp/server.py :99
- list_issues suryamp-linear-mcp-951af2a/src/linear_mcp/server.py :110
- get_issue suryamp-linear-mcp-951af2a/src/linear_mcp/server.py :143
- search_issues suryamp-linear-mcp-951af2a/src/linear_mcp/server.py :154
- create_issue suryamp-linear-mcp-951af2a/src/linear_mcp/server.py :165
- update_issue suryamp-linear-mcp-951af2a/src/linear_mcp/server.py :200
- transition_issue suryamp-linear-mcp-951af2a/src/linear_mcp/server.py :236
- unassign_issue suryamp-linear-mcp-951af2a/src/linear_mcp/server.py :249
- add_labels suryamp-linear-mcp-951af2a/src/linear_mcp/server.py :260
- remove_labels suryamp-linear-mcp-951af2a/src/linear_mcp/server.py :273
- bulk_update_issues suryamp-linear-mcp-951af2a/src/linear_mcp/server.py :286
- archive_issue suryamp-linear-mcp-951af2a/src/linear_mcp/server.py :313
- delete_issue suryamp-linear-mcp-951af2a/src/linear_mcp/server.py :323
- create_issue_relation suryamp-linear-mcp-951af2a/src/linear_mcp/server.py :344
- delete_issue_relation suryamp-linear-mcp-951af2a/src/linear_mcp/server.py :361
- add_comment suryamp-linear-mcp-951af2a/src/linear_mcp/server.py :373
- list_projects suryamp-linear-mcp-951af2a/src/linear_mcp/server.py :386
- list_labels suryamp-linear-mcp-951af2a/src/linear_mcp/server.py :399
- list_cycles suryamp-linear-mcp-951af2a/src/linear_mcp/server.py :411
- get_current_cycle suryamp-linear-mcp-951af2a/src/linear_mcp/server.py :422
- add_issue_to_cycle suryamp-linear-mcp-951af2a/src/linear_mcp/server.py :436
- remove_issue_from_cycle suryamp-linear-mcp-951af2a/src/linear_mcp/server.py :447
- list_notifications suryamp-linear-mcp-951af2a/src/linear_mcp/server.py :459
- mark_notification_read suryamp-linear-mcp-951af2a/src/linear_mcp/server.py :469
declared dependencies 7
- mcp@>=1.0.0,<2.0.0
- httpx@>=0.27.0
- python-dotenv@>=1.0.0
- pytest@>=8.0
- pytest-mock@>=3.14
- ruff@>=0.4
- graphql-core@>=3.2