project-excel-mcp
Allows to collect data from Jira projects and export it to an Excel workbook as part of the multi-source report.
Allows to run npm audit vulnerability analysis for Node.js projects and export the vulnerabilities and dependency information to an Excel workbook.
Allows to collect SonarQube analysis data for software projects and export it to an Excel workbook.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@project-excel-mcpRecolecta el proyecto proyecto-prueba y genera el Excel."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Project Excel MCP
Servidor Model Context Protocol (MCP) profesional que recolecta información de múltiples fuentes configurables y la exporta a un archivo Excel, usando una hoja por fuente.
Soporta proyectos de software (vulnerabilidades via npm audit, SonarQube, Uptime Robot, Jira) y fuentes REST genéricas via HTTP.
Inicio rápido
Sigue estos pasos para empezar a usar el MCP en menos de 5 minutos.
1. Instalar y compilar
cd /Users/jonathan.navas/Documents/Desarrollo/MCP
npm install
npm run build2. Crear configuración
Elige un ejemplo y cópialo como config.json:
# Para proyectos de software (Jira, SonarQube, Uptime Robot, vulnerabilidades)
cp config/config.projects.example.json config/config.json
# Configuración general
cp config/config.example.json config/config.jsonEdita config/config.json con tus proyectos, rutas y fuentes reales.
3. Configurar credenciales
cp .env.example .envEdita .env y completa solo las variables que vayas a usar. Por ejemplo, si usas Jira:
JIRA_API_TOKEN=tu-token
JIRA_EMAIL=tu-email@example.com
JIRA_URL=https://tu-dominio.atlassian.net/4. Conectar el cliente MCP
Agrega el servidor a tu cliente MCP. Sustituye las credenciales por las tuyas:
{
"mcpServers": {
"project-excel-mcp": {
"command": "node",
"args": [
"/Users/jonathan.navas/Documents/Desarrollo/MCP/dist/index.js"
],
"env": {
"CONFIG_PATH": "/Users/jonathan.navas/Documents/Desarrollo/MCP/config/config.json",
"JIRA_API_TOKEN": "tu-token",
"JIRA_EMAIL": "tu-email@example.com",
"JIRA_URL": "https://tu-dominio.atlassian.net/",
"SONARQUBE_API_KEY": "tu-token",
"UPTIME_ROBOT_API_KEY": "tu-key",
"LOG_LEVEL": "info"
}
}
}
}Reinicia Claude Desktop, Cursor o VS Code para que detecte el servidor. La configuración local conserva el path absoluto /Users/jonathan.navas/Documents/Desarrollo/MCP/dist/index.js.
Después de modificar el código, ejecuta npm run build desde el directorio del MCP y reinicia o reconecta el servidor MCP. Un proceso MCP activo no recarga automáticamente los cambios de src/ ni de dist/. También puedes ejecutar npm run start:fresh manualmente para compilar e iniciar el servidor durante pruebas locales.
5. Usar el MCP
En el chat de tu agente escribe algo como:
Recolecta el proyecto proyecto-prueba y genera el Excel.El agente llamará a la tool collect_project, el servidor recolectará las fuentes habilitadas y creará el Excel en la ruta configurada en outputFile.
Related MCP server: Development Tools MCP Server
Tabla de contenidos
Características
Arquitectura extensible basada en conectores.
Múltiples proyectos y fuentes: cada fuente habilitada escribe en su propia pestaña del Excel.
Validación robusta de configuración y argumentos con Zod.
Seguridad: credenciales solo a través de variables de entorno, redacción de secretos en logs y protección contra path traversal.
Análisis de vulnerabilidades de proyectos Node.js con:
Tipo de dependencia (
dependency,devDependency, etc.).Versión instalada, versión actual y última versión disponible.
Detección de paquetes deprecados.
Detección de paquetes sin mantenimiento (>6 meses sin actualización).
Vulnerabilidades y severidad asociada.
Autorización interactiva: si el proyecto no está en la rama configurada, el servidor solicita autorización al usuario antes de cambiar de rama.
Compatibilidad universal con cualquier cliente MCP que soporte transporte
stdio(Claude Desktop, Cursor, VS Code, Devin).Mensaje de despedida en cada respuesta exitosa:
Muchas gracias vuelva pronto.
Requisitos
Node.js 20 o superior.
npm 10 o superior.
Instalación rápida
# Clonar o ubicarte en el directorio del proyecto
cd /Users/jonathan.navas/Documents/Desarrollo/MCP
# Instalar dependencias
npm install
# Compilar TypeScript
npm run build
# Copiar configuración de ejemplo
cp config/config.example.json config/config.json
cp .env.example .env
# Editar .env con tus credencialesArquitectura
El servidor sigue una arquitectura modular:
src/
index.ts # Punto de entrada y transporte stdio
serverFactory.ts # Registro de tools MCP
config/ # Carga y validación de config.json
connectors/ # Conectores de datos (HTTP, archivo, npm audit, etc.)
services/ # Lógica de negocio: recolecta y escritura de Excel
tools/ # Handlers de las tools MCP
utils/ # Logging, validación de rutas, errores, rate limiting
config/ # Archivos de configuración de ejemplo
tests/ # Tests unitarios
dist/ # Código compilado (generado por npm run build)Flujo de ejecución de una tool:
El cliente MCP invoca una tool (por ejemplo,
collect_project).El servidor valida los argumentos con Zod.
Localiza el proyecto y sus fuentes habilitadas en
config.json.Para cada fuente, resuelve el conector correspondiente y recolecta filas.
excelWritercrea o actualiza el workbook, generando una hoja por fuente.El servidor devuelve la ruta del archivo Excel y un resumen de filas escritas.
Configuración
Variables de entorno
Crea un archivo .env a partir de .env.example:
cp .env.example .envEdita .env con tus credenciales:
# Configuración del servidor
CONFIG_PATH=./config/config.json
LOG_LEVEL=info
NODE_ENV=development
# Proyectos dinámicos (opcional, reemplaza la sección de projects en config.json)
# Cada proyecto puede habilitar npm-audit, sonarqube, uptimeRobot y jira.
# Use apiKeyEnv/emailEnv/baseUrlEnv por fuente para sobrescribir los nombres por defecto de las variables de entorno con credenciales.
PROJECTS=[{"name":"my-next-app","path":"/workspace/my-next-app","branch":"main","timeToCompare":"6 months","sonarqube":{"enabled":true,"baseUrl":"https://sonarqube.example.com","projectKey":"my-next-app","metrics":["coverage","bugs","vulnerabilities"],"apiKeyEnv":"SONARQUBE_API_KEY"},"uptimeRobot":{"enabled":true,"projectName":"My Next App","apiKeyEnv":"UPTIME_ROBOT_API_KEY"},"jira":{"enabled":true,"projectName":"MN","jql":"project = 'MN' AND status != Done ORDER BY created DESC","apiKeyEnv":"JIRA_API_TOKEN","emailEnv":"JIRA_EMAIL","baseUrlEnv":"JIRA_URL"}},{"name":"api-service","path":"/workspace/api-service","branch":"main","timeToCompare":"6 months"}]
# SonarQube
SONARQUBE_API_KEY=tu-sonarqube-token
# Uptime Robot
UPTIME_ROBOT_API_KEY=tu-uptime-robot-key
# Jira
JIRA_API_TOKEN=tu-jira-api-token
JIRA_EMAIL=tu-email@example.com
JIRA_URL=https://tu-dominio.atlassian.net/Archivo config.json
Copia el archivo de ejemplo adecuado:
# Configuración general
cp config/config.example.json config/config.json
# Proyectos de software
cp config/config.projects.example.json config/config.jsonEl archivo config.json tiene esta estructura general:
{
"outputFile": "./output/report.xlsx",
"projects": [
{
"name": "proyecto-prueba",
"sources": [
{
"id": "vulnerabilities",
"sheetName": "Vulnerabilidades",
"type": "npm-audit",
"enabled": true,
"config": { ... }
}
]
}
]
}Campo | Descripción |
| Ruta relativa del archivo Excel de salida. El directorio padre se crea automáticamente si no existe. |
| Array de proyectos. |
| Nombre del proyecto. Se usa como argumento en |
| Fuentes de datos del proyecto. |
| Identificador único de la fuente. |
| Nombre de la pestaña en el Excel. |
| Tipo de conector ( |
|
|
| Configuración específica del conector. |
Uso
Scripts disponibles
Script | Descripción |
| Compila el proyecto TypeScript a |
| Ejecuta el servidor en desarrollo con |
| Ejecuta el servidor compilado existente. |
| Compila TypeScript y luego inicia el servidor; recomendado para clientes MCP. |
| Ejecuta los tests con Vitest. |
| Formatea el código con Prettier. |
| Verifica el formato sin modificar archivos. |
| Verifica tipos de TypeScript sin emitir archivos. |
Herramientas MCP
Tool | Propósito |
| Recolecta todas las fuentes habilitadas de un proyecto y escribe el Excel. Ahora acepta |
| Recolecta una sola fuente de un proyecto, con overrides opcionales de |
| Recolecta todos los proyectos configurados en una sola ejecución. |
| Muestra el estado del servidor, proyectos y fuentes configuradas. |
| Valida que |
Ejemplo de invocación manual
printf '%s\n' \
'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0.0"}}}' \
'{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"collect_project","arguments":{"projectName":"proyecto-prueba"}}}' \
| CONFIG_PATH=./config/config.json node dist/index.jsRespuesta esperada (resumida):
{
"result": {
"content": [
{
"type": "text",
"text": "Project \"proyecto-prueba\" collected successfully.\n{...}\n\nMuchas gracias vuelva pronto"
}
]
},
"jsonrpc": "2.0",
"id": 2
}Uso genérico: analizar cualquier proyecto Node.js sin tocar config.json
collect_project acepta projectPath, projectBranch y timeToCompare como argumentos. Esto permite usar el mismo MCP para analizar cualquier proyecto sin modificar la configuración, siempre que no esté usando la variable de entorno PROJECTS.
Ejemplo: analizar un proyecto en una ruta diferente:
printf '%s\n' \
'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0.0"}}}' \
'{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"collect_project","arguments":{"projectName":"my-next-app","projectPath":"/workspace/my-next-app","projectBranch":"main","timeToCompare":"6 months"}}}' \
| CONFIG_PATH=./config/config.json node dist/index.jsSi projectName no existe en config.json ni en PROJECTS, el MCP creará automáticamente un proyecto dinámico con una fuente npm-audit. Solo necesitas proporcionar projectPath.
Ejemplo con Devin:
Analiza las vulnerabilidades del proyecto my-next-app ubicado en /workspace/my-next-app, rama main.Devin llamará a collect_project con los argumentos dinámicos y generará el Excel.
Múltiples proyectos desde variables de entorno
Si necesitas analizar varios proyectos sin tocar config.json, define la variable de entorno PROJECTS con un JSON array. Cada proyecto puede configurar npm audit, SonarQube, Uptime Robot y Jira:
PROJECTS=[
{
"name": "my-next-app",
"path": "/workspace/my-next-app",
"branch": "main",
"timeToCompare": "6 months",
"sonarqube": {
"enabled": true,
"baseUrl": "https://sonarqube.example.com",
"projectKey": "my-next-app",
"branch": "main",
"metrics": ["coverage", "bugs", "vulnerabilities"],
"apiKeyEnv": "SONARQUBE_API_KEY"
},
"uptimeRobot": {
"enabled": true,
"projectName": "My Next App",
"apiKeyEnv": "UPTIME_ROBOT_API_KEY"
},
"jira": {
"enabled": true,
"projectName": "MN",
"jql": "project = 'MN' AND status != Done ORDER BY created DESC",
"apiKeyEnv": "JIRA_API_TOKEN",
"emailEnv": "JIRA_EMAIL",
"baseUrlEnv": "JIRA_URL"
}
},
{
"name": "api-service",
"path": "/workspace/api-service",
"branch": "main",
"timeToCompare": "6 months",
"npmAudit": { "enabled": true }
}
]Cuando PROJECTS está definida, el MCP la usa en lugar de los proyectos de config.json. Cada fuente genera una hoja con el nombre NombreProyecto - NombreFuente.
Las credenciales siguen en variables de entorno separadas. Puedes usar los nombres por defecto (JIRA_API_TOKEN, SONARQUBE_API_KEY, UPTIME_ROBOT_API_KEY) o definir nombres específicos por proyecto/fuente usando apiKeyEnv, emailEnv y baseUrlEnv. Nunca pongas valores de secretos dentro del JSON de PROJECTS.
Desde Devin:
Recolecta todos los proyectos y genera el Excel.Esto llama a collect_all_projects, analiza todos los proyectos definidos en PROJECTS y escribe una hoja por fuente habilitada.
Para un solo proyecto:
Analiza el proyecto api-service.Configuración del cliente MCP
Todos los ejemplos usan transporte stdio para máxima compatibilidad.
Claude Desktop
Edita claude_desktop_config.json:
{
"mcpServers": {
"project-excel-mcp": {
"command": "node",
"args": [
"/Users/jonathan.navas/Documents/Desarrollo/MCP/dist/index.js"
],
"env": {
"CONFIG_PATH": "/Users/jonathan.navas/Documents/Desarrollo/MCP/config/config.json",
"SONARQUBE_API_KEY": "...",
"UPTIME_ROBOT_API_KEY": "...",
"JIRA_API_TOKEN": "...",
"JIRA_EMAIL": "...",
"JIRA_URL": "...",
"LOG_LEVEL": "info"
}
}
}
}Cursor
Edita .cursor/mcp.json:
{
"mcpServers": {
"project-excel-mcp": {
"command": "node",
"args": [
"/Users/jonathan.navas/Documents/Desarrollo/MCP/dist/index.js"
],
"env": {
"CONFIG_PATH": "/Users/jonathan.navas/Documents/Desarrollo/MCP/config/config.json",
"JIRA_API_TOKEN": "...",
"JIRA_EMAIL": "...",
"JIRA_URL": "..."
}
}
}
}Visual Studio Code
Edita .vscode/mcp.json:
{
"mcpServers": {
"project-excel-mcp": {
"command": "node",
"args": [
"/Users/jonathan.navas/Documents/Desarrollo/MCP/dist/index.js"
],
"env": {
"CONFIG_PATH": "/Users/jonathan.navas/Documents/Desarrollo/MCP/config/config.json",
"JIRA_API_TOKEN": "...",
"JIRA_EMAIL": "...",
"JIRA_URL": "..."
}
}
}
}Devin
Configura el MCP en ~/.config/devin/mcp_config.json (nivel usuario) o .devin/mcp_config.json (nivel proyecto).
Ejemplo para usar el MCP de forma genérica desde cualquier proyecto en Devin:
{
"mcpServers": {
"project-excel-mcp": {
"command": "node",
"args": [
"/Users/jonathan.navas/Documents/Desarrollo/MCP/dist/index.js"
],
"env": {
"CONFIG_PATH": "/workspace/mcp-pruebas/config/config.json",
"PROJECTS": "[{\"name\":\"my-next-app\",\"path\":\"/workspace/my-next-app\",\"branch\":\"main\",\"timeToCompare\":\"6 months\",\"sonarqube\":{\"enabled\":true,\"baseUrl\":\"https://sonarqube.example.com\",\"projectKey\":\"my-next-app\",\"metrics\":[\"coverage\",\"bugs\",\"vulnerabilities\"],\"apiKeyEnv\":\"SONARQUBE_API_KEY\"},\"uptimeRobot\":{\"enabled\":true,\"projectName\":\"My Next App\",\"apiKeyEnv\":\"UPTIME_ROBOT_API_KEY\"},\"jira\":{\"enabled\":true,\"projectName\":\"MN\",\"jql\":\"project = 'MN' AND status != Done ORDER BY created DESC\",\"apiKeyEnv\":\"JIRA_API_TOKEN\",\"emailEnv\":\"JIRA_EMAIL\",\"baseUrlEnv\":\"JIRA_URL\"}},{\"name\":\"api-service\",\"path\":\"/workspace/api-service\",\"branch\":\"main\",\"timeToCompare\":\"6 months\"}]",
"JIRA_API_TOKEN": "...",
"JIRA_EMAIL": "...",
"JIRA_URL": "https://qphcorp.atlassian.net/",
"SONARQUBE_API_KEY": "...",
"UPTIME_ROBOT_API_KEY": "...",
"LOG_LEVEL": "info"
}
}
}
}Con esta configuración puedes pedir simplemente:
Recolecta todos los proyectos y genera el Excel.El MCP usará PROJECTS desde la variable de entorno para analizar todos los proyectos configurados. También puedes pedir un proyecto específico desde el chat:
Analiza el proyecto api-service.También puedes usar el CLI de Devin:
devin mcp add project-excel-mcp -- node /Users/jonathan.navas/Documents/Desarrollo/MCP/dist/index.jsY luego editas el archivo generado para agregar las variables de entorno.
Fuentes de datos soportadas
Tipo | Descripción | Requiere credenciales |
| Fuente REST genérica (APIs propias). | Depende de la URL. |
| Archivo local JSON o CSV. | No. |
| Análisis de vulnerabilidades de un proyecto Node.js. | No. |
| Métricas de calidad de SonarQube. | Sí ( |
| Monitores y estado de Uptime Robot. | Sí ( |
| Issues de proyectos Jira. | Sí ( |
HTTP genérico
Ideal para APIs propias o servicios REST de terceros. Requiere url, method, fieldMapping y opcionalmente apiKeyEnv / apiKeyHeader.
Archivo local
Lee archivos JSON o CSV del disco. Útil para fuentes que ya tienes descargadas.
Análisis de vulnerabilidades
Ejecuta npm audit y npm outdated en el proyecto configurado. Valida que el repositorio esté en la rama indicada antes de analizar. Si no lo está, solicita autorización al usuario para hacer git checkout y pull.
SonarQube
Consulta el endpoint /api/measures/component con las métricas configuradas.
Uptime Robot
Consulta el endpoint getMonitors de la API v2. Puedes filtrar por projectName.
Jira
Consulta /rest/api/3/search con el JQL configurado. Usa autenticación Basic con email + token.
Seguridad
Credenciales: las API keys y tokens viven únicamente en variables de entorno.
config.jsonnunca contiene valores secretos.Protección de rutas: el servidor rechaza rutas absolutas y path traversal para
outputFileypathProject.Sin escritura accidental:
npm auditsolo lee información. Un cambio de rama solo ocurre si el usuario autoriza explícitamente la operación.Logs seguros: el logger redacta automáticamente campos como
apiKey,token,password,secretyemail.Rate limiting: limitador simple en memoria para prevenir bucles de invocaciones.
Tests y calidad de código
# Ejecutar tests
npm run test
# Verificar tipos
npm run typecheck
# Formatear código
npm run format
# Verificar formato
npm run format:checkEl proyecto incluye tests unitarios para:
Validación segura de rutas (
pathResolver).Generación correcta de archivos Excel (
excelWriter).
Usar una fuente MCP existente en lugar de REST API
Algunos servicios ya ofrecen su propio servidor MCP (por ejemplo, UptimeRobot). En ese caso tienes dos opciones.
Opción A: dejar que el cliente orqueste dos MCPs (recomendado)
MCP es un protocolo cliente-servidor. Tu cliente puede conectarse a múltiples servidores MCP al mismo tiempo. Configura el MCP oficial del servicio junto a nuestro project-excel-mcp.
Ejemplo para UptimeRobot:
{
"mcpServers": {
"project-excel-mcp": {
"command": "node",
"args": [
"/Users/jonathan.navas/Documents/Desarrollo/MCP/dist/index.js"
],
"env": {
"CONFIG_PATH": "/Users/jonathan.navas/Documents/Desarrollo/MCP/config/config.json"
}
},
"uptimerobot": {
"command": "npx",
"args": [
"-y",
"mcp-remote@latest",
"https://mcp.uptimerobot.com/mcp",
"--header",
"Authorization: Bearer UPTIMEROBOT_API_TOKEN"
]
}
}
}Luego, en el chat:
Pide a
uptimerobotque liste monitores o detalles de incidentes.Pide a
project-excel-mcpque genere el reporte en Excel.
Opción B: nuestro MCP sigue usando REST API
Si necesitas que el Excel se genere automáticamente, nuestro MCP debe llamar a la REST API del servicio. El conector correspondiente ya hace esto. No existe una forma nativa de que un servidor MCP invoque a otro servidor MCP de manera automática.
Escenario | Qué usar |
Consultar datos en tiempo real con lenguaje natural | MCP oficial del servicio (Opción A). |
Exportar datos automáticamente a Excel | Conector REST dentro de nuestro MCP (Opción B). |
Ambas cosas | Configura ambos MCPs en el cliente. |
Extensión: agregar una nueva fuente (ejemplo con Sentry)
Sigue estos pasos para agregar una fuente que no esté soportada de forma nativa.
Paso 1: decidir si necesitas un conector nuevo
Si la fuente expone una API REST simple y solo necesitas mapear campos, puedes usar el conector http existente. Si requiere lógica adicional (paginación, autenticación especial, transformación de datos), crea un conector dedicado.
Paso 2: crear el conector
Crea src/connectors/sentryConnector.ts:
import type { Connector, ConnectorContext } from "./base.js"
import type { RowData } from "../types.js"
import type { SourceConfigOutput } from "../config/schema.js"
import { getRequiredEnv } from "../utils/env.js"
import { McpAppError } from "../utils/errors.js"
import { logger } from "../utils/logger.js"
interface SentrySourceConfig {
baseUrl?: string
organization: string
project: string
apiKeyEnv?: string
}
export class SentryConnector implements Connector {
constructor(private readonly source: SourceConfigOutput) {
const cfg = source.config as unknown as SentrySourceConfig
if (!cfg.organization || !cfg.project) {
throw new McpAppError(
`sentry source "${source.id}" requires "organization" and "project"`
)
}
}
async collect(ctx: ConnectorContext): Promise<RowData[]> {
const cfg = this.source.config as unknown as SentrySourceConfig
const baseUrl = (cfg.baseUrl || "https://sentry.io/api/0").replace(/\/$/, "")
const token = cfg.apiKeyEnv
? getRequiredEnv(cfg.apiKeyEnv)
: getRequiredEnv("SENTRY_AUTH_TOKEN")
const url = `${baseUrl}/projects/${encodeURIComponent(
cfg.organization
)}/${encodeURIComponent(cfg.project)}/issues/?statsPeriod=24h`
logger.info({ sourceId: ctx.sourceId, url }, "Fetching Sentry issues")
const response = await fetch(url, {
headers: {
Authorization: `Bearer ${token}`,
Accept: "application/json",
},
})
if (!response.ok) {
throw new McpAppError(
`Sentry API returned ${response.status}: ${response.statusText}`
)
}
const issues = (await response.json()) as Array<{
id: string
title: string
culprit?: string
level?: string
status?: string
count?: number
lastSeen?: string
}>
return issues.map((issue) => ({
id: issue.id,
title: issue.title,
culprit: issue.culprit || null,
level: issue.level || null,
status: issue.status || null,
count: issue.count || 0,
lastSeen: issue.lastSeen || null,
}))
}
}Paso 3: agregar el tipo al schema
Edita src/config/schema.ts:
const ALLOWED_SOURCE_TYPES = [
"http",
"file",
"npm-audit",
"sonarqube",
"uptime-robot",
"jira",
"sentry",
] as constPaso 4: registrar el conector en la factory
Edita src/connectors/factory.ts:
import { SentryConnector } from "./sentryConnector.js"
export function createConnector(source: SourceConfigOutput): Connector {
switch (source.type) {
// ... casos existentes ...
case "sentry":
return new SentryConnector(source)
default:
throw new McpAppError(`Unsupported source type: "${source.type}"`)
}
}Paso 5: agregar el tipo de fila (opcional)
Edita src/types.ts:
export interface SentryRow extends RowData {
id: string
title: string
culprit: string | null
level: string | null
status: string | null
count: number
lastSeen: string | null
}Paso 6: agregar la fuente en config.json
{
"id": "sentry-issues",
"sheetName": "Sentry",
"type": "sentry",
"enabled": true,
"config": {
"organization": "mi-organizacion",
"project": "my-next-app",
"apiKeyEnv": "SENTRY_AUTH_TOKEN"
}
}Paso 7: configurar la variable de entorno
SENTRY_AUTH_TOKEN=tu-token-de-sentryPaso 8: recompilar y probar
npm run build
printf '%s\n' \
'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0.0"}}}' \
'{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"collect_source","arguments":{"projectName":"proyecto-prueba","sourceId":"sentry-issues"}}}' \
| CONFIG_PATH=./config/config.json node dist/index.jsConsideraciones para el conector de Sentry
Sentry usa Bearer token. Guarda el token en una variable de entorno.
Si la lista de issues es grande, agrega paginación usando el header
Linkde la respuesta.Si usas Sentry on-premise, configura
baseUrla tu instancia.Respeta los límites de rate limit de Sentry.
Solución de problemas
Síntoma | Causa probable | Solución |
| Falta una env var requerida por una fuente. | Revisa |
| No existe | Copia un archivo de ejemplo y verifica |
| La rama actual del repositorio no coincide con la configurada. | Cambia manualmente de rama o autoriza el cambio cuando el servidor lo solicite. |
| Se intentó escribir o leer fuera del workspace. | Usa rutas relativas dentro del directorio del proyecto. |
El Excel no contiene datos de una fuente | La fuente tiene | Revisa los logs y asegúrate de que la fuente esté habilitada. |
mcp-pruebas
This server cannot be deployed
Maintenance
Related MCP Connectors
Excel analytics: inspect, query (JSON rows), charts, and JSON-to-xlsx workbook writing.
Inspect XLSX/XLSM workbooks, validate email, generate SVG QR codes, and look up domain DNS and TLS.
Dependency releases, TLS and domain expiry, and vendor status pages from one endpoint.
Generate SBOMs, scan vulnerabilities, and analyze dependencies from local projects or Git repos.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceConnects to Jira instances to generate weekly reports based on issue activity, supporting custom JQL queries and optional LLM summarization.1-
- AlicenseCqualityDmaintenanceProvides comprehensive code analysis (quality, complexity, linting, dependencies, security) and web scraping capabilities (static/dynamic content, API discovery) for development workflows.427 npm1MIT
- FlicenseNot gradedqualityNot gradedmaintenanceAggregates tasks from multiple sources (Jira, Markdown TODO files, STM CLI) into a unified SQLite database with full-text search, tagging, and incremental sync capabilities.-
- AlicenseNot gradedqualityDmaintenanceEnables efficient reading, analyzing, and querying of Excel, CSV, and JSON files with support for chunked processing, column/field filtering, and streaming for large datasets. Supports multiple transport protocols (stdio, HTTP, SSE) for flexible integration.10 npm4ISC