CryptoSense MCP
Precios de criptomonedas en tiempo real, monedas en tendencia, resumen del mercado y valor de cartera mediante lenguaje natural en cualquier cliente MCP.
Documentación
CryptoSense MCP
Inteligencia de mercado cripto en tiempo real para asistentes de IA.
CryptoSense MCP envuelve la API gratuita de CoinGecko (sin necesidad de clave) en un servidor de Model Context Protocol listo para producción, construido con FastMCP. Conéctalo a Claude, Cursor, Windsurf o cualquier cliente compatible con MCP y haz preguntas en lenguaje natural sobre los mercados cripto.
Qué hace este MCP
| Herramienta | Descripción |
|---|---|
price | Precio actual, capitalización de mercado, volumen y cambio en 24 h para cualquier moneda |
trending | Top 10 de monedas en tendencia por volumen de búsqueda (últimas 24 h) |
market_overview | Capitalización de mercado global, dominancia de BTC/ETH, cambio en 24 h |
top_coins | Top N de monedas por capitalización de mercado con estadísticas completas |
compare | Comparación lado a lado de 2 o más monedas |
portfolio_value | Valor en USD de tus tenencias con el mejor y el peor rendimiento |
Todas las herramientas requieren una clave de API de CryptoSense (consulta Autenticación).
Instalación
Opción A — local con uv (recomendada)
# 1. Clone
git clone https://github.com/your-org/cryptosense-mcp.git
cd cryptosense-mcp
# 2. Create venv and install
uv venv && uv pip install -e .
# 3. Copy and edit environment variables
cp .env.example .env
# Edit .env: set CMC_API_KEY if you have one, adjust MCP_PORT if needed
# 4. Generate your first API key
python -c "
import asyncio
from src.cryptosense.auth import generate_api_key
key = asyncio.run(generate_api_key('you@example.com'))
print('Your API key:', key)
"
# 5. Start the server
cryptosense-mcp
# or: python -m cryptosense.server
Opción B — local con pip
pip install -e .
cp .env.example .env
python -m cryptosense.server
Opción C — Docker
docker build -t cryptosense-mcp .
docker run -p 8000:8000 \
-e CMC_API_KEY=your_key \
-v cryptosense-data:/app/data \
cryptosense-mcp
Autenticación
Cada llamada a una herramienta requiere un parámetro api_key con una clave válida de CryptoSense.
Generar una clave
import asyncio
from cryptosense.auth import generate_api_key
key = asyncio.run(generate_api_key(email="you@example.com", plan="free"))
print(key) # cs_Abc123...
Las claves se almacenan en keys.db (SQLite). El archivo keys.db se encuentra junto al proceso del servidor (o en DATABASE_URL desde .env).
Clave de API de CoinGecko (opcional)
La API pública gratuita de CoinGecko funciona sin clave. Si experimentas límites de tasa (30 llamadas/min en el nivel gratuito), regístrate en https://www.coingecko.com/en/api para obtener una clave de API Demo gratuita y agrégala a tu .env:
CG_API_KEY=CG-xxxxxxxxxxxxxxxxxxxx
El servidor actualmente usa el endpoint público. Si agregas una clave, pásala a través del encabezado
x-cg-demo-api-keyen las llamadas a_fetch().
Configurar Claude Desktop
Agrega a ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) o %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"cryptosense": {
"command": "python",
"args": ["-m", "cryptosense.server"],
"cwd": "/absolute/path/to/cryptosense-mcp",
"env": {
"MCP_HOST": "127.0.0.1",
"MCP_PORT": "8000"
}
}
}
}
O si el servidor ya está ejecutándose de forma remota, usa la URL de transporte HTTP:
{
"mcpServers": {
"cryptosense": {
"url": "http://localhost:8000/mcp"
}
}
}
Configurar Cursor
Abre Configuración → MCP → Agregar nuevo servidor MCP e ingresa:
| Campo | Valor |
|---|---|
| Nombre | CryptoSense |
| Tipo | HTTP |
| URL | http://localhost:8000/mcp |
O agrega a ~/.cursor/mcp.json:
{
"mcpServers": {
"cryptosense": {
"url": "http://localhost:8000/mcp"
}
}
}
Configurar Windsurf
Agrega a ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"cryptosense": {
"serverUrl": "http://localhost:8000/mcp"
}
}
}
Referencia de herramientas y ejemplos de prompts
price — Obtener precio de una moneda
"¿Cuál es el precio de Bitcoin?" "¿Cuánto vale Ethereum en EUR?" "Muéstrame el cambio en 24 h y la capitalización de mercado de Solana."
price(coin="bitcoin", currency="usd", api_key="cs_...")
# → { "coin": "bitcoin", "price": 67420.0, "market_cap": 1.32T, "change_24h_percent": 2.4, ... }
top_coins — Top de monedas por capitalización de mercado
"Muéstrame el top 10 de monedas." "¿Cuáles son las 20 criptomonedas principales por capitalización de mercado?" "Lista las 5 monedas más grandes en EUR."
top_coins(limit=10, currency="usd", api_key="cs_...")
# → { "coins": [{ "rank": 1, "name": "Bitcoin", "price": 67420, ... }, ...] }
trending — Tendencias ahora
"¿Qué está en tendencia en cripto hoy?" "¿Qué moneda está buscando todo el mundo?" "Muéstrame las altcoins más populares ahora mismo."
trending(api_key="cs_...")
# → { "trending_coins": [{ "name": "Pepe", "symbol": "PEPE", "market_cap_rank": 54, ... }] }
portfolio_value — Calculadora de portafolio
"Calcula mi portafolio: 0.5 BTC, 5 ETH, 100 SOL." "¿Cuánto vale mi cripto? Tengo 1 bitcoin y 10 ethereum." "¿Cuál es mi total si tengo 0.1 BTC, 500 DOGE y 2 ETH?"
portfolio_value(
holdings={"bitcoin": 0.5, "ethereum": 5, "solana": 100},
currency="usd",
api_key="cs_...",
)
# → { "total_value": 54230.00, "best_performer": {...}, "breakdown": [...] }
compare — Comparación lado a lado
"Compara Bitcoin y Ethereum." "¿Cuál rinde mejor: Solana, Avalanche o Polkadot?" "Muéstrame BTC vs ETH vs BNB."
compare(coins=["bitcoin", "ethereum", "solana"], currency="usd", api_key="cs_...")
# → { "comparison": [...], "best_performer_24h": "solana", "worst_performer_24h": "bitcoin" }
market_overview — Resumen global
"¿Cuál es la capitalización total del mercado cripto?" "¿Cuál es la dominancia de mercado de Bitcoin hoy?" "Dame un resumen global del cripto."
market_overview(api_key="cs_...")
# → { "total_market_cap_usd": 2.45T, "btc_dominance_percent": 52.3, ... }
Variables de entorno
| Variable | Predeterminado | Descripción |
|---|---|---|
CMC_API_KEY | — | Clave de API de CoinMarketCap (opcional, reservada para futuras herramientas de CMC) |
MCP_HOST | 0.0.0.0 | Dirección de enlace del servidor |
MCP_PORT | 8000 | Puerto del servidor |
DATABASE_URL | keys.db | Ruta a la base de datos SQLite |
CRYPTOSENSE_ENABLE_KEYGEN | — | Establecer en true para exponer la herramienta de administración create_api_key |
Manejo de errores
Todas las herramientas devuelven un diccionario {"error": "..."} amigable en caso de fallo — nunca se devuelven trazas de pila al cliente. Condiciones manejadas:
- Clave de API inválida o faltante → solicita generar una
- Moneda no encontrada → sugiere usar el ID completo de CoinGecko
- Límite de tasa (429) → pide esperar y reintentar
- Errores de red → mensaje descriptivo
- Parámetros inválidos → capturados antes de la llamada a la API
Licencia
MIT