-
Notifications
You must be signed in to change notification settings - Fork 1
Closed
Labels
documentationImprovements or additions to documentationImprovements or additions to documentationenhancementNew feature or requestNew feature or requestmedium-priority
Description
Descripción del Problema
Severidad: MEDIA
Falta un archivo .env.example que documente todas las variables de entorno necesarias para configurar el proyecto. Esto puede llevar a configuraciones incorrectas, credenciales expuestas accidentalmente, y dificulta la configuración para nuevos desarrolladores.
Problemas Identificados
1. Sin documentación de variables de entorno
No existe un archivo .env.example que muestre las variables necesarias.
2. Configuración implícita
Las variables de entorno están dispersas en el código sin documentación central.
3. Riesgo de exposición de credenciales
Sin un ejemplo claro, los desarrolladores pueden cometer errores de configuración.
4. Dificultad para setup inicial
Los nuevos desarrolladores no saben qué variables configurar.
Variables de Entorno Identificadas
Del análisis del código, estas son las variables que deberían documentarse:
# GitHub API Configuration
GITHUB_TOKEN=
# Server Configuration
MCP_SSE_PORT=3200
MCP_TIMEOUT=180000
SSE_TIMEOUT=1800000
# Logging
LOG_LEVEL=info
# CORS Configuration
CORS_ALLOW_ORIGIN=*
CORS_ALLOW_CREDENTIALS=false
# Transport Configuration
USE_MULTIPLEXING_SSE=false
# Environment
NODE_ENV=developmentImpacto
- Configuración incorrecta: Errores en setup del proyecto
- Exposición de credenciales: Commits accidentales de tokens
- Tiempo perdido: Desarrolladores adivinando configuraciones
- Inconsistencias: Diferentes configuraciones entre entornos
- Debugging difícil: Problemas por configuración incorrecta
Solución Recomendada
1. Crear archivo .env.example completo
# GitHub MCP SSE Server Configuration
# =================================
# GitHub API Configuration
# =================================
# GitHub Personal Access Token (required for API access)
# Generate a token at: https://github.com/settings/tokens
# Required scopes: repo, read:user, read:org
GITHUB_TOKEN=ghp_your_github_token_here
# =================================
# Server Configuration
# =================================
# Port for the MCP SSE server
MCP_SSE_PORT=3200
# Request timeout in milliseconds (3 minutes default)
MCP_TIMEOUT=180000
# SSE connection timeout in milliseconds (30 minutes default)
SSE_TIMEOUT=1800000
# =================================
# Logging Configuration
# =================================
# Log level: debug, info, warn, error
LOG_LEVEL=info
# =================================
# CORS Configuration
# =================================
# Allowed origins for CORS (comma-separated for multiple)
# Use '*' for all origins (NOT recommended for production)
CORS_ALLOW_ORIGIN=http://localhost:3000
# Allow credentials in CORS requests (true/false)
# WARNING: Never use 'true' with CORS_ALLOW_ORIGIN='*'
CORS_ALLOW_CREDENTIALS=false
# =================================
# Transport Configuration
# =================================
# Enable multiplexing SSE transport (true/false)
# true: Multiple clients share single transport (efficient)
# false: Each client gets own transport (legacy behavior)
USE_MULTIPLEXING_SSE=false
# =================================
# Environment Configuration
# =================================
# Environment: development, production, test
NODE_ENV=development2. Actualizar .gitignore
# Environment files
.env
.env.local
.env.production
.env.development
.env.test
# Keep example file
!.env.example
# GitHub token files
.github_token
.config/github/token3. Script de configuración inicial
#!/bin/bash
# setup.sh
echo "🚀 Setting up GitHub MCP SSE Server..."
# Copy environment file if it doesn't exist
if [ ! -f .env ]; then
echo "📄 Creating .env file from template..."
cp .env.example .env
echo "✅ .env file created"
echo "⚠️ Please edit .env and configure your GITHUB_TOKEN"
else
echo "ℹ️ .env file already exists"
fi
# Install dependencies
echo "📦 Installing dependencies..."
npm install
# Build project
echo "🔨 Building project..."
npm run build
echo "✅ Setup complete!"
echo ""
echo "Next steps:"
echo "1. Edit .env and add your GITHUB_TOKEN"
echo "2. Run 'npm start' to start the server"
echo "3. Check the README.md for more configuration options"4. Validación de configuración
// src/config/validation.ts
import { z } from 'zod';
const envSchema = z.object({
GITHUB_TOKEN: z.string().min(1, 'GITHUB_TOKEN is required'),
MCP_SSE_PORT: z.coerce.number().min(1).max(65535).default(3200),
MCP_TIMEOUT: z.coerce.number().min(1000).default(180000),
SSE_TIMEOUT: z.coerce.number().min(1000).default(1800000),
LOG_LEVEL: z.enum(['debug', 'info', 'warn', 'error']).default('info'),
CORS_ALLOW_ORIGIN: z.string().default('*'),
CORS_ALLOW_CREDENTIALS: z.coerce.boolean().default(false),
USE_MULTIPLEXING_SSE: z.coerce.boolean().default(false),
NODE_ENV: z.enum(['development', 'production', 'test']).default('development')
});
export function validateConfig() {
try {
return envSchema.parse(process.env);
} catch (error) {
console.error('❌ Configuration validation failed:');
console.error(error.errors);
console.error('');
console.error('Please check your .env file and ensure all required variables are set.');
console.error('See .env.example for reference.');
process.exit(1);
}
}Diferentes archivos por entorno
.env.example.development
# Development Configuration
GITHUB_TOKEN=ghp_your_development_token
MCP_SSE_PORT=3200
LOG_LEVEL=debug
CORS_ALLOW_ORIGIN=http://localhost:3000,http://localhost:3001
CORS_ALLOW_CREDENTIALS=true
USE_MULTIPLEXING_SSE=false
NODE_ENV=development.env.example.production
# Production Configuration
GITHUB_TOKEN=ghp_your_production_token
MCP_SSE_PORT=3200
LOG_LEVEL=info
CORS_ALLOW_ORIGIN=https://yourdomain.com
CORS_ALLOW_CREDENTIALS=true
USE_MULTIPLEXING_SSE=true
NODE_ENV=production
# Security
REQUIRE_AUTHENTICATION=true
JWT_SECRET=your-super-secret-jwt-key.env.example.docker
# Docker Configuration
GITHUB_TOKEN=ghp_your_token
MCP_SSE_PORT=3200
MCP_TIMEOUT=60000
LOG_LEVEL=info
CORS_ALLOW_ORIGIN=*
NODE_ENV=production
USE_MULTIPLEXING_SSE=trueTareas
- Crear archivo
.env.examplecompleto con documentación - Actualizar
.gitignorepara excluir archivos de entorno - Crear script
setup.shpara configuración inicial - Implementar validación de configuración con Zod
- Crear archivos de ejemplo por entorno (dev/prod/docker)
- Actualizar README.md con sección de configuración
- Agregar validación de variables requeridas al inicio
- Documentar todas las variables existentes en el código
- Crear guía de troubleshooting para configuración
- Agregar tests para validación de configuración
Tests de Configuración
describe('Configuration', () => {
it('should validate required environment variables', () => {
const originalEnv = process.env;
process.env = { ...originalEnv, GITHUB_TOKEN: 'test-token' };
expect(() => validateConfig()).not.toThrow();
process.env = originalEnv;
});
it('should fail without GITHUB_TOKEN', () => {
const originalEnv = process.env;
process.env = { ...originalEnv };
delete process.env.GITHUB_TOKEN;
expect(() => validateConfig()).toThrow();
process.env = originalEnv;
});
it('should use default values for optional variables', () => {
const originalEnv = process.env;
process.env = { GITHUB_TOKEN: 'test-token' };
const config = validateConfig();
expect(config.MCP_SSE_PORT).toBe(3200);
expect(config.LOG_LEVEL).toBe('info');
process.env = originalEnv;
});
});Referencias
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
documentationImprovements or additions to documentationImprovements or additions to documentationenhancementNew feature or requestNew feature or requestmedium-priority