Cyberlink MCP Server

Interaja com o smart contract CW-Social em blockchains baseadas em Cosmos.

Documentação

Servidor MCP Cyberlink

Um servidor Model Context Protocol (MCP) para interagir com o contrato inteligente CW-Social em blockchains baseados em Cosmos. Este servidor fornece uma interface padronizada para criar, atualizar e consultar cyberlinks - relações semânticas entre entidades na blockchain.

Recursos

  • Operações Principais

    • Criar, ler, atualizar e excluir cyberlinks
    • Suporte para cyberlinks nomeados com identificadores personalizados
    • Operações em lote para processamento eficiente
    • Capacidades avançadas de consulta com filtragem e paginação
  • Gerenciamento de Transações

    • Monitoramento de transações em tempo real e consulta de status
    • Resultados detalhados de transações e tratamento de erros
    • Suporte para assinatura de transações interna e externa
    • Capacidades de transferência de tokens
  • Recursos Avançados

    • Geração de embeddings semânticos via transformers Hugging Face
    • Acompanhamento de progresso em tempo real para operações de modelo
    • Cálculos de similaridade de cosseno para correspondência semântica
    • Sistema flexível de IDs com IDs formatados (fids) e IDs globais (gids)
    • Consultas baseadas em intervalo de tempo com suporte a UTC
    • Filtragem e estatísticas baseadas no proprietário

Pré-requisitos

  • Node.js 16 ou superior
  • Gerenciador de pacotes npm ou yarn
  • Acesso a um nó blockchain Cosmos em execução
  • Carteira com fundos suficientes para transações
  • Cursor IDE para desenvolvimento
  • Claude Desktop para assistência de IA

Instalação

  1. Clone o repositório:
git clone https://github.com/your-org/cw-social-mcp.git
cd cw-social-mcp
  1. Instale as dependências:
npm install
  1. Compile o projeto:
npm run build
  1. Configure as variáveis de ambiente (consulte a seção Configuração)

Configuração

Configuração do Servidor MCP

Crie ou modifique o arquivo de configuração em ~/.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"
      }
    }
  }
}

Configuração Obrigatória

Variáveis de ambiente obrigatórias:

  • PATH_TO_YOUR_PROJECT: Caminho absoluto para o diretório do projeto
  • NODE_URL: URL do nó blockchain Cosmos
  • CONTRACT_ADDRESS: Endereço do contrato inteligente implantado

Configuração Opcional

Variáveis de ambiente opcionais:

  • WALLET_MNEMONIC: Mnemônico da carteira para assinatura (padrão: nenhum - as transações não serão assinadas)
  • DENOM: Denominação do token (padrão: "stake")
  • BENCH32_PREFIX: Prefixo BECH32

Ferramentas Disponíveis

Gerenciamento de Cyberlinks

Ferramentas de Criação

create_cyberlink

  • Descrição: Criar um único cyberlink
  • Obrigatório: type
  • Opcional: from, to, value

create_cyberlink2

  • Descrição: Criar nó + link
  • Obrigatório: node_type, link_type
  • Opcional: node_value, link_value, link_to_existing_id, link_from_existing_id

create_named_cyberlink

  • Descrição: Criar cyberlink nomeado (somente administrador)
  • Obrigatório: name, cyberlink

create_cyberlinks

  • Descrição: Criar cyberlinks em lote
  • Obrigatório: cyberlinks[]

Ferramentas de Modificação

update_cyberlink

  • Descrição: Atualizar cyberlink existente
  • Obrigatório: gid, cyberlink

delete_cyberlink

  • Descrição: Remover cyberlink
  • Obrigatório: gid

update_with_embedding

  • Descrição: Adicionar embedding semântico
  • Obrigatório: formatted_id

Operações de Consulta

Consultas Básicas

query_by_gid

  • Descrição: Obter por ID global
  • Obrigatório: gid

query_by_fid

  • Descrição: Obter por ID formatado
  • Obrigatório: fid

query_cyberlinks

  • Descrição: Listar todos com paginação
  • Parâmetros: limit, start_after

query_named_cyberlinks

  • Descrição: Listar cyberlinks nomeados
  • Parâmetros: limit, start_after

query_by_gids

  • Descrição: Obter vários por IDs
  • Obrigatório: gids[]

Consultas Filtradas

query_cyberlinks_by_type

  • Descrição: Filtrar por tipo
  • Obrigatório: type

query_cyberlinks_by_from

  • Descrição: Filtrar por origem
  • Obrigatório: from

query_cyberlinks_by_to

  • Descrição: Filtrar por destino
  • Obrigatório: to

query_cyberlinks_by_owner_and_type

  • Descrição: Filtrar por proprietário e tipo
  • Obrigatório: owner, type

Consultas Baseadas em Tempo

query_cyberlinks_by_owner_time

  • Descrição: Filtrar por horário de criação
  • Obrigatório: owner, start_time

query_cyberlinks_by_owner_time_any

  • Descrição: Filtrar por qualquer horário
  • Obrigatório: owner, start_time

Operações do Sistema

Informações do Contrato

query_last_id

  • Descrição: Obter o último ID atribuído

query_config

  • Descrição: Obter configuração do contrato

query_debug_state

  • Descrição: Obter estado de depuração (somente administrador)

get_graph_stats

  • Descrição: Obter estatísticas do grafo

Transação e Carteira

query_transaction

  • Descrição: Obter status da transação
  • Obrigatório: transaction_hash

get_tx_status

  • Descrição: Obter status detalhado da transação
  • Obrigatório: transaction_hash

query_wallet_balance

  • Descrição: Obter saldos da carteira

send_tokens

  • Descrição: Transferir tokens
  • Obrigatório: recipient, amount

Parâmetros de Consulta

Formato de Intervalo de Tempo

  • Todos os carimbos de data/hora devem estar no formato ISO 8601
  • Exemplo: 2024-06-01T12:00:00Z
  • O fuso horário UTC é assumido se não for especificado
  • start_time é obrigatório, end_time é opcional

Paginação

  • start_after: Cursor de paginação
  • limit: Resultados por página (padrão: 50)

Desenvolvimento

Comandos de Compilação

# Production build
npm run build

# Development mode
npm run dev

Estrutura do Projeto

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 Erro

InvalidParams

  • Descrição: Parâmetros inválidos
  • Causas comuns: Campos obrigatórios ausentes, formato incorreto

MethodNotFound

  • Descrição: Ferramenta desconhecida
  • Causas comuns: Erro de digitação no nome da ferramenta, ferramenta obsoleta

InternalError

  • Descrição: Erro do sistema
  • Causas comuns: Problemas de rede, erros de contrato

Executar MCP via SSE

Você pode executar o servidor MCP usando Docker para transformá-lo em um servidor SSE. Isso garante que o cache do modelo Hugging Face seja persistido entre execuções e que as variáveis de ambiente sejam carregadas do seu arquivo .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 um diretório local para cache de modelos, para que os modelos não sejam baixados novamente a cada execução.
  • --env-file .env carrega variáveis de ambiente do seu arquivo .env.
  • -p 8000:8000 expõe o servidor na porta 8000.
  • --name cw-social nomeia seu contêiner para facilitar o gerenciamento.

Contribuindo

  1. Faça um fork do repositório
  2. Crie um branch de recurso (git checkout -b feature/amazing-feature)
  3. Faça commit das suas alterações (git commit -m 'Add amazing feature')
  4. Envie para o branch (git push origin feature/amazing-feature)
  5. Abra um Pull Request

Licença

Este projeto está licenciado sob a Licença MIT - consulte o arquivo LICENSE para obter detalhes.