项目简介

Intuition MCP 服务器是为Model Context Protocol (MCP) 设计的后端服务,旨在将LLM(大型语言模型)与Intuition知识图谱连接起来。它提供了一套强大的工具,允许LLM客户端查询实体、提取结构化数据(三元组)、获取账户信息以及探索社交关系(如关注者和关注对象)。该服务器通过流式HTTP和SSE协议实现高效的实时数据交互,为LLM应用提供丰富的上下文信息。

主要功能点

  • 实体搜索: 允许LLM根据名称、描述、URL或ENS域名(如'john.eth')搜索账户、事物、人物和概念等实体。
  • 账户信息查询: 获取指定地址或标识符的详细账户信息,包括其关联关系、持仓和原子数据。
  • 列表搜索: 按名称或描述搜索实体列表(例如,区块链列表、DeFi协议列表),帮助LLM发现相关集合。
  • 关注者/关注对象查询: 检索特定账户的关注者和关注对象列表,支持按关系类型过滤(如推荐、喜欢),以构建社交网络分析。
  • 账户ID解析: 将ENS地址等易读标识符解析为对应的链上账户地址。
  • 三元组提取: 从用户输入文本中提取结构化的主谓宾三元组,实现自然语言到结构化数据的转换。

安装步骤

  1. 克隆仓库: 打开您的终端或命令行工具,执行以下命令克隆项目仓库:
    git clone https://github.com/0xIntuition/intuition-mcp-server.git
    cd intuition-mcp-server
  2. 安装依赖: 请确保您的系统已安装Node.js (版本14或更高) 和pnpm。如果未安装pnpm,可以通过'npm install -g pnpm'进行安装。然后,在项目根目录下执行:
    pnpm install
  3. 启动服务器: 建议使用HTTP传输启动服务器。在项目根目录下执行以下命令:
    pnpm run start:http
    服务器成功启动后,将会在配置的主机和端口(通常是'http://localhost:3001')上提供服务。

服务器配置

MCP客户端在连接此服务器时,需要以下配置信息。这些信息通常在MCP客户端的配置文件或初始化代码中指定,无需您修改服务器的代码文件。

{
  "serverName": "intuition-mcp-server",
  "command": "node",
  "args": ["<path-to-your-cloned-repo>/intuition-mcp-server/dist/index.js"],
  "env": {
    "SERVER_MODE": "stdio",
    "MCP_HTTP_URL": "http://localhost:3001"
  },
  "transport": "StreamableHTTP"
}
  • 'serverName': 指定MCP服务器的名称,此处为“intuition-mcp-server”。
  • 'command': 启动MCP服务器所使用的可执行命令,此处为'node'。
  • 'args': 传递给'command'命令的参数,指向编译后的MCP服务器主文件。请务必将示例中的'<path-to-your-cloned-repo>'替换为您的实际项目路径。
  • 'env.SERVER_MODE': 定义服务器的运行模式,可以是'http'(推荐)或'stdio'。
  • 'env.MCP_HTTP_URL': 如果'SERVER_MODE'设置为'http',则需要指定服务器的HTTP URL。
  • 'transport': 客户端与服务器通信时选择的传输协议,建议使用'StreamableHTTP'。

基本使用方法

一旦服务器启动,您的LLM客户端(例如,使用 '@modelcontextprotocol/sdk' 的客户端)即可连接到该服务器并调用其工具。以下是一个简化的TypeScript客户端代码示例:

// 导入必要的客户端SDK组件
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';

async function main() {
  const serverUrl = 'http://localhost:3001'; // 请替换为您的服务器实际地址和端口
  // 初始化MCP客户端,定义客户端名称和版本
  const client = new Client({ name: 'my-llm-client', version: '1.0.0' });
  // 创建Streamable HTTP传输器,连接到服务器的 /mcp 端点
  const transport = new StreamableHTTPClientTransport(new URL(serverUrl + '/mcp'));
  // 客户端连接到服务器
  await client.connect(transport);
  console.log('成功连接到 Intuition MCP 服务器');

  // 示例:调用 'search_atoms' 工具来搜索与“ethereum”相关的实体
  console.log('\n--- 调用 search_atoms 工具 ---');
  const searchAtomsResponse = await client.callTool('search_atoms', { queries: ['ethereum', 'eth'] });

  // 处理流式响应数据
  searchAtomsResponse.on('data', (data) => {
    console.log('接收到数据块:', data);
  });
  searchAtomsResponse.on('end', () => {
    console.log('数据流结束');
  });

  // 示例:调用 'get_account_info' 工具来获取账户信息
  console.log('\n--- 调用 get_account_info 工具 ---');
  const getAccountInfoResponse = await client.callTool('get_account_info', { identifier: '0x1234567890123456789012345678901234567890' });
  getAccountInfoResponse.on('data', (data) => {
    console.log('接收到账户信息数据块:', data);
  });
  getAccountInfoResponse.on('end', () => {
    console.log('账户信息数据流结束');
  });
}

// 运行主函数并捕获可能发生的错误
main().catch(console.error);

通过上述方式,LLM客户端可以利用服务器提供的各种工具,根据用户需求获取和处理Intuition知识图谱中的信息。

信息

分类

AI与计算