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
- Clone o repositório:
git clone https://github.com/your-org/cw-social-mcp.git
cd cw-social-mcp
- Instale as dependências:
npm install
- Compile o projeto:
npm run build
- 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 projetoNODE_URL: URL do nó blockchain CosmosCONTRACT_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çãolimit: 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-cachemonta um diretório local para cache de modelos, para que os modelos não sejam baixados novamente a cada execução.--env-file .envcarrega variáveis de ambiente do seu arquivo.env.-p 8000:8000expõe o servidor na porta 8000.--name cw-socialnomeia seu contêiner para facilitar o gerenciamento.
Contribuindo
- Faça um fork do repositório
- Crie um branch de recurso (
git checkout -b feature/amazing-feature) - Faça commit das suas alterações (
git commit -m 'Add amazing feature') - Envie para o branch (
git push origin feature/amazing-feature) - Abra um Pull Request
Licença
Este projeto está licenciado sob a Licença MIT - consulte o arquivo LICENSE para obter detalhes.