jira-mcp
Servidor MCP de Jira (solo lectura)
Un MCP local que permite a Claude Code obtener contexto de tickets de Jira (detalles de incidencias, hilos de comentarios, el grafo de referencias alrededor de un ticket y resultados de búsqueda JQL) renderizado como Markdown compacto. Los archivos adjuntos de imagen (por ejemplo, la captura de pantalla en un ticket de bug de UI) se pueden recuperar para que Claude los analice visualmente.
Lo que deliberadamente no puede hacer
Este servidor es estrictamente de solo lectura. No expone ninguna herramienta que cree, actualice, transicione, elimine o comente nada. El cumplimiento se aplica en capas:
En el código: cada solicitud HTTP pasa por un único helper que solo permite
GET, con una excepción en la lista blanca:POST /rest/api/3/search/jql, una operación de lectura que Atlassian exige que se envíe como POST. Cualquier otro método lanzaReadOnlyViolationError, por lo que una futura edición que agregue una llamada de escritura fallará de forma ruidosa.A nivel de credenciales: crea el token de API solo con alcances de lectura (abajo), de modo que incluso un error no pudiera escribir.
Related MCP server: JIRA MCP Server
Herramientas
Herramienta | Propósito |
| Detalle completo del ticket, incluidos todos los campos personalizados no vacíos (criterios de aceptación, puntos de historia, ...) con sus nombres de visualización, además (por defecto) del hilo de comentarios |
| Solo la discusión, con autor/marca de tiempo/editado/visibilidad |
| Padre, subtareas, incidencias vinculadas (con dirección del enlace) e hijos del épico, cada uno como clave + tipo + estado + resumen |
| Resultados compactos de búsqueda JQL |
| Descarga un archivo adjunto de imagen (listado por |
| Qué cuenta resuelve el token; la primera parada para depurar la autenticación |
Configuración
1. Crear un token de API de Atlassian
Ve a https://id.atlassian.com/manage-profile/security/api-tokens.
Elige Create API token with scopes (Atlassian está deprecando los tokens sin alcances).
Selecciona la aplicación Jira y elige solo estos alcances:
read:jira-workread:jira-user
Copia el token inmediatamente; solo se muestra una vez.
Un token sin alcances más antiguo también funciona; el servidor maneja ambos automáticamente (ver abajo).
2. Configurar .env
cp .env.example .env # then editClaves requeridas (esta es toda la superficie de configuración):
Clave | Valor |
| El correo electrónico de tu cuenta de Atlassian |
| El token del paso 1 |
| p. ej. |
.env está en gitignore; nunca lo confirmes. Las variables de entorno reales tienen
prioridad sobre el archivo. El archivo se ubica en relación con el directorio del
proyecto (no el directorio de trabajo), por lo que el servidor lo encuentra sin
importar desde dónde se lance.
3. Instalar dependencias
Con uv (preferido, ya que este repositorio tiene un uv.lock):
uv syncO con pip simple en un venv:
python -m venv .venv
.venv/bin/pip install -r requirements.txt # Windows: .venv\Scripts\pip4. Verificar con --check
.venv/bin/python -m jira_mcp --check # connectivity + auth only
.venv/bin/python -m jira_mcp --check PROJ-123 # also fetch a ticket in fullEsto imprime si se encontró .env, qué URL base se seleccionó (y si fue necesario el
respaldo de cloud-ID), la cuenta autenticada y, cuando se proporciona una clave, el
ticket exactamente como lo vería Claude.
Tokens con alcances vs. sin alcances: el problema de la URL base
Un token sin alcances funciona contra la URL de tu sitio,
https://<site>.atlassian.net.Un token con alcances contra esa misma URL falla silenciosamente, devolviendo respuestas que parecen anónimas. Debe llamar a
https://api.atlassian.com/ex/jira/{cloudId}en su lugar.
No necesitas saber qué tipo tienes. Al inicio, el servidor sondea la URL del sitio con
GET /rest/api/3/myself; si eso no devuelve una cuenta real, obtiene tu cloud ID de
{site}/_edge/tenant_info y reintenta contra api.atlassian.com. El ganador se
almacena en caché durante la vida del proceso y se registra en stderr.
Si la detección falla alguna vez: _edge/tenant_info no es parte de la API REST
formalmente soportada de Atlassian (aunque los documentos de soporte de Atlassian la
señalan), por lo que podría cambiar. En ese caso, establece ATLASSIAN_CLOUD_ID en
.env para omitir la detección; el mensaje de error te dirá cuándo aplica. Casi nunca
lo necesitas.
Configuración de PyCharm
Intérprete: Settings → Project → Python Interpreter → Add Interpreter → Existing → selecciona
.venv/bin/pythonen el directorio del proyecto. (Si ejecutasteuv sync, el venv ya existe con todo instalado.)Configuración de ejecución para depuración: Run → Edit Configurations → + → Python:
Run: módulo
jira_mcp(elige "module" en lugar de "script path")Parameters:
--check PROJ-123Working directory: la raíz del proyecto (cualquier cosa funciona, pero esto es ordenado)
Ahora puedes establecer puntos de interrupción en cualquier lugar (p. ej. en
client.py) y depurar solicitudes reales. Los errores dentro de un servidor MCP en ejecución son invisibles de otro modo.
Conectar a Claude Code
Usa el Python del venv por ruta absoluta; un python simple no se resolverá al venv
cuando Claude Code inicie el servidor.
macOS/Linux:
claude mcp add jira -- /path/to/PythonProject/.venv/bin/python -m jira_mcpWindows:
claude mcp add jira -- C:\path\to\PythonProject\.venv\Scripts\python.exe -m jira_mcpNotas:
Todo lo que está después de
--es el comando que Claude ejecuta; todo lo que está antes son las propias opciones de Claude.El alcance predeterminado es
local(solo tú, solo este proyecto, almacenado en~/.claude.json). Agrega--scope projectpara compartir mediante un.mcp.jsonverificado, o--scope userpara usarlo en todos tus proyectos.
Verificar que está conectado
Dentro de una sesión de Claude Code:
Ejecuta
/mcp; el servidorjiradebería aparecer como conectado, con seis herramientas.O simplemente pregunta: "usa whoami para verificar la conexión de jira".
Solución de problemas
Síntoma | Causa probable y solución |
401 Unauthorized | Correo o token incorrectos, o el token fue revocado/expirado. Recrea el token y actualiza |
403 Forbidden | Token con alcances que carece de |
404 Not Found | La incidencia no existe, o tu cuenta no tiene permiso para verla. Jira informa las incidencias que no puedes ver como 404, y un token nunca otorga más acceso que el humano al que pertenece. Verifica que puedas abrir el ticket en un navegador con esa cuenta. |
Lista de herramientas vacía en Claude | El servidor se bloqueó al inicio. Ejecuta el comando exacto de |
El servidor no arranca | Ejecuta |
Detección fallida / respuestas anónimas | Los registros de inicio (stderr) indican qué URL base se probó y por qué se rechazó. Si |
Notas para desarrolladores nuevos en Python
El venv (
.venv/) es una copia local del proyecto de Python más los paquetes de este proyecto: el equivalente denode_modules, excepto que el intérprete mismo también vive dentro. Por eso Claude Code debe recibir.venv/bin/pythonpor ruta absoluta: no hay una instalación global a la que recurrir.asyncio.run(...)es necesario porque las funciones asíncronas en Python no se ejecutan solo con llamarlas; llamar a una devuelve un objeto coroutine, y algo tiene que impulsarlo. No hay un bucle de eventos ambiental como en Node;asyncio.run()crea un bucle, ejecuta una coroutine hasta completarla y desarma el bucle. El servidor MCP hace esto internamente mediantemcp.run(); el modo--checklo hace explícitamente.Los decoradores (
@mcp.tool) son funciones que reciben la función definida debajo de ellos y la registran/envuelven, como una fábrica de middleware aplicada en el momento de la definición. El decorador de FastMCP lee el nombre, las sugerencias de tipo y el docstring de la función para generar el esquema de herramienta MCP que Claude ve; el docstring es la documentación de la API de la herramienta.python -m jira_mcpejecuta el__main__.pydel paquete, lo más parecido que Python tiene a una entradabinde npm. Funciona desde cualquier directorio porqueuv syncinstaló el proyecto en el venv.
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 Servers
- AlicenseBqualityDmaintenanceEnables fetching and viewing Jira issue details directly through Claude Desktop using secure API token authentication. Provides comprehensive issue information including status, assignee, priority, and descriptions in both human-readable and structured formats.104891MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to search, view, create, and update JIRA issues using natural language commands and JQL queries.98Apache 2.0
- AlicenseAqualityDmaintenanceProvides read-only access to JIRA REST API, enabling LLMs to query and retrieve information from JIRA instances.1418MIT
- FlicenseNot gradedqualityDmaintenanceProvides read-only issue and project management tools for Jira Server/DC, enabling querying issues, projects, and assignments via natural language.
Related MCP Connectors
Connect to Atlassian Jira, Confluence, and Compass to search, create, and manage your work.
Task manager your agent can fully operate: boards, tasks, sprints, roles, worklogs, day planner.
Catch up on Slack without reading it. Unreads, threads, search. Browser-session or hosted OAuth.
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/Satttoshi/jira-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server