Skip to main content
Glama

Cryo MCP Server

by z80dev

Crio MCP 🧊

Un servidor de Protocolo de Finalización de Modelos (MCP) para la herramienta de extracción de datos de blockchain Cryo .

Cryo MCP le permite acceder a las poderosas capacidades de extracción de datos de blockchain de Cryo a través de un servidor API que implementa el protocolo MCP, lo que facilita la consulta de datos de blockchain desde cualquier cliente compatible con MCP.

Para usuarios de LLM: Guía de flujo de trabajo de consultas SQL

Al utilizar este servidor MCP para ejecutar consultas SQL en datos de blockchain, siga este flujo de trabajo:

  1. Descargar datos con query_dataset :
    result = query_dataset( dataset="blocks", # or "transactions", "logs", etc. blocks="15000000:15001000", # or use blocks_from_latest=100 output_format="parquet" # important: use parquet for SQL ) files = result.get("files", []) # Get the returned file paths
  2. Explorar el esquema con get_sql_table_schema :
    # Check what columns are available in the file schema = get_sql_table_schema(files[0]) # Now you can see all columns, data types, and sample data
  3. Ejecutar SQL con query_sql :
    # Option 1: Simple table reference (DuckDB will match the table name to file) sql_result = query_sql( query="SELECT block_number, timestamp, gas_used FROM blocks", files=files # Pass the files from step 1 ) # Option 2: Using read_parquet() with explicit file path sql_result = query_sql( query=f"SELECT block_number, timestamp, gas_used FROM read_parquet('{files[0]}')", files=files # Pass the files from step 1 )

Alternativamente, utilice el enfoque combinado con query_blockchain_sql :

# Option 1: Simple table reference result = query_blockchain_sql( sql_query="SELECT * FROM blocks", dataset="blocks", blocks_from_latest=100 ) # Option 2: Using read_parquet() result = query_blockchain_sql( sql_query="SELECT * FROM read_parquet('/path/to/file.parquet')", # Path doesn't matter dataset="blocks", blocks_from_latest=100 )

Para obtener un ejemplo completo y funcional, consulte examples/sql_workflow_example.py .

Características

  • Acceso completo al conjunto de datos criogénicos : consulte cualquier conjunto de datos criogénicos a través de un servidor API
  • Integración con MCP : funciona a la perfección con los clientes de MCP
  • Opciones de consulta flexibles : compatibilidad con todas las principales opciones de filtrado y salida de Cryo
  • Opciones de rango de bloques : consulta bloques específicos, el último bloque o rangos relativos
  • Filtrado de contratos : Filtrar datos por dirección del contrato
  • Acceso al último bloque : fácil acceso a los últimos datos del bloque de Ethereum
  • Múltiples formatos de salida : compatibilidad con JSON, CSV y Parquet
  • Información del esquema : obtenga esquemas de conjuntos de datos detallados y datos de muestra
  • Consultas SQL : ejecute consultas SQL directamente contra los datos de blockchain descargados

Instalación (opcional)

Esto no es necesario si va a ejecutar la herramienta con uvx directamente.

# install with UV (recommended) uv tool install cryo-mcp

Requisitos

  • Python 3.8+
  • ultravioleta
  • Una instalación de Cryo en funcionamiento
  • Acceso a un punto final de Ethereum RPC
  • DuckDB (para la funcionalidad de consulta SQL)

Inicio rápido

Uso con Claude Code

  1. Ejecute claude mcp add para obtener un mensaje interactivo.
  2. Introduzca uvx como comando a ejecutar.
  3. Ingrese cryo-mcp --rpc-url <ETH_RPC_URL> [--data-dir <DATA_DIR>] como argumentos
  4. Como alternativa, proporcione ETH_RPC_URL y CRYO_DATA_DIR como variables de entorno.

Las nuevas instancias de claude ahora tendrán acceso a cryo según lo configurado para llegar a su punto final RPC y almacenar datos en el directorio especificado.

Herramientas disponibles

Cryo MCP expone las siguientes herramientas MCP:

list_datasets()

Devuelve una lista de todos los conjuntos de datos Cryo disponibles.

Ejemplo:

client.list_datasets()

query_dataset()

Consulta un conjunto de datos criogénicos con varias opciones de filtrado.

Parámetros:

  • dataset (str): el nombre del conjunto de datos a consultar (por ejemplo, 'bloques', 'transacciones', 'registros')
  • blocks (str, opcional): Especificación del rango de bloques (por ejemplo, '1000:1010')
  • start_block (int, opcional): Número de bloque de inicio (alternativa a bloques)
  • end_block (int, opcional): Número de bloque final (alternativa a bloques)
  • use_latest (bool, opcional): si es verdadero, consulta el último bloque
  • blocks_from_latest (int, opcional): Número de bloques desde el último a incluir
  • contract (str, opcional): Dirección del contrato por la que filtrar
  • output_format (str, opcional): Formato de salida ('json', 'csv', 'parquet')
  • include_columns (lista, opcional): columnas que se incluirán junto con los valores predeterminados
  • exclude_columns (lista, opcional): columnas para excluir de los valores predeterminados

Ejemplo:

# Get transactions from blocks 15M to 15.01M client.query_dataset('transactions', blocks='15M:15.01M') # Get logs for a specific contract from the latest 100 blocks client.query_dataset('logs', blocks_from_latest=100, contract='0x1234...') # Get just the latest block client.query_dataset('blocks', use_latest=True)

lookup_dataset()

Obtenga información detallada sobre un conjunto de datos específico, incluido el esquema y los datos de muestra.

Parámetros:

  • name (str): El nombre del conjunto de datos a buscar
  • sample_start_block (int, opcional): bloque de inicio para datos de muestra
  • sample_end_block (int, opcional): Fin del bloque para datos de muestra
  • use_latest_sample (bool, opcional): utiliza el último bloque para la muestra
  • sample_blocks_from_latest (int, opcional): Número de bloques desde el último para la muestra

Ejemplo:

client.lookup_dataset('logs')

get_latest_ethereum_block()

Devuelve información sobre el último bloque de Ethereum.

Ejemplo:

client.get_latest_ethereum_block()

Herramientas de consulta SQL

Cryo MCP incluye varias herramientas para ejecutar consultas SQL en datos de blockchain:

query_sql()

Ejecute una consulta SQL contra los datos de blockchain descargados.

Parámetros:

  • query (str): consulta SQL a ejecutar
  • files (lista, opcional): Lista de rutas de archivos de Parquet para consultar. Si no hay ninguna, se usarán todos los archivos del directorio de datos.
  • include_schema (bool, opcional): si se debe incluir información del esquema en el resultado

Ejemplo:

# Run against all available files client.query_sql("SELECT * FROM read_parquet('/path/to/blocks.parquet') LIMIT 10") # Run against specific files client.query_sql( "SELECT * FROM read_parquet('/path/to/blocks.parquet') LIMIT 10", files=['/path/to/blocks.parquet'] )

query_blockchain_sql()

Consulta datos de blockchain usando SQL y descarga automáticamente cualquier dato requerido.

Parámetros:

  • sql_query (str): consulta SQL a ejecutar
  • dataset (str, opcional): el conjunto de datos a consultar (por ejemplo, 'bloques', 'transacciones')
  • blocks (str, opcional): Especificación del rango de bloques
  • start_block (int, opcional): Número de bloque de inicio
  • end_block (int, opcional): Número de bloque final
  • use_latest (bool, opcional): si es verdadero, consulta el último bloque
  • blocks_from_latest (int, opcional): Número de bloques antes del último a incluir
  • contract (str, opcional): Dirección del contrato por la que filtrar
  • force_refresh (bool, opcional): fuerza la descarga de nuevos datos incluso si existen
  • include_schema (bool, opcional): incluye información del esquema en el resultado

Ejemplo:

# Automatically downloads blocks data if needed, then runs the SQL query client.query_blockchain_sql( sql_query="SELECT block_number, gas_used, timestamp FROM blocks ORDER BY gas_used DESC LIMIT 10", dataset="blocks", blocks_from_latest=100 )

list_available_sql_tables()

Enumere todas las tablas disponibles que se pueden consultar con SQL.

Ejemplo:

client.list_available_sql_tables()

get_sql_table_schema()

Obtenga el esquema para un archivo parquet específico.

Parámetros:

  • file_path (str): Ruta al archivo parquet

Ejemplo:

client.get_sql_table_schema("/path/to/blocks.parquet")

get_sql_examples()

Obtenga ejemplos de consultas SQL para diferentes conjuntos de datos de blockchain.

Ejemplo:

client.get_sql_examples()

Opciones de configuración

Al iniciar el servidor Cryo MCP, puede utilizar estas opciones de línea de comandos:

  • --rpc-url URL : URL de RPC de Ethereum (anula la variable de entorno ETH_RPC_URL)
  • --data-dir PATH : Directorio para almacenar los datos descargados (anula la variable de entorno CRYO_DATA_DIR, el valor predeterminado es ~/.cryo-mcp/data/)

Variables de entorno

  • ETH_RPC_URL : URL de RPC de Ethereum predeterminada que se utilizará cuando no se especifique mediante la línea de comando
  • CRYO_DATA_DIR : Directorio predeterminado para almacenar los datos descargados cuando no se especifica mediante la línea de comando

Uso avanzado

Consultas SQL contra datos de blockchain

Cryo MCP le permite ejecutar potentes consultas SQL contra datos de blockchain, combinando la flexibilidad de SQL con las capacidades de extracción de datos de Cryo:

Flujo de consulta SQL de dos pasos

Puede dividir la extracción y consulta de datos en dos pasos separados:

# Step 1: Download data and get file paths download_result = client.query_dataset( dataset="transactions", blocks_from_latest=1000, output_format="parquet" ) # Step 2: Use the file paths to run SQL queries file_paths = download_result.get("files", []) client.query_sql( query=f""" SELECT to_address as contract_address, COUNT(*) as tx_count, SUM(gas_used) as total_gas, AVG(gas_used) as avg_gas FROM read_parquet('{file_paths[0]}') WHERE to_address IS NOT NULL GROUP BY to_address ORDER BY total_gas DESC LIMIT 20 """, files=file_paths )
Flujo de consulta SQL combinado

Para mayor comodidad, también puede utilizar la función combinada que maneja ambos pasos:

# Get top gas-consuming contracts client.query_blockchain_sql( sql_query=""" SELECT to_address as contract_address, COUNT(*) as tx_count, SUM(gas_used) as total_gas, AVG(gas_used) as avg_gas FROM read_parquet('/path/to/transactions.parquet') WHERE to_address IS NOT NULL GROUP BY to_address ORDER BY total_gas DESC LIMIT 20 """, dataset="transactions", blocks_from_latest=1000 ) # Find blocks with the most transactions client.query_blockchain_sql( sql_query=""" SELECT block_number, COUNT(*) as tx_count FROM read_parquet('/path/to/transactions.parquet') GROUP BY block_number ORDER BY tx_count DESC LIMIT 10 """, dataset="transactions", blocks="15M:16M" ) # Analyze event logs by topic client.query_blockchain_sql( sql_query=""" SELECT topic0, COUNT(*) as event_count FROM read_parquet('/path/to/logs.parquet') GROUP BY topic0 ORDER BY event_count DESC LIMIT 20 """, dataset="logs", blocks_from_latest=100 )

Nota : Para consultas SQL, utilice siempre output_format="parquet" al descargar datos para garantizar un rendimiento óptimo con DuckDB. Al usar query_blockchain_sql , consulte las rutas de archivo directamente en su SQL mediante la función read_parquet() .

Consultas con rangos de bloques

Cryo MCP admite toda la sintaxis de especificación de bloques de Cryo:

# Using block numbers client.query_dataset('transactions', blocks='15000000:15001000') # Using K/M notation client.query_dataset('logs', blocks='15M:15.01M') # Using offsets from latest client.query_dataset('blocks', blocks_from_latest=100)

Filtrado de contratos

Filtrar registros y otros datos por dirección de contrato:

# Get all logs for USDC contract client.query_dataset('logs', blocks='16M:16.1M', contract='0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48')

Selección de columnas

Incluya sólo las columnas que necesita:

# Get just block numbers and timestamps client.query_dataset('blocks', blocks='16M:16.1M', include_columns=['number', 'timestamp'])

Desarrollo

Estructura del proyecto

cryo-mcp/ ├── cryo_mcp/ # Main package directory │ ├── __init__.py # Package initialization │ ├── server.py # Main MCP server implementation │ ├── sql.py # SQL query functionality ├── tests/ # Test directory │ ├── test_*.py # Test files ├── pyproject.toml # Project configuration ├── README.md # Project documentation

Ejecutar pruebas

uv run pytest

Licencia

Instituto Tecnológico de Massachusetts (MIT)

Créditos

  • Construido sobre la increíble herramienta Cryo de Paradigm
  • Utiliza el protocolo MCP para la comunicación API
Install Server

You must to connect to the server.

A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Un servidor API que implementa el Protocolo de finalización de modelos (MCP) para la extracción de datos de la cadena de bloques Cryo, lo que permite a los usuarios consultar datos de la cadena de bloques Ethereum a través de cualquier cliente compatible con MCP.

  1. Para usuarios de LLM: Guía de flujo de trabajo de consultas SQL
    1. Características
      1. Instalación (opcional)
        1. Requisitos
          1. Inicio rápido
            1. Uso con Claude Code
          2. Herramientas disponibles
            1. list_datasets()
            2. query_dataset()
            3. lookup_dataset()
            4. get_latest_ethereum_block()
            5. Herramientas de consulta SQL
            6. query_sql()
            7. query_blockchain_sql()
            8. list_available_sql_tables()
            9. get_sql_table_schema()
            10. get_sql_examples()
          3. Opciones de configuración
            1. Variables de entorno
              1. Uso avanzado
                1. Consultas SQL contra datos de blockchain
                2. Consultas con rangos de bloques
                3. Filtrado de contratos
                4. Selección de columnas
              2. Desarrollo
                1. Estructura del proyecto
                2. Ejecutar pruebas
              3. Licencia
                1. Créditos

                  Related MCP Servers

                  • A
                    security
                    F
                    license
                    A
                    quality
                    An MCP server that connects Claude to BrianKnows' blockchain knowledge base, allowing users to search for blockchain/DeFi information and interact with a specialized agent across multiple knowledge bases.
                    Last updated -
                    3
                    JavaScript
                  • A
                    security
                    F
                    license
                    A
                    quality
                    An MCP server implementation that enables interaction with the Unstructured API, providing tools to list, create, update, and manage sources, destinations, and workflows.
                    Last updated -
                    39
                    28
                    • Apple
                  • -
                    security
                    A
                    license
                    -
                    quality
                    An MCP server implementation that integrates the RSS3 API, allowing users to query data from decentralized chains, social media platforms, and the RSS3 network through natural language.
                    Last updated -
                    1
                    JavaScript
                    MIT License
                  • -
                    security
                    F
                    license
                    -
                    quality
                    An MCP server that crawls API documentation websites and exposes their content to AI models, enabling them to search, browse, and reference API specifications.
                    Last updated -
                    Python

                  View all related MCP servers

                  MCP directory API

                  We provide all the information about MCP servers via our MCP API.

                  curl -X GET 'https://glama.ai/api/mcp/v1/servers/z80dev/cryo-mcp'

                  If you have feedback or need assistance with the MCP directory API, please join our Discord server