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
Abstraxn Serviço Público de Web3 MCP
Um MCP (Model Context Protocol) público, gratuito e servidor para dados Web3. Aponte qualquer cliente MCP — Claude Desktop, Cursor, seu próprio agente — para ele e ele pode ler dados de cadeia em tempo real (altura do bloco, gás, status de transação, informações ERC-20, preços spot) e, para algumas ferramentas pagas por chamada, consultar dados de mercado, wallets/tokens/ENS e busca de viagens.
Sem chave de API, sem conta, sem cadastro. Ferramentas gratuitas estão abertas a qualquer um; ferramentas pagas são liquidadas diretamente da carteira do chamador via protocolo de pagamento x402 — este serviço nunca detém ou assina fundos em seu nome.
Construído sobre o @modelcontextprotocol/sdk oficial 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 (required for the 3 paid tools)
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 separada de CLI é necessária.
Usar a partir do Claude Desktop / Cursor
Adicione isto à configuração do seu cliente MCP (por exemplo, claude_desktop_config.json ou o mcp.json do Cursor):
{
"mcpServers": {
"abstraxn-public-web3": {
"url": "http://localhost:3011/mcp"
}
}
}
Reinicie o cliente e as ferramentas abaixo ficam disponíveis para ele — sem 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 / oferta total de ERC-20. |
network.token_price | Não | Preço spot via CoinGecko (padrão ETH/USD). |
market.crypto | Sim | Consultas de dados de mercado de criptomoedas (fonte CoinGecko), 6 ações. |
web3.lookup | Sim | Consultas de wallet / token / ENS / simulação de transação multicadeia, 7 ações. |
travel.search | Sim | Busca de voos e hotéis, 2 ações. |
As ferramentas são organizadas por área (network.*, market.*, web3.*, travel.*) 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, portanto 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 |
UPSTREAM_RELAY_BASE_URL | Sim | URL base para o relé upstream por trás das 3 ferramentas pagas — nenhum padrão é commitado, então market.crypto / web3.lookup / travel.search falham até que isto seja definido |
Não há variável relacionada a autenticação — não há nada para autenticar em um serviço sem contas ou chaves de API.
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 deploy único e autônomo — não compartilha workspace ou banco de dados com nenhum outro serviço Abstraxn. Isso é proposital: 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 puro (Solana) · helmet, @nestjs/throttler
Banco de dados
Postgres é usado apenas para rastreamento de abuso — não existem tabelas de tenant, política ou configuração:
| 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, algumas invariantes importam:
- Sem superfície SSRF: toda URL de saída (RPC da cadeia, relé upstream, CoinGecko) vem da configuração do lado do servidor — nenhuma ferramenta aceita uma URL fornecida pelo chamador.
- A limitação de taxa é global e por IP — a única alavanca disponível sem contas. Se você fizer deploy atrás de um proxy reverso, defina
app.set('trust proxy', ...)emmain.ts, ou o limitador acaba limitando o proxy em vez dos chamadores reais. - Sem segredos além da senha do banco de dados, que é apenas via ambiente e nunca é registrada.
- CORS é curinga por design — nada específico de tenant cruza origens 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 no 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