返回市场
MCP枢纽服务器

MCP枢纽服务器

作者:nexus-xyz6 星标更新:2025-05-14

项目介绍

Nexus MCP Server

<p align="center"> <strong>使AI代理能够与Nexus区块链交互</strong> </p> <p align="center"> <a href="https://discord.gg/nexus-xyz"><img src="https://img.shields.io/badge/Discord-Join-7289DA?style=flat&logo=discord" alt="加入Discord"></a> <a href="https://nexus.xyz"><img src="https://img.shields.io/badge/Website-访问-0088CC?style=flat&logo=googlechrome" alt="访问网站"></a> <a href="https://twitter.com/nexuslabs"><img src="https://img.shields.io/badge/Twitter-关注-1DA1F2?style=flat&logo=twitter" alt="在Twitter上关注我们"></a> </p>

概述

Nexus MCP服务器是一个桥梁,它使AI代理能够通过模型上下文协议(MCP)直接与Nexus区块链进行交互。它将区块链功能暴露为MCP工具,这些工具可以被任何兼容MCP的AI系统访问,包括Claude和其他领先的LLMs。

👉 阅读完整的博客文章 了解Nexus如何构建适用于AI时代的区块链,从MCP集成开始。

功能

  • 查询区块链数据:获取区块、交易、账户余额等
  • 智能合约交互:执行只读合约调用来查询链上数据
  • 交易管理:提交签名的交易到网络
  • 事件监控:通过日志跟踪和过滤区块链事件
  • 易于AI集成:兼容任何启用MCP的AI系统

可用工具

工具名称描述参数
getNetworkInfo获取Nexus区块链网络信息
getBalance获取地址余额address: 字符串
getTransaction根据哈希获取交易详情txHash: 字符串
getBlock根据编号获取区块详情blockNumber: 字符串, fullTransactions: 布尔值(可选)
callContract调用智能合约方法(只读)to: 字符串, data: 字符串
getLogs从区块链获取事件日志filterObject: 对象
sendRawTransaction提交签名的交易到网络signedTx: 字符串

快速入门

安装

# 克隆仓库
git clone https://github.com/nexus/mcp-for-nexus
cd mcp-for-nexus

# 安装依赖
npm install

# 配置环境
cp .env.example .env

# 启动服务器
npm run dev

使用客户端测试

一旦服务器运行起来,你可以使用包含的测试客户端连接到它:

# 使用测试客户端(需要Redis用于SSE传输)
node scripts/test-nexus-client.mjs http://localhost:3000

对于本地开发,请确保已安装并运行Redis:

# 安装Redis(macOS)
brew install redis

# 启动Redis
brew services start redis

# 验证Redis是否正在运行
redis-cli ping  # 应该响应"PONG"

客户端使用示例

// 示例:从应用程序中调用区块链工具
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";

const transport = new SSEClientTransport(new URL(`http://localhost:3000/sse`));

const client = new Client(
  { name: "my-app", version: "1.0.0" },
  { capabilities: { prompts: {}, resources: {}, tools: {} } }
);

await client.connect(transport);

// 获取区块链信息
const networkInfo = await client.callTool({
  name: "getNetworkInfo",
  arguments: {}
});

// 查询账户余额
const balance = await client.callTool({
  name: "getBalance",
  arguments: { address: "0x1234567890abcdef1234567890abcdef12345678" }
});

// 获取区块信息
const blockData = await client.callTool({
  name: "getBlock", 
  arguments: {
    blockNumber: "latest",
    fullTransactions: true
  }
});

与AI系统集成

Claude集成示例

// 示例:与Claude集成
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
import Anthropic from "@anthropic-ai/sdk";

// 设置MCP客户端
const mcpClient = new Client(...);
await mcpClient.connect(transport);

// 获取可用工具
const tools = await mcpClient.listTools();
const toolDefinitions = tools.map(tool => ({
  name: tool.name,
  description: tool.description,
  input_schema: tool.inputSchema
}));

// 设置Claude客户端
const anthropic = new Anthropic({
  apiKey: process.env.ANTHROPIC_API_KEY,
});

// 创建带有工具的消息
const message = await anthropic.messages.create({
  model: "claude-3-5-sonnet-20241022",
  max_tokens: 1000,
  messages: [{ role: "user", content: "Nexus上的最新区块是什么?" }],
  tools: toolDefinitions
});

// 处理来自Claude的工具调用
for (const content of message.content) {
  if (content.type === 'tool_use') {
    const result = await mcpClient.callTool({
      name: content.name,
      arguments: content.input
    });
    
    // 将工具结果发送回Claude
    // ...
  }
}

部署选项

本地开发

服务器可以用于本地开发目的,这对于测试与Nexus区块链的集成非常理想。

生产部署在Vercel

对于生产用途,服务器可以在Vercel上部署:

  1. 配置Redis(SSE传输所需):

    • 从Vercel仪表板添加Redis集成,或
    • 设置REDIS_URL环境变量指向你的托管Redis实例
  2. 启用Fluid Compute以支持长时间运行的操作

贡献

我们欢迎对Nexus MCP服务器的改进贡献!请参阅我们的贡献指南以获取更多信息。

许可证

本项目根据MIT许可证授权。

联系Nexus