Cyberlink MCP Server

Interactúa con el contrato inteligente CW-Social en blockchains basadas en Cosmos.

Documentación

Servidor MCP de Cyberlink

Un servidor de Model Context Protocol (MCP) para interactuar con el contrato inteligente CW-Social en blockchains basados en Cosmos. Este servidor proporciona una interfaz estandarizada para crear, actualizar y consultar cyberlinks: relaciones semánticas entre entidades en la blockchain.

Características

  • Operaciones principales

    • Crear, leer, actualizar y eliminar cyberlinks
    • Soporte para cyberlinks nombrados con identificadores personalizados
    • Operaciones por lotes para procesamiento eficiente
    • Capacidades de consulta enriquecidas con filtrado y paginación
  • Gestión de transacciones

    • Monitoreo de transacciones en tiempo real y sondeo de estado
    • Resultados detallados de transacciones y manejo de errores
    • Soporte para firma de transacciones interna y externa
    • Capacidades de transferencia de tokens
  • Características avanzadas

    • Generación de embeddings semánticos mediante Hugging Face transformers
    • Seguimiento de progreso en tiempo real para operaciones de modelos
    • Cálculos de similitud coseno para coincidencia semántica
    • Sistema de ID flexible con IDs formateados (fids) e IDs globales (gids)
    • Consultas basadas en rangos de tiempo con soporte UTC
    • Filtrado por propietario y estadísticas

Requisitos previos

  • Node.js 16 o superior
  • Administrador de paquetes npm o yarn
  • Acceso a un nodo de blockchain Cosmos en ejecución
  • Billetera con fondos suficientes para transacciones
  • Cursor IDE para desarrollo
  • Claude Desktop para asistencia de IA

Instalación

  1. Clonar el repositorio:
git clone https://github.com/your-org/cw-social-mcp.git
cd cw-social-mcp
  1. Instalar dependencias:
npm install
  1. Compilar el proyecto:
npm run build
  1. Configurar variables de entorno (ver sección de Configuración)

Configuración

Configuración del servidor MCP

Crear o modificar el archivo de configuración en ~/.cursor/mcp.json:

{
  "mcpServers": {
    "cw-graph": {
      "command": "node",
      "args": ["PATH_TO_YOUR_PROJECT/dist/index.js"],
      "env": {
        "NODE_URL": "http://localhost:26657",
        "WALLET_MNEMONIC": "your wallet mnemonic phrase",
        "CONTRACT_ADDRESS": "your contract address",
        "DENOM": "stake",
        "BENCH32_PREFIX": "cyber"
      }
    }
  }
}

Configuración requerida

Variables de entorno requeridas:

  • PATH_TO_YOUR_PROJECT: Ruta absoluta al directorio del proyecto
  • NODE_URL: URL del nodo de blockchain Cosmos
  • CONTRACT_ADDRESS: Dirección del contrato inteligente desplegado

Configuración opcional

Variables de entorno opcionales:

  • WALLET_MNEMONIC: Frase mnemotécnica de la billetera para firma (predeterminado: ninguna - las transacciones no estarán firmadas)
  • DENOM: Denominación del token (predeterminado: "stake")
  • BENCH32_PREFIX: Prefijo BECH32

Herramientas disponibles

Gestión de Cyberlinks

Herramientas de creación

create_cyberlink

  • Descripción: Crear un cyberlink individual
  • Requerido: type
  • Opcional: from, to, value

create_cyberlink2

  • Descripción: Crear nodo + enlace
  • Requerido: node_type, link_type
  • Opcional: node_value, link_value, link_to_existing_id, link_from_existing_id

create_named_cyberlink

  • Descripción: Crear cyberlink nombrado (solo administrador)
  • Requerido: name, cyberlink

create_cyberlinks

  • Descripción: Crear cyberlinks por lotes
  • Requerido: cyberlinks[]

Herramientas de modificación

update_cyberlink

  • Descripción: Actualizar cyberlink existente
  • Requerido: gid, cyberlink

delete_cyberlink

  • Descripción: Eliminar cyberlink
  • Requerido: gid

update_with_embedding

  • Descripción: Agregar embedding semántico
  • Requerido: formatted_id

Operaciones de consulta

Consultas básicas

query_by_gid

  • Descripción: Obtener por ID global
  • Requerido: gid

