Alpha Vantage
Accede a datos del mercado de valores en tiempo real e históricos desde la API de Alpha Vantage.
Documentación
✅ Servidor MCP oficial de Alpha Vantage
Un servidor MCP para la API de datos del mercado de valores, la API de Alphavantage.
URL del servidor MCP: https://mcp.alphavantage.co
PyPi: https://pypi.org/project/alphavantage-mcp/
Configuración
Cómo obtener una clave de API
- Regístrate para obtener una clave gratuita de la API de Alphavantage
- Añade la clave de API a tus variables de entorno como
ALPHAVANTAGE_API_KEY
Instalación
Opción 1: Usando uvx (Recomendado)
La forma más sencilla de usar el servidor MCP de AlphaVantage es con uvx:
# Run directly without installation
uvx alphavantage-mcp
# Or with specific arguments
uvx alphavantage-mcp --server http --port 8080
Opción 2: Usando pip
pip install alphavantage-mcp
alphavantage-mcp
Opción 3: Desde el código fuente
git clone https://github.com/calvernaz/alphavantage.git
cd alphavantage
uv run alphavantage
Modos del servidor
El servidor de AlphaVantage puede ejecutarse en dos modos diferentes:
Servidor Stdio (Predeterminado)
Este es el modo estándar del servidor MCP utilizado para herramientas como Claude Desktop.
alphavantage
# or explicitly:
alphavantage --server stdio
Servidor HTTP Streamable
Este modo proporciona actualizaciones en tiempo real mediante transmisión HTTP.
alphavantage --server http --port 8080
Servidor HTTP Streamable con autenticación OAuth 2.1
Este modo añade autenticación OAuth 2.1 al servidor HTTP, siguiendo la especificación MCP para acceso seguro.
alphavantage --server http --port 8080 --oauth
Configuración de OAuth
Al usar la bandera --oauth, el servidor requiere configuración de OAuth 2.1 mediante variables de entorno:
Variables de entorno requeridas:
export OAUTH_AUTHORIZATION_SERVER_URL="https://your-auth-server.com/realms/your-realm"
export OAUTH_RESOURCE_SERVER_URI="https://your-mcp-server.com"
Variables de entorno opcionales:
# Token validation method (default: jwt)
export OAUTH_TOKEN_VALIDATION_METHOD="jwt" # or "introspection"
# For JWT validation
export OAUTH_JWT_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----"
export OAUTH_JWT_ALGORITHM="RS256" # default
# For token introspection validation
export OAUTH_INTROSPECTION_ENDPOINT="https://your-auth-server.com/realms/your-realm/protocol/openid-connect/token/introspect"
export OAUTH_INTROSPECTION_CLIENT_ID="your-client-id"
export OAUTH_INTROSPECTION_CLIENT_SECRET="your-client-secret"
# Optional: Required scopes (space-separated)
export OAUTH_REQUIRED_SCOPES="mcp:access mcp:read"
# Optional: Enable session binding for additional security (default: true)
export OAUTH_SESSION_BINDING_ENABLED="true"
Funciones de OAuth
La implementación de OAuth proporciona:
- Metadatos de recursos protegidos OAuth 2.0 endpoint (
/.well-known/oauth-protected-resource) - Autenticación con token Bearer para todas las solicitudes MCP
- Métodos de validación JWT e introspección de tokens
- Cumplimiento de las mejores prácticas de seguridad MCP:
- Validación de audiencia del token (previene ataques de paso de tokens)
- Prevención de secuestro de sesión con identificadores de sesión seguros
- Sesiones vinculadas al usuario para mayor seguridad
- Encabezados WWW-Authenticate adecuados para respuestas 401
Ejemplo: Configuración de Keycloak
Para pruebas con Keycloak:
# Keycloak OAuth configuration
export OAUTH_AUTHORIZATION_SERVER_URL="https://keycloak.example.com/realms/mcp-realm"
export OAUTH_RESOURCE_SERVER_URI="https://mcp.example.com"
export OAUTH_TOKEN_VALIDATION_METHOD="introspection"
export OAUTH_INTROSPECTION_ENDPOINT="https://keycloak.example.com/realms/mcp-realm/protocol/openid-connect/token/introspect"
export OAUTH_INTROSPECTION_CLIENT_ID="mcp-server"
export OAUTH_INTROSPECTION_CLIENT_SECRET="your-keycloak-client-secret"
export OAUTH_REQUIRED_SCOPES="mcp:access"
# Start server with OAuth
alphavantage --server http --port 8080 --oauth
Flujo del cliente OAuth
Cuando OAuth está habilitado, los clientes MCP deben:
- Descubrir el servidor de autorización mediante
GET /.well-known/oauth-protected-resource - Registrarse en el servidor de autorización (si se usa registro dinámico de clientes)
- Obtener tokens de acceso del servidor de autorización
- Incluir tokens en las solicitudes:
Authorization: Bearer <access-token> - Manejar respuestas 401/403 y renovar tokens según sea necesario
Opciones:
--server: Elige entre el modo de servidorstdio(predeterminado) ohttp--port: Especifica el puerto para el servidor HTTP Streamable (predeterminado: 8080)--oauth: Habilita la autenticación OAuth 2.1 (requiere--server http)
📊 Telemetría
El servidor MCP de AlphaVantage incluye métricas opcionales de Prometheus para monitoreo y observabilidad.
Habilitación de la telemetría
Establece las siguientes variables de entorno para habilitar la telemetría:
# Enable telemetry (default: true)
export MCP_TELEMETRY_ENABLED=true
# Server identification (optional)
export MCP_SERVER_NAME=alphavantage
export MCP_SERVER_VERSION=1.0.0
# Metrics server port (default: 9464)
export MCP_METRICS_PORT=9464
Endpoint de métricas
Cuando la telemetría está habilitada, las métricas de Prometheus están disponibles en:
http://localhost:9464/metrics
Métricas disponibles
El servidor recopila las siguientes métricas para cada llamada de herramienta:
mcp_tool_calls_total- Número total de llamadas de herramientas (etiquetadas por herramienta y resultado)mcp_tool_latency_seconds- Histograma de latencia de ejecución de herramientasmcp_tool_request_bytes- Histograma del tamaño de la carga útil de solicitudesmcp_tool_response_bytes- Histograma del tamaño de la carga útil de respuestasmcp_tool_active_concurrency- Medidor de llamadas de herramientas concurrentes activasmcp_tool_errors_total- Errores totales por tipo (tiempo de espera, entrada incorrecta, conexión, desconocido)
Ejemplo de uso con telemetría
# Start server with telemetry enabled
export MCP_TELEMETRY_ENABLED=true
export MCP_SERVER_NAME=alphavantage-prod
export ALPHAVANTAGE_API_KEY=your_api_key
alphavantage --server http --port 8080
# View metrics
curl http://localhost:9464/metrics
🚀 Implementación sin servidor en AWS
Implementa el servidor MCP de AlphaVantage en AWS Lambda usando el patrón MCP sin estado para una implementación lista para producción y escalable.
Implementación rápida en AWS
cd deploy/aws-stateless-mcp-lambda
export ALPHAVANTAGE_API_KEY=your_api_key_here
./deploy.sh
Características:
- ✅ Patrón MCP sin estado - Perfecto para el modelo de ejecución de Lambda
- ✅ Escalado automático - Maneja cualquier carga con AWS Lambda + API Gateway
- ✅ Rentable - Paga solo por las solicitudes (~$1-5/mes para uso típico)
- ✅ Listo para producción - Basado en patrones oficiales de muestra de AWS
- ✅ Soporte OAuth 2.1 - Autenticación opcional para acceso seguro
📖 Documentación completa: Consulta la Guía de implementación en AWS para instrucciones completas de configuración, pruebas, monitoreo y solución de problemas.
Uso con Claude Desktop
Opción 1: Usando uvx (Recomendado)
Añade esto a tu claude_desktop_config.json:
{
"mcpServers": {
"alphavantage": {
"command": "uvx",
"args": ["alphavantage-mcp"],
"env": {
"ALPHAVANTAGE_API_KEY": "YOUR_API_KEY_HERE"
}
}
}
}
Opción 2: Desde el código fuente
Si clonaste el repositorio, usa esta configuración:
{
"mcpServers": {
"alphavantage": {
"command": "uv",
"args": [
"--directory",
"<DIRECTORY-OF-CLONED-PROJECT>/alphavantage",
"run",
"alphavantage"
],
"env": {
"ALPHAVANTAGE_API_KEY": "YOUR_API_KEY_HERE"
}
}
}
}
Ejecutar el servidor en modo HTTP Streamable
Usando uvx:
{
"mcpServers": {
"alphavantage": {
"command": "uvx",
"args": ["alphavantage-mcp", "--server", "http", "--port", "8080"],
"env": {
"ALPHAVANTAGE_API_KEY": "YOUR_API_KEY_HERE"
}
}
}
}
Desde el código fuente:
{
"mcpServers": {
"alphavantage": {
"command": "uv",
"args": [
"--directory",
"<DIRECTORY-OF-CLONED-PROJECT>/alphavantage",
"run",
"alphavantage",
"--server",
"http",
"--port",
"8080"
],
"env": {
"ALPHAVANTAGE_API_KEY": "YOUR_API_KEY_HERE"
}
}
}
}
📺 Video de demostración
Mira una demostración rápida del servidor MCP de Alpha Vantage en acción:
🔧 Desarrollo y publicación
Publicación en PyPI
Este proyecto incluye scripts para publicar en PyPI y TestPyPI:
# Publish to TestPyPI (for testing)
python scripts/publish.py --test
# Publish to PyPI (production)
python scripts/publish.py
# Use uv publish instead of twine
python scripts/publish.py --test --use-uv
El script usa twine por defecto (recomendado) pero también puede usar uv publish con la bandera --use-uv.
GitHub Actions
El repositorio incluye un flujo de trabajo de GitHub Actions para publicación automatizada:
- Publicación confiable: Usa la acción de publicación oficial de PyPA con OpenID Connect
- Activación manual: Se puede activar manualmente con opciones para TestPyPI vs PyPI
- Respaldo de Twine: Admite tanto publicación confiable como publicación basada en twine
Para configurar la publicación:
-
Para publicación confiable (recomendado):
- Configura la publicación confiable en PyPI/TestPyPI con tu repositorio de GitHub
- No se necesitan secretos: usa OpenID Connect
-
Para publicación basada en tokens:
- Añade los secretos
PYPI_API_TOKENyTEST_PYPI_API_TOKENa tu repositorio - Usa la opción "Usar twine" en el despacho del flujo de trabajo
- Añade los secretos
🤝 Contribuciones
¡Damos la bienvenida a las contribuciones de la comunidad! Para comenzar, consulta nuestra guía de contribución para instrucciones de configuración, consejos de desarrollo y pautas.