mcp-linear
mcp-linear
MCP-Server, der Linear-Issue-Operationen bereitstellt. Eigenständig — keine Abhängigkeit vom integrierten Claude-Linear-MCP.
Issues werden über ihre menschenlesbare Kennung (GOV-123) angesprochen.
Status, Teams, Labels und Bearbeiter werden namentlich angegeben; der Server
löst sie in Linear-UUIDs auf und gibt bei fehlender Übereinstimmung einen
Fehler mit den gültigen Optionen zurück.
Tools
Tool | Beschreibung |
| Ein Issue anhand der Kennung abrufen |
| Issues, die dem Inhaber des API-Schlüssels zugewiesen sind |
| Volltextsuche mit Team-/Status-/Bearbeiter-Filtern |
| Ein Issue in einem Team erstellen |
| Felder eines bestehenden Issues aktualisieren |
| Kommentare zu einem Issue |
| Einen Kommentar posten |
| Team-Schlüssel und -Namen |
| Workflow-Status für ein Team |
| Labels eines Teams plus Workspace-Labels (Team optional) |
| Aktive Benutzer |
Setup
python3 -m venv .venv
.venv/bin/pip install -e ".[dev]"
cp .env.example .env
# Edit .env — set LINEAR_API_KEYAPI-Schlüssel erhalten: Linear → Settings → Security & access → Personal API keys. Für Schreiboperationen wird ein Schlüssel mit Schreibzugriff benötigt.
Zu Claude Code hinzufügen
{
"mcpServers": {
"linear": {
"command": "/Users/piuschungath/Workspace/mcp-linear/.venv/bin/mcp-linear",
"env": { "LINEAR_API_KEY": "lin_api_..." }
}
}
}Tests
.venv/bin/pytestDer gesamte HTTP-Verkehr wird mit respx gemockt. Es werden weder ein
API-Schlüssel noch Netzwerkzugriff benötigt.
Mit mcp-pr-assistant
Die beiden Server lassen sich kombinieren, ohne sich gegenseitig zu
importieren: Ein Ticket mit get_issue abrufen, seine Felder an
create_pr_from_ticket übergeben und anschließend die PR-URL mit
add_comment zurückposten.
Schema-Verifizierung
Die GraphQL-Feldnamen in src/mcp_linear/queries.py wurden am 2026-08-21
gegen die Live-Linear-API verifiziert, indem die tatsächlichen Query-Strings
der Tools (nicht Kopien davon) gegen einen echten Workspace ausgeführt wurden.
Als korrekt verifiziert:
der
Float!-Vergleichsoperator für Issue-Nummernteambezogene Labels über
team { labels }die Root-Verbindung
issueLabelsviewer.assignedIssues(orderBy: updatedAt)jedes Feld, das die drei Mutationen senden —
IssueCreateInput,IssueUpdateInputundCommentCreateInputakzeptieren alleteamId,title,description,stateId,assigneeId,priority,labelIds,issueIdundbodywie verwendet
Eine Abweichung wurde gefunden und behoben:
Volltextsuche.
issueSearchlehnt seinquery-Argument als veraltet ab. Die Suche verwendet nunsearchIssues(term: ...), dasIssueSearchPayloadzurückgibt, dessen KnotenIssueSearchResultsind, nichtIssue— daher kann es dasIssueFields-Fragment nicht einbetten.queries.pydeklariert ein zweites Fragment,SearchFields, mit derselben Auswahl auf diesem Typ. Die Introspection bestätigte, dassIssueSearchResultjedes Feld enthält, dasIssueFieldsauswählt. Wenn Sie ein Fragment ändern, ändern Sie auch das andere.
Eine Sache bleibt unbestätigt:
Workspace-Labels. Die Root-Verbindung
issueLabelswird aufgelöst, aber ob sie nur workspaceweite Labels zurückgibt — oder auch teambezogene Labels anderer Teams — wurde nicht festgestellt. Bei der Label-Auflösung werden zuerst die eigenen Labels eines Teams berücksichtigt, sodass ein Team-Label immer über einem gleichnamigen Workspace-Label gewinnt.
Zur erneuten Verifizierung nach einer Linear-Schemaänderung:
LINEAR_API_KEY=lin_api_... .venv/bin/python scripts/probe_schema.py <team-key> <issue-number> <issue-uuid>Er benötigt einen Team-Schlüssel, eine bestehende Issue-Nummer in diesem Team und die UUID dieses Issues (und fragt einmalig interaktiv nach einer Team-UUID, die sein erster Testlauf ausgibt). Der Testlauf ist schreibgeschützt: Die Mutationen werden durch Introspection ihrer Eingabetypen geprüft, niemals durch Schreiben in Ihren Tracker.
Hinweise
Persönliche Linear-API-Schlüssel werden als
Authorization: <key>ohneBearer-Präfix gesendet.Linear meldet die meisten Fehler als HTTP 200 mit einem
errors-Array auf oberster Ebene, daher prüft der Client den Antworttext statt des Statuscodes.Team-, Status-, Label- und Benutzermetadaten werden für die Lebensdauer des Serverprozesses zwischengespeichert. Starten Sie den Server neu, nachdem Sie die Workflow-Status oder Labels eines Teams geändert haben.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Shortcut project management. Create, update, search stories and manage workflows.
Connect to Atlassian Jira, Confluence, and Compass to search, create, and manage your work.
Manage projects, tasks, time tracking, and team collaboration through natural language.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/pius-grainger/mcp-linear'
If you have feedback or need assistance with the MCP directory API, please join our Discord server