query_by_fid

  • Descripción: Obtener por ID formateado
  • Requerido: fid

query_cyberlinks

  • Descripción: Listar todos con paginación
  • Parámetros: limit, start_after

query_named_cyberlinks

  • Descripción: Listar cyberlinks nombrados
  • Parámetros: limit, start_after

query_by_gids

  • Descripción: Obtener múltiples por IDs
  • Requerido: gids[]

Consultas filtradas

query_cyberlinks_by_type

  • Descripción: Filtrar por tipo
  • Requerido: type

query_cyberlinks_by_from

  • Descripción: Filtrar por origen
  • Requerido: from

query_cyberlinks_by_to

  • Descripción: Filtrar por destino
  • Requerido: to

query_cyberlinks_by_owner_and_type

  • Descripción: Filtrar por propietario y tipo
  • Requerido: owner, type

Consultas basadas en tiempo

query_cyberlinks_by_owner_time

  • Descripción: Filtrar por tiempo de creación
  • Requerido: owner, start_time

query_cyberlinks_by_owner_time_any

  • Descripción: Filtrar por cualquier tiempo
  • Requerido: owner, start_time

Operaciones del sistema

Información del contrato

query_last_id

  • Descripción: Obtener el último ID asignado

query_config

  • Descripción: Obtener configuración del contrato

query_debug_state

  • Descripción: Obtener estado de depuración (solo administrador)

get_graph_stats

  • Descripción: Obtener estadísticas del grafo

Transacciones y billetera

query_transaction

  • Descripción: Obtener estado de transacción
  • Requerido: transaction_hash

get_tx_status

  • Descripción: Obtener estado detallado de transacción
  • Requerido: transaction_hash

query_wallet_balance

  • Descripción: Obtener saldos de la billetera

send_tokens

  • Descripción: Transferir tokens
  • Requerido: recipient, amount

Parámetros de consulta

Formato de rango de tiempo

  • Todas las marcas de tiempo deben estar en formato ISO 8601
  • Ejemplo: 2024-06-01T12:00:00Z
  • Se asume zona horaria UTC si no se especifica
  • start_time es requerido, end_time es opcional

Paginación

  • start_after: Cursor de paginación
  • limit: Resultados por página (predeterminado: 50)

Desarrollo

Comandos de compilación

# Production build
npm run build

# Development mode
npm run dev

Estructura del proyecto

src/
├── index.ts                # Entry point
├── cyberlink-service.ts    # Core service
├── services/
│   ├── embedding.service.ts  # Semantic analysis
│   └── __tests__/           # Test suite
└── types.ts                # Type definitions

cursor_rules/
└── chat_history.mdc       # Chat rules

Códigos de error

InvalidParams

  • Descripción: Parámetros inválidos
  • Causas comunes: Campos requeridos faltantes, formato incorrecto

MethodNotFound

  • Descripción: Herramienta desconocida
  • Causas comunes: Error tipográfico en el nombre de la herramienta, herramienta obsoleta

InternalError

  • Descripción: Error del sistema
  • Causas comunes: Problemas de red, errores del contrato

Ejecutar MCP sobre SSE

Puede ejecutar el servidor MCP usando Docker para convertirlo en un servidor SSE. Esto garantiza que la caché del modelo de Hugging Face se conserve entre ejecuciones y que las variables de entorno se carguen desde su archivo .env.

docker run \
  --name cw-social \
  -v $(pwd)/hf-cache:/app/hf-cache \
  --env-file .env \
  -p 8000:8000 \
  cw-social-mcp
  • -v $(pwd)/hf-cache:/app/hf-cache monta un directorio local para el almacenamiento en caché de modelos, de modo que los modelos no se descarguen nuevamente cada vez.
  • --env-file .env carga variables de entorno desde su archivo .env.
  • -p 8000:8000 expone el servidor en el puerto 8000.
  • --name cw-social nombra su contenedor para una gestión más fácil.

Contribuciones

  1. Hacer fork del repositorio
  2. Crear una rama de características (git checkout -b feature/amazing-feature)
  3. Confirmar sus cambios (git commit -m 'Add amazing feature')
  4. Enviar a la rama (git push origin feature/amazing-feature)
  5. Abrir una Solicitud de Extracción (Pull Request)

Licencia

Este proyecto está licenciado bajo la Licencia MIT - consulte el archivo LICENSE para más detalles.