ServeMyAPI
Un servidor personal para almacenar y acceder de forma segura a claves de API mediante el Llavero de macOS.
Documentación
ServeMyAPI
Un servidor personal MCP (Model Context Protocol) para almacenar y acceder de forma segura a claves de API en distintos proyectos mediante el Llavero de macOS.
🔒 SEGURIDAD PRIMERO: ServeMyAPI está diseñado para ejecutarse LOCALMENTE en tu máquina. Las claves de API NUNCA se transmiten por internet y NUNCA deben desplegarse en servicios en la nube. Lee las pautas de seguridad críticas antes de usarlo.
Soporte multiplataforma: ServeMyAPI ahora incluye una capa de abstracción de almacenamiento que permite soportar múltiples plataformas:
- macOS: Usa el Llavero nativo (predeterminado)
- Windows/Linux: Usa almacenamiento de archivos cifrado
- Docker: Usa automáticamente almacenamiento de archivos cifrado
- Memoria: Disponible para pruebas y almacenamiento temporal
Resumen
ServeMyAPI te permite almacenar claves de API de forma segura en el Llavero de macOS y acceder a ellas a través de una interfaz MCP consistente. Esto facilita:
- Almacenar claves de API de forma segura (nunca son visibles en archivos .env o de configuración)
- Acceder a las mismas claves en múltiples proyectos
- Usar lenguaje natural para almacenar y recuperar claves (cuando se usa con LLMs como Claude)
- Proporcionar claves directamente a tu asistente de IA cuando necesite acceder a servicios
¿Por qué ServeMyAPI en lugar de archivos .ENV?
Usar ServeMyAPI en lugar de archivos .ENV tradicionales resuelve varios problemas comunes:
-
Conflictos de seguridad con GitHub:
- Los archivos .ENV deben excluirse de los repositorios Git por seguridad (mediante .gitignore)
- Esto crea un problema de "contexto oculto" donde la configuración importante es invisible para colaboradores y LLMs
- Los nuevos desarrolladores a menudo tienen dificultades para configurar las variables de entorno correctas
-
Desafíos de integración con LLMs:
- Los LLMs como Claude no pueden acceder directamente a tus archivos .ENV debido a restricciones de seguridad
- Cuando los LLMs necesitan claves de API para completar tareas, a menudo se requieren soluciones manuales
- ServeMyAPI permite que tu asistente de IA solicite claves mediante lenguaje natural
-
Consistencia entre proyectos:
- Con archivos .ENV, normalmente necesitas duplicar las claves de API en múltiples proyectos
- Cuando las claves cambian, debes actualizar varios archivos
- ServeMyAPI proporciona una ubicación de almacenamiento central accesible desde cualquier proyecto
Este enfoque te da lo mejor de ambos mundos: almacenamiento seguro de credenciales sensibles sin sacrificar la visibilidad y accesibilidad para tus herramientas de IA.
Características
- Almacenamiento seguro de claves de API en el Llavero de macOS
- Herramientas MCP simples para almacenar, recuperar, listar y eliminar claves
- Interfaz CLI conveniente para la gestión de claves desde la terminal
- Soporte para transportes stdio y HTTP/SSE (con autenticación)
- Compatible con cualquier cliente MCP (Claude Desktop, etc.)
- Características de seguridad mejoradas:
- Validación de entrada para prevenir ataques de path traversal
- Almacenamiento de archivos cifrado para despliegues en Docker
- Autenticación con token Bearer para endpoints HTTP
- Limitación de velocidad y gestión de sesiones
- Cabeceras de seguridad y protección CORS
- Registro seguro con redacción automática de datos sensibles
Instalación
# Clone the repository
git clone https://github.com/yourusername/servemyapi.git
cd servemyapi
# Install dependencies
npm install
# Build the project
npm run build
Uso
Interfaz CLI
ServeMyAPI incluye una interfaz de línea de comandos para la gestión rápida de claves directamente desde tu terminal:
# Install the CLI globally
npm run build
npm link
# List all stored API keys
api-key list
# Get a specific API key
api-key get github_token
# Store a new API key
api-key store github_token ghp_123456789abcdefg
# Delete an API key
api-key delete github_token
# Display help
api-key help
Ejecutar como servidor stdio
Esta es la forma más sencilla de usar ServeMyAPI como servidor MCP, especialmente cuando trabajas con Claude Desktop:
npm start
Ejecutar como servidor HTTP
Para aplicaciones que requieren acceso HTTP:
node dist/server.js
Esto iniciará el servidor en el puerto 3000 (o el puerto especificado en la variable de entorno PORT).
⚠️ ADVERTENCIA DE SEGURIDAD IMPORTANTE
NO USES LA VERSIÓN HOSPEDADA DE SMITHERY para almacenar claves de API reales. El despliegue en Smithery existe solo con fines de demostración. Usarlo:
- Transmitiría tus claves de API por internet (incluso con HTTPS, esto viola el principio de mantener las claves locales)
- Almacenaría tus claves en el servidor de otra persona (la infraestructura de Smithery)
- Podría exponer tus claves al operador del servicio o en caso de una brecha de seguridad
ServeMyAPI está diseñado para ejecutarse LOCALMENTE en tu máquina únicamente. Todo el modelo de seguridad depende de que las claves nunca salgan de tu entorno local.
Configuración de clientes MCP
ServeMyAPI funciona con cualquier cliente compatible con MCP. Los archivos de configuración de ejemplo se proporcionan en el directorio examples.
Claude Desktop
Para usar ServeMyAPI con Claude Desktop:
-
Localiza o crea el archivo de configuración de Claude Desktop:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%AppData%\Claude\claude_desktop_config.json
- macOS:
-
Agrega ServeMyAPI a la sección
mcpServers(puedes copiarlo desdeexamples/claude_desktop_config.json):{ "mcpServers": { "serveMyAPI": { "command": "node", "args": [ "/ABSOLUTE/PATH/TO/servemyapi/dist/index.js" ] } } } -
Reemplaza
/ABSOLUTE/PATH/TO/servemyapicon la ruta real a tu instalación de ServeMyAPI. -
Reinicia Claude Desktop.
Windsurf
Para usar ServeMyAPI con Windsurf:
- Abre el editor Windsurf y navega a Configuración
- Agrega ServeMyAPI a tu configuración de servidor MCP usando el ejemplo en
examples/windsurf_config.json - Adapta las rutas a tu instalación local
Herramientas MCP
ServeMyAPI expone las siguientes herramientas:
store-api-key
Almacena una clave de API en el llavero.
Parámetros:
name: El nombre/identificador de la clave de APIkey: La clave de API a almacenar
Ejemplo (desde Claude):
Using serveMyAPI, store my API key ABC123XYZ as "OpenAI API Key"
get-api-key
Recupera una clave de API del llavero.
Parámetros:
name: El nombre/identificador de la clave de API a recuperar
Ejemplo (desde Claude):
Using serveMyAPI, get the API key named "OpenAI API Key"
delete-api-key
Elimina una clave de API del llavero.
Parámetros:
name: El nombre/identificador de la clave de API a eliminar
Ejemplo (desde Claude):
Using serveMyAPI, delete the API key named "OpenAI API Key"
list-api-keys
Lista todas las claves de API almacenadas.
No se requieren parámetros.
Ejemplo (desde Claude):
Using serveMyAPI, list all my stored API keys
Opciones de almacenamiento
ServeMyAPI selecciona automáticamente el mejor proveedor de almacenamiento para tu plataforma:
Detección de plataforma
- macOS: Llavero (predeterminado)
- Windows: Almacenamiento de archivos cifrado
- Linux: Almacenamiento de archivos cifrado
- Docker: Almacenamiento de archivos cifrado
Configuración manual
Puedes anular la detección automática:
# Force a specific storage type
export SERVEMYAPI_STORAGE_TYPE=file # or 'keychain', 'memory'
# Configure file storage location
export STORAGE_DIR=/path/to/secure/directory
Tipos de almacenamiento
-
Almacenamiento en Llavero (solo macOS)
- Seguridad nativa a nivel de sistema operativo
- No se necesita cifrado
- Requiere permiso del usuario en el primer uso
-
Almacenamiento en archivo (multiplataforma)
- Cifrado AES-256-GCM
- Derivación de claves PBKDF2
- Se almacena en
~/.servemyapi/keys.json.encpor defecto - Requiere la variable de entorno
ENCRYPTION_KEY
-
Almacenamiento en memoria (pruebas)
- Solo en memoria
- Los datos se pierden al reiniciar
- Útil para pruebas y desarrollo
Seguridad
Características de seguridad principales
- Almacenamiento consciente de la plataforma: Selecciona automáticamente almacenamiento seguro para cada plataforma
- Almacenamiento en Llavero de macOS: Las claves de API se almacenan en el Llavero de macOS con seguridad nativa a nivel de sistema operativo
- Almacenamiento de archivos cifrado: Soporte multiplataforma con cifrado AES-256-GCM
- Cifrado en Docker: Cuando se ejecuta en Docker, las claves se cifran usando AES-256-GCM con derivación de claves PBKDF2
- Autenticación: Los endpoints HTTP/SSE requieren autenticación con token Bearer
- Validación de entrada: La validación estricta previene ataques de path traversal e inyección
- Limitación de velocidad: Protege contra abusos con límites de solicitudes configurables
- Registro seguro: Redacción automática de datos sensibles en todas las salidas de registro
Seguridad del servidor HTTP
Cuando se usa el transporte HTTP/SSE:
# Set authentication key
export SERVEAPI_AUTH_KEY="your-secure-api-key"
# Set encryption key for Docker
export ENCRYPTION_KEY="your-encryption-key"
# Configure CORS origins
export ALLOWED_ORIGINS="https://app1.com,https://app2.com"
Incluye el token Bearer en las solicitudes:
Authorization: Bearer your-secure-api-key
Mejores prácticas
- Usa siempre HTTPS en producción - Despliega detrás de un proxy inverso con TLS
- Establece claves de autenticación fuertes - Usa
openssl rand -base64 32para generarlas - Ejecuta como no root - La imagen de Docker usa automáticamente un usuario restringido
- Rotación regular de claves - Actualiza periódicamente tus claves de autenticación y cifrado
- Monitorea los registros de acceso - Observa patrones sospechosos o intentos no autorizados
Para una configuración de seguridad detallada, consulta docs/SECURITY.md.
Hoja de ruta
Los planes futuros para ServeMyAPI incluyen:
-
Herramienta de escaneo de código: Una herramienta que escanea automáticamente tu base de código en busca de endpoints de API, URLs sensibles y variables de entorno, y luego sugiere nombres para almacenarlos en el Llavero. Esto permitiría a los desarrolladores seguir usando archivos .ENV en su flujo de trabajo habitual mientras garantiza que las credenciales también estén disponibles para LLMs y otras herramientas cuando sea necesario.
-
Soporte multiplataforma: Investigar opciones de almacenamiento seguro de credenciales para Windows y Linux para hacer ServeMyAPI más ampliamente accesible.
-
Integración con frameworks populares: Proporcionar integración fácil con frameworks como Next.js, Express y otros.
-
Interfaz de usuario para gestión de claves: Una interfaz web simple para gestionar directamente tus claves de API almacenadas.
Siéntete libre de sugerir características adicionales o contribuir a la hoja de ruta abriendo un issue o pull request.
Desarrollo
# Run in development mode with hot reload
npm run dev
# Use the CLI during development
npm run cli list
# Lint the code
npm run lint
# Build for production
npm run build
Licencia
MIT