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) público y gratuito para datos Web3. Apunta cualquier cliente MCP — Claude Desktop, Cursor, tu propio agente — a él y podrá leer datos de cadena en vivo (altura de bloque, gas, estado de transacción, información ERC-20, precios spot), consultar pronósticos meteorológicos, construir transacciones de transferencia EVM/Solana sin firmar y, para un puñado de herramientas de pago por llamada, consultar datos de mercado, wallets/tokens/ENS, búsqueda de viajes, datos de lugares/energía solar/vista aérea e identidad de perfiles sociales.
Sin clave API, 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 retiene ni firma fondos en tu nombre.
Construido sobre el @modelcontextprotocol/sdk oficial
y NestJS 11.
Contenido
- Inicio rápido
- Úsalo desde Claude Desktop / Cursor
- Herramientas disponibles
- Llamar herramientas directamente (curl)
- Configuración
- Cómo funciona
- Base de datos
- Seguridad
- Scripts
- Contribuciones
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 / ENRICHMENT_RELAY_BASE_URL
# (each required for its own group of paid tools) + WEATHERAPI_KEY (required for weather.forecast)
npm run start:dev
- Verificación de salud:
GET http://localhost:3011/health - Endpoint MCP:
POST http://localhost:3011/mcp - Documentación de API (solo salud):
http://localhost:3011/api/docs
Las migraciones de base de datos se ejecutan automáticamente al arrancar — no se necesita un paso CLI separado.
Ú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 siguientes estarán disponibles para él — sin configuración adicional.
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 de gas actual + sugerencias de tarifa EIP-1559 para una cadena EVM. |
network.token_info | No | Nombre / símbolo / decimales / suministro total de ERC-20. |
network.token_price | No | Precio spot vía CoinGecko (por defecto ETH/USD). |
network.prepare_transfer | No | Construye una transacción de transferencia nativa/ERC-20/SPL sin firmar a partir de un from/to/amount explícito. Nunca firma ni transmite. |
weather.forecast | No | Condiciones actuales, pronóstico, astronomía, búsqueda de ubicación, histórico y consultas meteorológicas marinas, 6 acciones. |
market.crypto | Sí | Consultas de datos de mercado de criptomonedas (fuente CoinGecko), 6 acciones. |
web3.lookup | Sí | Consultas de wallet / token / ENS / simulación de transacciones multicadena, 7 acciones. |
travel.search | Sí | Búsqueda de vuelos y hoteles, 2 acciones. |
places.lookup | Sí | Consultas de lugar / energía solar / vista aérea, 11 acciones. |
social.profile_lookup | Sí | Resolución de identidad de persona / perfil social para un lote de registros. |
Las herramientas están agrupadas por área (network.*, market.*, web3.*, travel.*, places.*,
social.*) 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 pago y recibirás un desafío paymentRequired
(no un error). Tu cliente de wallet lo firma y reintenta la misma llamada con paymentPayload configurado —
tu wallet paga directamente; este servicio solo retransmite la solicitud.
Llamar herramientas directamente (curl)
La mayoría de la gente usará un cliente MCP (arriba), pero el endpoint es JSON-RPC simple sobre HTTP si quieres escribir scripts directamente contra él:
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 no tiene estado, por lo 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 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 | Anulaciones de RPC EVM por cadena — se usan los valores públicos predeterminados si no se configuran (ver src/mcp/utils/chain-registry.util.ts) |
SOLANA_RPC_URL / SOLANA_DEVNET_RPC_URL | No | Anulaciones de RPC del clúster de Solana |
WEATHERAPI_KEY | Sí | Clave API gratuita para weather.forecast — consíguela en la página de registro de WeatherAPI.com (nivel gratuito de 100K llamadas/mes, no se usan funciones de pago). Sin ella, weather.forecast devuelve un error claro en lugar de fallar todo el servicio. |
WEATHERAPI_BASE_URL | Sí | URL base ascendente para weather.forecast — no se confirma ningún valor predeterminado en el código fuente, por lo que la herramienta falla limpiamente hasta que se configura (se envía como https://api.weatherapi.com/v1 en .env.example; anúlalo para apuntar a un espejo simulado/autoalojado para pruebas locales). |
UPSTREAM_RELAY_BASE_URL | Sí | URL base para el relé ascendente detrás de market.crypto / web3.lookup / travel.search — no se confirma ningún valor predeterminado, por lo que esas 3 herramientas fallan hasta que se configura |
ENRICHMENT_RELAY_BASE_URL | Sí | URL base para el relé ascendente detrás de places.lookup / social.profile_lookup — un ascendente separado de UPSTREAM_RELAY_BASE_URL, no se confirma ningún valor predeterminado |
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
Este es un despliegue único e independiente — no comparte espacio de trabajo ni base de datos con ningún otro servicio de Abstraxn. Esto es deliberado: varios registros MCP esperan que un servidor MCP público viva en su propio repositorio 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 sin procesar (lecturas de Solana) · @solana/web3.js + @solana/spl-token (construcción
de transferencias de Solana) · @skalenetwork/bite (transferencias cifradas de privacidad SKALE) · helmet,
@nestjs/throttler
Base de datos
Postgres se usa solo para 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 recuento de llamadas en curso y hora de último acceso. |
observed_wallets | Una fila por dirección de wallet vista pagando vía x402. |
public_mcp_transactions | Historial de solo anexión de llamadas de pago completadas. |
Si Postgres no está disponible, una llamada aún tiene éxito — las escrituras de seguimiento son de mejor esfuerzo y nunca bloquean ni fallan una solicitud MCP real.
Seguridad
Dado que cualquiera puede llamar a este servicio sin clave, importan algunos invariantes:
- Sin superficie SSRF: cada URL saliente (RPC de cadena, relé ascendente, CoinGecko) proviene de 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, configura
app.set('trust proxy', ...)enmain.ts, o el limitador terminará limitando al proxy en lugar de a los llamantes reales. - Sin secretos más allá de la contraseña de la base de datos y
WEATHERAPI_KEY, ambos solo de entorno y nunca registrados —weather.forecastconstruye su URL de solicitud al proveedor con la clave como parámetro de consulta, pero cada línea de registro solo lleva el nombre de la acción y el mensaje de error, nunca la URL en sí. - CORS es comodín por diseño — nada específico de tenant cruza nunca un origen aquí.
¿Encontraste un problema de seguridad? Consulta CONTRIBUTING.md antes de abrir un problema público.
Scripts
| Script | Descripción |
|---|---|
npm run start:dev | Ejecutar en modo de observación |
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 de humo HTTP |
Contribuciones
Los problemas y las solicitudes de extracción son bienvenidos — consulta CONTRIBUTING.md para saber cómo añadir una nueva herramienta y la definición de "hecho" del proyecto.
Licencia: MIT