项目简介
Intuition MCP 服务器是为Model Context Protocol (MCP) 设计的后端服务,旨在将LLM(大型语言模型)与Intuition知识图谱连接起来。它提供了一套强大的工具,允许LLM客户端查询实体、提取结构化数据(三元组)、获取账户信息以及探索社交关系(如关注者和关注对象)。该服务器通过流式HTTP和SSE协议实现高效的实时数据交互,为LLM应用提供丰富的上下文信息。
主要功能点
- 实体搜索: 允许LLM根据名称、描述、URL或ENS域名(如'john.eth')搜索账户、事物、人物和概念等实体。
- 账户信息查询: 获取指定地址或标识符的详细账户信息,包括其关联关系、持仓和原子数据。
- 列表搜索: 按名称或描述搜索实体列表(例如,区块链列表、DeFi协议列表),帮助LLM发现相关集合。
- 关注者/关注对象查询: 检索特定账户的关注者和关注对象列表,支持按关系类型过滤(如推荐、喜欢),以构建社交网络分析。
- 账户ID解析: 将ENS地址等易读标识符解析为对应的链上账户地址。
- 三元组提取: 从用户输入文本中提取结构化的主谓宾三元组,实现自然语言到结构化数据的转换。
安装步骤
- 克隆仓库:
打开您的终端或命令行工具,执行以下命令克隆项目仓库:
git clone https://github.com/0xIntuition/intuition-mcp-server.git cd intuition-mcp-server - 安装依赖:
请确保您的系统已安装Node.js (版本14或更高) 和pnpm。如果未安装pnpm,可以通过'npm install -g pnpm'进行安装。然后,在项目根目录下执行:
pnpm install - 启动服务器:
建议使用HTTP传输启动服务器。在项目根目录下执行以下命令:
服务器成功启动后,将会在配置的主机和端口(通常是'http://localhost:3001')上提供服务。pnpm run start:http
服务器配置
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与计算