mcp-linear
mcp-linear
Servidor MCP que expone operaciones de incidencias de Linear. Independiente: sin dependencia del MCP de Linear integrado en Claude.
Las incidencias se identifican por su identificador humano (GOV-123). Los estados, equipos, etiquetas y asignados se indican por nombre; el servidor los resuelve a UUID de Linear y devuelve un error con las opciones válidas cuando un nombre no coincide.
Herramientas
Herramienta | Descripción |
| Obtener una incidencia por identificador |
| Incidencias asignadas al propietario de la clave de API |
| Búsqueda de texto completo con filtros de equipo/estado/asignado |
| Crear una incidencia en un equipo |
| Actualizar campos de una incidencia existente |
| Comentarios de una incidencia |
| Publicar un comentario |
| Claves y nombres de equipos |
| Estados de flujo de trabajo de un equipo |
| Etiquetas de un equipo más etiquetas del espacio de trabajo (equipo opcional) |
| Usuarios activos |
Configuración
python3 -m venv .venv
.venv/bin/pip install -e ".[dev]"
cp .env.example .env
# Edit .env — set LINEAR_API_KEYObtén una clave de API: Linear → Configuración → Seguridad y acceso → Claves de API personales. Las operaciones de escritura necesitan una clave con acceso de escritura.
Añadir a Claude Code
{
"mcpServers": {
"linear": {
"command": "/Users/piuschungath/Workspace/mcp-linear/.venv/bin/mcp-linear",
"env": { "LINEAR_API_KEY": "lin_api_..." }
}
}
}Pruebas
.venv/bin/pytestTodo el HTTP se simula con respx. No se necesita clave de API ni acceso a la red.
Con mcp-pr-assistant
Los dos servidores se combinan sin importarse entre sí: obtén un ticket con get_issue, pasa sus campos a create_pr_from_ticket y luego publica la URL del PR de vuelta con add_comment.
Verificación del esquema
Los nombres de campos GraphQL en src/mcp_linear/queries.py se verificaron contra la API de Linear en vivo el 2026-08-21, ejecutando las cadenas de consulta reales de las herramientas (no copias) contra un espacio de trabajo real.
Verificado correcto:
el comparador de número de incidencia
Float!etiquetas de ámbito de equipo mediante
team { labels }la conexión raíz
issueLabelsviewer.assignedIssues(orderBy: updatedAt)todos los campos que envían las tres mutaciones:
IssueCreateInput,IssueUpdateInputyCommentCreateInputaceptanteamId,title,description,stateId,assigneeId,priority,labelIds,issueIdybodytal como se usan.
Se encontró y corrigió una divergencia:
Búsqueda de texto completo.
issueSearchrechaza su argumentoquerycomo obsoleto. La búsqueda ahora usasearchIssues(term: ...), que devuelveIssueSearchPayloadcuyos nodos sonIssueSearchResult, noIssue, por lo que no puede expandir el fragmentoIssueFields.queries.pydeclara un segundo fragmento,SearchFields, con la misma selección en ese tipo. La introspección confirmó queIssueSearchResultcontiene todos los campos que seleccionaIssueFields. Si cambias un fragmento, cambia el otro.
Una cosa sigue sin confirmar:
Etiquetas del espacio de trabajo. La conexión raíz
issueLabelsse resuelve, pero no se estableció si devuelve solo etiquetas de todo el espacio de trabajo o también etiquetas de ámbito de equipo que pertenecen a otros equipos. La resolución de etiquetas consulta primero las etiquetas propias del equipo, por lo que una etiqueta de equipo siempre gana sobre una del espacio de trabajo con el mismo nombre.
Para volver a verificar después de un cambio de esquema de Linear:
LINEAR_API_KEY=lin_api_... .venv/bin/python scripts/probe_schema.py <team-key> <issue-number> <issue-uuid>Toma una clave de equipo, un número de incidencia existente en ese equipo y el UUID de esa incidencia (y solicita una vez, de forma interactiva, un UUID de equipo impreso por su primera sonda). La sonda es de solo lectura: las mutaciones se verifican inspeccionando sus tipos de entrada, nunca escribiendo en tu rastreador.
Notas
Las claves de API personales de Linear se envían como
Authorization: <key>sin prefijoBearer.Linear informa la mayoría de los fallos como HTTP 200 con una matriz
errorsde nivel superior, por lo que el cliente verifica el cuerpo de la respuesta en lugar del código de estado.Los metadatos de equipos, estados, etiquetas y usuarios se almacenan en caché durante la vida del proceso del servidor. Reinicia el servidor después de cambiar los estados de flujo de trabajo o las etiquetas de un equipo.
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