CryptoSense MCP
Preços de criptomoedas em tempo real, moedas em alta, visão geral do mercado e valor do portfólio por meio de linguagem natural em qualquer cliente MCP.
Documentação
CryptoSense MCP
Inteligência de mercado de criptomoedas em tempo real para assistentes de IA.
O CryptoSense MCP encapsula a API gratuita do CoinGecko (sem necessidade de chave) em um servidor Model Context Protocol pronto para produção, construído com FastMCP. Conecte-o ao Claude, Cursor, Windsurf ou qualquer cliente compatível com MCP e faça perguntas em linguagem natural sobre mercados de criptomoedas.
O que este MCP faz
| Ferramenta | Descrição |
|---|---|
price | Preço atual, capitalização de mercado, volume e variação em 24h para qualquer moeda |
trending | Top 10 moedas em alta por volume de busca (últimas 24 h) |
market_overview | Capitalização global de mercado, dominância de BTC/ETH, variação em 24h |
top_coins | Top N moedas por capitalização de mercado com estatísticas completas |
compare | Comparação lado a lado de 2 ou mais moedas |
portfolio_value | Valor em USD das suas participações com melhor/pior desempenho |
Todas as ferramentas exigem uma chave de API CryptoSense (consulte Autenticação).
Instalação
Opção A — local com uv (recomendado)
# 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
Opção B — local com pip
pip install -e .
cp .env.example .env
python -m cryptosense.server
Opção 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
Autenticação
Toda chamada de ferramenta exige um parâmetro api_key com uma chave CryptoSense válida.
Gerar uma chave
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...
As chaves são armazenadas em keys.db (SQLite). O arquivo keys.db fica ao lado do processo do servidor (ou em DATABASE_URL a partir de .env).
Chave de API CoinGecko (opcional)
A API pública gratuita do CoinGecko funciona sem chave. Se você enfrentar limitação de taxa (30 chamadas/min no nível gratuito), cadastre-se em https://www.coingecko.com/en/api para obter uma chave Demo gratuita e adicione-a ao seu .env:
CG_API_KEY=CG-xxxxxxxxxxxxxxxxxxxx
O servidor atualmente usa o endpoint público. Se você adicionar uma chave, passe-a pelo cabeçalho
x-cg-demo-api-keynas chamadas_fetch().
Configurar o Claude Desktop
Adicione ao ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) ou %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"
}
}
}
}
Ou, se o servidor já estiver rodando remotamente, use a URL de transporte HTTP:
{
"mcpServers": {
"cryptosense": {
"url": "http://localhost:8000/mcp"
}
}
}
Configurar o Cursor
Abra Configurações → MCP → Adicionar novo servidor MCP e insira:
| Campo | Valor |
|---|---|
| Nome | CryptoSense |
| Tipo | HTTP |
| URL | http://localhost:8000/mcp |
Ou adicione ao ~/.cursor/mcp.json:
{
"mcpServers": {
"cryptosense": {
"url": "http://localhost:8000/mcp"
}
}
}
Configurar o Windsurf
Adicione ao ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"cryptosense": {
"serverUrl": "http://localhost:8000/mcp"
}
}
}
Referência de Ferramentas e Exemplos de Prompts
price — Obter preço da moeda
"Qual é o preço do Bitcoin?" "Quanto vale o Ethereum em EUR?" "Mostre a variação de 24h e a capitalização de mercado da 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 — Principais moedas por capitalização de mercado
"Mostre as 10 principais moedas." "Quais são as 20 maiores criptomoedas por capitalização de mercado?" "Liste as 5 maiores moedas em EUR."
top_coins(limit=10, currency="usd", api_key="cs_...")
# → { "coins": [{ "rank": 1, "name": "Bitcoin", "price": 67420, ... }, ...] }
trending — Em alta agora
"O que está em alta no mercado de cripto hoje?" "Qual moeda todos estão pesquisando?" "Mostre as altcoins mais quentes agora."
trending(api_key="cs_...")
# → { "trending_coins": [{ "name": "Pepe", "symbol": "PEPE", "market_cap_rank": 54, ... }] }
portfolio_value — Calculadora de portfólio
"Calcule meu portfólio: 0,5 BTC, 5 ETH, 100 SOL." "Quanto vale minha cripto? Tenho 1 bitcoin e 10 ethereum." "Qual é meu total se eu tiver 0,1 BTC, 500 DOGE e 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 — Comparação lado a lado
"Compare Bitcoin e Ethereum." "Qual tem melhor desempenho: Solana, Avalanche ou Polkadot?" "Mostre 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 — Visão geral global
"Qual é a capitalização total do mercado de cripto?" "Qual é a dominância de mercado do Bitcoin hoje?" "Dê-me um resumo global do mercado de cripto."
market_overview(api_key="cs_...")
# → { "total_market_cap_usd": 2.45T, "btc_dominance_percent": 52.3, ... }
Variáveis de Ambiente
| Variável | Padrão | Descrição |
|---|---|---|
CMC_API_KEY | — | Chave de API CoinMarketCap (opcional, reservada para futuras ferramentas CMC) |
MCP_HOST | 0.0.0.0 | Endereço de bind do servidor |
MCP_PORT | 8000 | Porta do servidor |
DATABASE_URL | keys.db | Caminho para o banco de dados SQLite |
CRYPTOSENSE_ENABLE_KEYGEN | — | Defina como true para expor a ferramenta administrativa create_api_key |
Tratamento de Erros
Todas as ferramentas retornam um dicionário {"error": "..."} amigável em caso de falha — nenhum stack trace é retornado ao cliente. Condições tratadas:
- Chave de API inválida/ausente → solicita a geração de uma
- Moeda não encontrada → sugere usar o ID completo do CoinGecko
- Limite de taxa (429) → pede para aguardar e tentar novamente
- Erros de rede → mensagem descritiva
- Parâmetros inválidos → capturados antes da chamada à API
Licença
MIT