Abstraxn
O servidor MCP público do Abstraxn Agent Kit dá a qualquer agente de IA acesso instantâneo a dados Web3 e de mercado, sem necessidade de cadastro ou chave de API. Consulte dados de blockchain ao vivo, incluindo números de blocos, preços de gas, status de transações e informações e preços de tokens ERC-20 nas principais chains EVM e na Solana. Você também pode acessar as APIs pay-per-call do x402engine para dados de mercado de criptomoedas, consultas de carteira, tokens e ENS, simulação de transações on-chain e busca de voos e hotéis. Chamadas pagas são liquidadas diretamente da carteira de criptomoedas do próprio chamador por meio do protocolo x402, enquanto a Abstraxn nunca detém ou custodia fundos. Ideal para agentes de IA que precisam de dados de blockchain, Web3 e mercado em tempo real, sem atrito de integração.
Documentação
Serviço Público Web3 MCP da Abstraxn
Um servidor MCP (Model Context Protocol) público e gratuito para dados Web3. Aponte qualquer cliente MCP — Claude Desktop, Cursor, seu próprio agente — para ele e ele poderá ler dados de cadeia ao vivo (altura do bloco, gás, status de transação, informações ERC-20, preços à vista), consultar previsões meteorológicas, construir transações de transferência EVM/Solana não assinadas e, para um punhado de ferramentas pagas por chamada, consultar dados de mercado, carteiras/tokens/ENS, busca de viagens, dados de lugares/solar/vista aérea e identidade de perfis sociais.
Sem chave de API, sem conta, sem cadastro. Ferramentas gratuitas estão abertas a qualquer pessoa; ferramentas pagas são liquidadas diretamente da carteira do próprio chamador via protocolo de pagamento x402 — este serviço nunca detém ou assina fundos em seu nome.
Construído sobre o oficial @modelcontextprotocol/sdk
e NestJS 11.
Conteúdo
- Início rápido
- Usar a partir do Claude Desktop / Cursor
- Ferramentas disponíveis
- Chamar ferramentas diretamente (curl)
- Configuração
- Como funciona
- Banco de dados
- Segurança
- Scripts
- Contribuindo
Início rápido
git clone https://github.com/Abstraxn-Labs/abstraxn-agent-layer.git
cd abstraxn-agent-layer
npm install
cp .env.example .env
# Edit .env: Postgres connection + UPSTREAM_RELAY_BASE_URL / ENRICHMENT_RELAY_BASE_URL
# (each required for its own group of paid tools) + WEATHERAPI_KEY (required for weather.forecast)
npm run start:dev
- Verificação de saúde:
GET http://localhost:3011/health - Endpoint MCP:
POST http://localhost:3011/mcp - Documentação da API (somente saúde):
http://localhost:3011/api/docs
As migrações do banco de dados são executadas automaticamente na inicialização — nenhuma etapa de CLI separada é necessária.
Usar a partir do Claude Desktop / Cursor
Adicione isto à configuração do seu cliente MCP (por exemplo, claude_desktop_config.json ou mcp.json do Cursor):
{
"mcpServers": {
"abstraxn-public-web3": {
"url": "http://localhost:3011/mcp"
}
}
}
Reinicie o cliente e as ferramentas abaixo ficarão disponíveis para ele — nenhuma configuração adicional.
Ferramentas disponíveis
| Ferramenta | Paga? | O que faz |
|---|---|---|
network.blocknumber | Não | Número do bloco EVM atual ou slot Solana. Consulte uma cadeia ou todas de uma vez. |
network.transaction_status | Não | Consulte uma transação/assinatura por hash em EVM ou Solana. |
network.gas_info | Não | Preço atual do gás + dicas de taxa EIP-1559 para uma cadeia EVM. |
network.token_info | Não | Nome / símbolo / decimais / fornecimento total ERC-20. |
network.token_price | Não | Preço à vista via CoinGecko (padrão ETH/USD). |
network.prepare_transfer | Não | Construa uma transação de transferência nativa/ERC-20/SPL não assinada a partir de um from/to/amount explícito. Nunca assina ou transmite. |
weather.forecast | Não | Condições atuais, previsão, astronomia, busca de localização, histórico e consultas meteorológicas marinhas, 6 ações. |
market.crypto | Sim | Consultas de dados de mercado de criptomoedas (fonte CoinGecko), 6 ações. |
web3.lookup | Sim | Consultas multi-cadeia de carteira / token / ENS / simulação de transação, 7 ações. |
travel.search | Sim | Busca de voos e hotéis, 2 ações. |
places.lookup | Sim | Consultas de lugar / solar / vista aérea, 11 ações. |
social.profile_lookup | Sim | Resolução de identidade de pessoa / perfil social para um lote de registros. |
As ferramentas são agrupadas por área (network.*, market.*, web3.*, travel.*, places.*,
social.*) para que um cliente MCP possa navegá-las como uma árvore em vez de uma lista plana.
Como funcionam as ferramentas pagas: chame uma sem pagamento e você recebe um desafio paymentRequired
(não um erro). Seu cliente de carteira o assina e tenta novamente a mesma chamada com paymentPayload definido —
sua carteira paga diretamente; este serviço apenas retransmite a solicitação.
Chamar ferramentas diretamente (curl)
A maioria das pessoas usará um cliente MCP (acima), mas o endpoint é JSON-RPC simples sobre HTTP se você quiser criar scripts diretamente contra ele:
BASE=http://localhost:3011
ACCEPT='Accept: application/json, text/event-stream' # required by the MCP spec
# 1. Initialize a session
curl -s -X POST "$BASE/mcp" -H 'Content-Type: application/json' -H "$ACCEPT" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"my-client","version":"1.0"}}}'
# 2. List available tools
curl -s -X POST "$BASE/mcp" -H 'Content-Type: application/json' -H "$ACCEPT" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'
# 3. Call a tool
curl -s -X POST "$BASE/mcp" -H 'Content-Type: application/json' -H "$ACCEPT" \
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"network.token_price","arguments":{"symbol":"bitcoin"}}}'
GET /mcp retorna 405 por design — cada chamada é sem estado, então não há sessão para retomar.
Configuração
Copie .env.example para .env. Tudo tem um padrão seguro, exceto o marcado
como obrigatório:
| Variável | Obrigatória | Descrição |
|---|---|---|
PORT | Não | Porta HTTP (padrão 3011) |
POSTGRES_HOST / PORT / USER / PASSWORD / DB | Não | Conexão Postgres, usada apenas para rastreamento de abuso |
PUBLIC_MCP_RATE_LIMIT_PER_MIN / _WINDOW_MS | Não | Limite de taxa global por IP (padrão 30/min) |
CHAIN_RPC_* | Não | Substituições de RPC EVM por cadeia — padrões públicos são usados se não definidos (veja src/mcp/utils/chain-registry.util.ts) |
SOLANA_RPC_URL / SOLANA_DEVNET_RPC_URL | Não | Substituições de RPC do cluster Solana |
WEATHERAPI_KEY | Sim | Chave de API gratuita para weather.forecast — obtenha uma na página de cadastro da WeatherAPI.com (100 mil chamadas/mês no nível gratuito, nenhum recurso pago usado). Sem ela, weather.forecast retorna um erro claro em vez de falhar todo o serviço. |
WEATHERAPI_BASE_URL | Sim | URL base upstream para weather.forecast — nenhum padrão é commitado no código-fonte, então a ferramenta falha limpa até que isso seja definido (envia como https://api.weatherapi.com/v1 em .env.example; substitua para apontar para um espelho mock/auto-hospedado para testes locais). |
UPSTREAM_RELAY_BASE_URL | Sim | URL base para o relay upstream por trás de market.crypto / web3.lookup / travel.search — nenhum padrão é commitado, então essas 3 ferramentas falham até que isso seja definido |
ENRICHMENT_RELAY_BASE_URL | Sim | URL base para o relay upstream por trás de places.lookup / social.profile_lookup — um upstream separado de UPSTREAM_RELAY_BASE_URL, nenhum padrão é commitado |
Como funciona
MCP client (Claude Desktop, Cursor, your agent)
→ POST /mcp (this service, stateless — a fresh McpServer per request)
→ free tools: direct chain RPC / CoinGecko calls
→ paid tools: relayed upstream, settled by the caller's wallet via x402
Este é um deployable único e independente — não compartilha workspace ou banco de dados com nenhum outro serviço da Abstraxn. Isso é deliberado: vários registros MCP esperam que um servidor MCP público viva em seu próprio repositório com uma rota e um conjunto fixo de ferramentas, revisável de ponta a ponta.
Stack: Node.js 20+ · NestJS 11 · @modelcontextprotocol/sdk
^1.30.0 (SDK oficial) · PostgreSQL + TypeORM · @x402/core ·
viem (EVM) + JSON-RPC bruto (leituras Solana) · @solana/web3.js + @solana/spl-token (construção
de transferência Solana) · @skalenetwork/bite (transferências criptografadas de privacidade SKALE) · helmet,
@nestjs/throttler
Banco de dados
Postgres é usado apenas para rastreamento de abuso — nenhuma tabela de tenant, política ou configuração existe:
| Tabela | Propósito |
|---|---|
observed_ips | Uma linha por IP do chamador, com contagem de chamadas em execução e hora da última visualização. |
observed_wallets | Uma linha por endereço de carteira visto pagando via x402. |
public_mcp_transactions | Histórico somente de anexação de chamadas pagas concluídas. |
Se o Postgres estiver inacessível, uma chamada ainda é bem-sucedida — as gravações de rastreamento são de melhor esforço e nunca bloqueiam ou falham uma solicitação MCP real.
Segurança
Como qualquer pessoa pode chamar este serviço sem chave, alguns invariantes importam:
- Sem superfície SSRF: cada URL de saída (RPC de cadeia, relay upstream, CoinGecko) vem da configuração do lado do servidor — nenhuma ferramenta aceita uma URL fornecida pelo chamador.
- Limitação de taxa é global e chaveada por IP — a única alavanca disponível sem contas. Se você
implantar atrás de um proxy reverso, defina
app.set('trust proxy', ...)emmain.ts, ou o limitador acabará limitando o proxy em vez dos chamadores reais. - Sem segredos além da senha do banco de dados e
WEATHERAPI_KEY, ambos somente por ambiente e nunca registrados —weather.forecastconstrói a URL de solicitação do provedor com a chave como parâmetro de consulta, mas cada linha de log sempre carrega apenas o nome da ação e a mensagem de erro, nunca a URL em si. - CORS é curinga por design — nada específico de tenant cruza uma origem aqui.
Encontrou um problema de segurança? Veja CONTRIBUTING.md antes de abrir um problema público.
Scripts
| Script | Descrição |
|---|---|
npm run start:dev | Executar em modo de observação |
npm run build | Compilar para dist/ |
npm run start:prod | Executar o build compilado (dist/main) |
npm run lint | ESLint |
npm test | Jest — testes unitários, de integração de nível SDK e de fumaça HTTP |
Contribuindo
Issues e PRs são bem-vindos — veja CONTRIBUTING.md para saber como adicionar uma nova ferramenta e a definição de pronto do projeto.
Licença: MIT