Abstraxn
El servidor MCP público de Abstraxn Agent Kit brinda a cualquier agente de IA acceso instantáneo a datos de Web3 y de mercado sin necesidad de registro ni clave API. Consulte datos blockchain en vivo, incluidos números de bloque, precios de gas, estado de transacciones e información y precios de tokens ERC-20 en las principales cadenas EVM y Solana. También puede acceder a las API de pago por llamada de x402engine para datos de criptomercado, consultas de billeteras, tokens y ENS, simulación de transacciones en cadena y búsqueda de vuelos y hoteles. Los pagos se liquidan directamente desde la propia billetera cripto del solicitante a través del protocolo x402, mientras que Abstraxn nunca retiene ni custodia fondos. Ideal para agentes de IA que necesitan datos de blockchain, Web3 y mercado en tiempo real sin fricción de incorporación.
Documentación
Servicio público Web3 MCP de Abstraxn
Un servidor MCP (Model Context Protocol) gratuito y público para datos Web3. Apunta cualquier cliente MCP — Claude Desktop, Cursor, tu propio agente — hacia él y podrá leer datos de cadena en vivo (altura de bloque, gas, estado de transacción, información de ERC-20, precios al contado) y, para un puñado de herramientas de pago por llamada, consultar datos de mercado, wallets/tokens/ENS y búsqueda de viajes.
Sin API key, sin cuenta, sin registro. Las herramientas gratuitas están abiertas a cualquiera; las herramientas de pago se liquidan directamente desde la propia wallet del llamante mediante el protocolo de pago x402 — este servicio nunca custodia ni firma fondos en tu nombre.
Construido sobre el @modelcontextprotocol/sdk oficial
y NestJS 11.
Contenidos
- Inicio rápido
- Úsalo desde Claude Desktop / Cursor
- Herramientas disponibles
- Llamar a las herramientas directamente (curl)
- Configuración
- Cómo funciona
- Base de datos
- Seguridad
- Scripts
- Contribuir
Inicio 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
- Comprobación de salud:
GET http://localhost:3011/health - Endpoint MCP:
POST http://localhost:3011/mcp - Documentación de la API (solo salud):
http://localhost:3011/api/docs
Las migraciones de base de datos se ejecutan automáticamente al arrancar — no se necesita ningún paso adicional de CLI.
Úsalo desde Claude Desktop / Cursor
Añade esto a la configuración de tu cliente MCP (p. ej. claude_desktop_config.json o el mcp.json de Cursor):
{
"mcpServers": {
"abstraxn-public-web3": {
"url": "http://localhost:3011/mcp"
}
}
}
Reinicia el cliente y las herramientas de abajo estarán disponibles para él — sin más configuración.
Herramientas disponibles
| Herramienta | ¿De pago? | Qué hace |
|---|---|---|
network.blocknumber | No | Número de bloque EVM actual o slot de Solana. Consulta una cadena o todas a la vez. |
network.transaction_status | No | Consulta una transacción/firma por hash en EVM o Solana. |
network.gas_info | No | Precio actual del gas + sugerencias de tarifa EIP-1559 para una cadena EVM. |
network.token_info | No | Nombre / símbolo / decimales / suministro total de un ERC-20. |
network.token_price | No | Precio al contado vía CoinGecko (por defecto ETH/USD). |
market.crypto | Sí | Consultas de datos de mercado de cripto (con fuente de CoinGecko), 6 acciones. |
web3.lookup | Sí | Consultas de wallet / token / ENS / simulación de tx multicadena, 7 acciones. |
travel.search | Sí | Búsqueda de vuelos y hoteles, 2 acciones. |
Las herramientas están organizadas por área (network.*, market.*, web3.*, travel.*) para que un cliente MCP
pueda navegarlas como un árbol en lugar de una lista plana.
Cómo funcionan las herramientas de pago: llámalas sin pagar y recibirás un desafío paymentRequired
(no un error). Tu wallet firma ese desafío y reintenta la misma llamada con paymentPayload definido —
tu wallet paga directamente; este servicio solo retransmite la solicitud.
Llamar a las herramientas directamente (curl)
La mayoría usará un cliente MCP (ver arriba), pero el endpoint es JSON-RPC puro sobre HTTP si quieres scriptear contra él directamente:
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 devuelve 405 por diseño — cada llamada es sin estado, así que no hay sesión que reanudar.
Configuración
Copia .env.example a .env. Todo tiene un valor predeterminado seguro excepto el
marcado como obligatorio:
| Variable | ¿Obligatoria? | Descripción |
|---|---|---|
PORT | No | Puerto HTTP (por defecto 3011) |
POSTGRES_HOST / PORT / USER / PASSWORD / DB | No | Conexión Postgres, usada solo para el seguimiento de abuso |
PUBLIC_MCP_RATE_LIMIT_PER_MIN / _WINDOW_MS | No | Límite de tasa global por IP (por defecto 30/min) |
CHAIN_RPC_* | No | Overrides de RPC EVM por cadena — se usan los valores públicos por defecto si no se definen (ver src/mcp/utils/chain-registry.util.ts) |
SOLANA_RPC_URL / SOLANA_DEVNET_RPC_URL | No | Overrides de RPC del clúster de Solana |
UPSTREAM_RELAY_BASE_URL | Sí | URL base para el relay ascendente detrás de las 3 herramientas de pago — no se ha hecho commit de ningún valor por defecto, así que market.crypto / web3.lookup / travel.search fallan hasta que se establezca |
No existe ninguna variable relacionada con autenticación — no hay nada que autenticar en un servicio sin cuentas ni API keys.
Cómo 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
Esto es un despliegue único e independiente — no comparte espacio de trabajo ni base de datos con ningún otro servicio de Abstraxn. Es deliberado: varios registros de MCP esperan que un servidor MCP público viva en su propio repo con una ruta y un conjunto de herramientas fijo, revisable de principio a fin.
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
Base de datos
Postgres se usa solo para el seguimiento de abuso — no existen tablas de tenant, políticas o configuración:
| Tabla | Propósito |
|---|---|
observed_ips | Una fila por IP de llamante, con un contador de llamadas y la hora de la última visita. |
observed_wallets | Una fila por dirección de wallet que se vea pagando vía x402. |
public_mcp_transactions | Historial de solo apéndice de las llamadas de pago completadas. |
Si Postgres no está disponible, una llamada igualmente tiene éxito — las escrituras de seguimiento son de mejor esfuerzo y nunca bloquean ni hacen fallar una solicitud MCP real.
Seguridad
Como cualquiera puede llamar a este servicio sin clave, importan algunas invariantes:
- Sin superficie SSRF: cada URL saliente (RPC de cadena, relay ascendente, CoinGecko) proviene de la configuración del lado del servidor — ninguna herramienta acepta una URL proporcionada por el llamante.
- El límite de tasa es global y por IP — la única palanca disponible sin cuentas. Si despliegas
detrás de un proxy inverso, define
app.set('trust proxy', ...)enmain.ts, o el limitador acabará limitando al proxy en lugar de a los llamantes reales. - Sin secretos más allá de la contraseña de la base de datos, que es solo de entorno y nunca se registra.
- CORS es comodín por diseño — nada específico de un tenant cruza nunca un origen aquí.
¿Has encontrado un problema de seguridad? Consulta CONTRIBUTING.md antes de abrir un issue público.
Scripts
| Script | Descripción |
|---|---|
npm run start:dev | Ejecutar en modo watch |
npm run build | Compilar a dist/ |
npm run start:prod | Ejecutar la compilación generada (dist/main) |
npm run lint | ESLint |
npm test | Jest — pruebas unitarias, de integración a nivel de SDK y smoke tests HTTP |
Contribuir
Los issues y PRs son bienvenidos — consulta CONTRIBUTING.md para saber cómo añadir una nueva herramienta y la definición de "terminado" del proyecto.
Licencia: MIT