区块链语义链接服务

Cyberlink MCP Server 是一个为基于Cosmos的区块链上的CW-Social智能合约提供交互的模型上下文协议服务器,支持创建、更新和查询区块链上实体间的语义关系。

  • by dasein108
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 dasein108/mcp-cw-graph

使用说明

Cyberlink MCP服务器

用于在基于Cosmos的区块链上与CW Social智能合约交互的模型上下文协议(MCP)服务器。该服务器提供了一个标准化的接口,用于创建、更新和查询网络链接——区块链上实体之间的语义关系。

特性

  • 核心业务

    • 创建、阅读、更新和删除网络链接
    • 支持具有自定义标识符的命名网络链接
    • 批量操作,实现高效处理
    • 具有过滤和分页功能的丰富查询功能
  • 事务管理

    • 实时事务监控和状态轮询
    • 详细的交易结果和错误处理
    • 支持内部和外部交易签名
    • 代币转移能力
  • 高级功能

    • 通过拥抱人脸变换器生成语义嵌入
    • 模型操作的实时进度跟踪
    • 语义匹配的余弦相似度计算
    • 具有格式化ID(fid)和全局ID(gid)的灵活ID系统
    • 支持UTC的基于时间范围的查询
    • 基于所有者的过滤和统计

先决条件

  • Node.js 16或更高版本
  • npm或yarn包管理器
  • 访问正在运行的Cosmos区块链节点
  • 有足够资金进行交易的钱包
  • 光标IDE 为了发展
  • 克劳德桌面 AI协助

安装

  1. 克隆存储库:
git clone https://github.com/your-org/cw-social-mcp.git
cd cw-social-mcp
  1. 安装依赖项:
npm install
  1. 构建项目:
npm run build
  1. 配置环境变量(请参阅配置部分)

配置

MCP服务器设置

在以下位置创建或修改配置文件 ~/.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"
      }
    }
  }
}

所需配置

所需的环境变量:

  • PATH_TO_YOUR_PROJECT:项目目录的绝对路径
  • NODE_URL:Cosmos区块链节点URL
  • CONTRACT_ADDRESS:已部署的智能合约地址

可选配置

可选环境变量:

  • WALLET_MNEMONIC:用于签名的钱包助记符(默认值:无-交易将不签名)
  • DENOM:代币面额(默认值:“stake”)
  • BENCH32_PREFIX:BECH32前缀

可用工具

网络链接管理

创建工具

create_cyberlink

  • 描述:创建单个网络链接
  • 必修的: type
  • 可选: from, to, value

create_cyberlink2

  • 说明:创建节点+链接
  • 必修的: node_type, link_type
  • 可选: node_value, link_value, link_to_existing_id, link_from_existing_id

创建名称网络链接

  • 描述:创建命名的网络链接(仅限管理员)
  • 必修的: name, cyberlink

创建_网络链接

  • 说明:批量创建网络链接
  • 必修的: cyberlinks[]

修改工具

update_cyberlink

  • 说明:更新现有网络链接
  • 必修的: gid, cyberlink

删除cyberlink

  • 说明:删除网络链接
  • 必修的: gid

更新_嵌入_

  • 说明:添加语义嵌入
  • 必修的: formatted_id

查询操作

基本查询

查询_by_gid

  • 描述:通过全局ID获取
  • 必修的: gid

查询_by_fid

  • 说明:通过格式化ID获取
  • 必修的: fid

query_cyberlinks

  • 说明:列出所有分页
  • 参数: limit, start_after

query_named_cyberlinks

  • 描述:列出命名的网络链接
  • 参数: limit, start_after

query_by_gids

  • 描述:按ID获取多个
  • 必修的: gids[]

过滤查询

query_cyberlinks_by_type

  • 说明:按类型筛选
  • 必修的: type

query_cyberlinks_by_from

  • 描述:按来源筛选
  • 必修的: from

query_cyberlinks_by_to

  • 描述:按目标筛选
  • 必修的: to

查询_网络链接_由_所有者_和_类型

  • 描述:按所有者和类型筛选
  • 必修的: owner, type

基于时间的查询

查询_网络链接_由_所有者_时间

  • 描述:按创建时间筛选
  • 必修的: owner, start_time

查询_网络链接_由_所有者_时间_任何

  • 说明:随时过滤
  • 必修的: owner, start_time

系统操作

合同信息

query_last_id

  • 描述:获取最后分配的ID

查询配置

  • 说明:获取合约配置

query_debug_state

  • 说明:获取调试状态(仅限管理员)

get_graph_stats

  • 说明:获取图形统计信息

交易和钱包

查询交易

  • 说明:获取tx状态
  • 必修的: transaction_hash

get_tx状态

  • 说明:获取详细的交易状态
  • 必修的: transaction_hash

查询钱包余额

  • 说明:获取钱包余额

send_tokes

  • 描述:转移代币
  • 必修的: recipient, amount

查询参数

时间范围格式

  • 所有时间戳必须采用ISO 8601格式
  • 例子: 2024-06-01T12:00:00Z
  • 如果未指定,则假定为UTC时区
  • start_time 是必需的, end_time 是可选的

分页

  • start_after:分页光标
  • limit:每页结果(默认值:50)

发展

构建命令

# Production build
npm run build

# Development mode
npm run dev

项目结构

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

错误代码

无效参数

  • 说明:参数无效
  • 常见原因:缺少必填字段、格式错误

方法NotFound

  • 描述:未知工具
  • 常见原因:工具名称拼写错误,工具已弃用

内部错误

  • 说明:系统错误
  • 常见原因:网络问题、合同错误

在SSE上运行MCP

您可以使用Docker运行MCP服务器,将其转换为SSE服务器。这确保了Hugging Face模型缓存在运行之间保持不变,并且环境变量从.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 挂载一个用于模型缓存的本地目录,这样每次都不会重新下载模型。
  • --env-file .env 从您的 .env 文件。
  • -p 8000:8000 暴露端口8000上的服务器。
  • --name cw-social 为容器命名以便于管理。

贡献

  1. 分叉存储库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。