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
- Clonar el repositorio:
git clone https://github.com/your-org/cw-social-mcp.git
cd cw-social-mcp
- Instalar dependencias:
npm install
- Compilar el proyecto:
npm run build
- 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 proyectoNODE_URL: URL del nodo de blockchain CosmosCONTRACT_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_timees requerido,end_timees opcional
Paginación
start_after: Cursor de paginaciónlimit: 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-cachemonta un directorio local para el almacenamiento en caché de modelos, de modo que los modelos no se descarguen nuevamente cada vez.--env-file .envcarga variables de entorno desde su archivo.env.-p 8000:8000expone el servidor en el puerto 8000.--name cw-socialnombra su contenedor para una gestión más fácil.
Contribuciones
- Hacer fork del repositorio
- Crear una rama de características (
git checkout -b feature/amazing-feature) - Confirmar sus cambios (
git commit -m 'Add amazing feature') - Enviar a la rama (
git push origin feature/amazing-feature) - 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.