Starknet MCP 服务器
一个适用于 Starknet 区块链的全面模型上下文协议 (MCP) 服务器。该服务器为 AI 代理提供了与 Starknet 网络交互、查询区块链数据、管理钱包以及与智能合约交互的能力。
📋 内容
Related MCP server: Flow MCP Server
🔭 概述
Starknet MCP 服务器利用模型上下文协议 (MCP) 为 AI 代理提供区块链服务。它为 Starknet 生态系统提供了全面的接口,使 AI 助手能够通过自然语言与 Starknet 区块链数据和操作进行交互。
主要功能包括:
读取区块链状态(余额、交易、区块)
与 Cairo 智能合约交互
转移代币(ETH、STRK 和其他 ERC20 代币)
使用 NFT 和代币元数据
解析 StarknetID 域名(类似于以太坊的 ENS)
通过适当的事务处理进行读写操作
所有服务均通过 MCP 工具和资源的一致接口公开,方便 AI 代理发现并使用 Starknet 区块链功能。所有接受 Starknet 地址的工具也支持 StarknetID ,可在后台自动将人类可读的身份解析为地址。
✨ 特点
Starknet 集成:使用 Starknet.js 进行完整的 Starknet 区块链集成
网络支持:支持主网和Sepolia测试网
StarknetID 集成:将 Starknet ID 解析为地址,反之亦然
原生代币支持:支持 ETH 和 STRK 原生代币
智能合约交互:调用、查询Starknet智能合约
双传输:作为 stdio 服务器或 HTTP 服务器运行,以满足不同的集成需求
AI-Ready :设计用于与 Claude、GPT 和其他 AI 助手一起使用
区块链信息
查询链信息(链ID、最新区块)
探索区块详细信息和交易
查看交易收据和状态
获取地址信息和合约数据
原生代币操作
获取任意地址的 ETH 和 STRK 余额
在账户之间转移 ETH 和 STRK
查看合并的原生代币余额
代币操作
获取 ERC20 代币余额和信息
转移 ERC20 代币
查看代币供应和元数据
检查代币所有权
NFT 操作
通过代币 ID 检查 NFT 所有权
获取NFT收藏信息
查看地址的 NFT 余额
智能合约交互
调用只读合约函数
通过交易确认执行合约写入
获取合约存储信息
查看 ABI 和合约类信息
StarknetID
将 Starknet 地址解析为 Starknet ID
将 Starknet ID 解析为地址
获取带有验证数据的完整 Starknet ID 资料
验证 Starknet 域名
🔧 支持的网络
该服务器支持以下Starknet网络:
主网:Starknet 的主要生产网络
Sepolia :Starknet 在以太坊 Sepolia 上的测试网
🛠️ 先决条件
Bun 1.0.0 或更高版本(推荐)
Node.js 18.0.0 或更高版本
📦安装
选项 1:无需安装即可使用(npx)
最简单的入门方法是使用npx直接运行包:
这将自动下载并运行最新版本,而无需先安装。
选项 2:全局安装
如果您打算经常使用它,您可以全局安装它:
选项 3:本地项目安装
然后添加到你的 package.json 脚本:
选项 4:从源代码运行
如果您想从源代码运行或在本地开发:
对于自动重新加载的开发:
⚙️ 服务器配置
服务器使用以下默认配置:
默认网络:主网
服务器端口:3000(HTTP模式)
服务器主机:0.0.0.0(可从任何网络接口访问)
这些值在应用程序中是硬编码的。如果需要修改它们,可以编辑以下文件:
网络配置:
src/core/chains.ts对于服务器配置:
src/server/http-server.ts
🔍 使用方法
运行服务器
您可以以两种模式运行 Starknet MCP 服务器:
HTTP 服务器默认在端口 3000 上运行,并提供 REST API 和服务器发送事件 (SSE) 以进行实时通信。
从光标连接
要从 Cursor 连接到 Starknet MCP 服务器:
打开 Cursor 并转到“设置”(左下角的齿轮图标)
点击左侧边栏中的“功能”
向下滚动到“MCP 服务器”部分
点击“添加新的 MCP 服务器”
输入以下详细信息:
服务器名称:
starknet-mcp-server类型:
command命令:
npx @mcpdotdirect/starknet-mcp-server
点击“保存”
连接后,您可以直接在 Cursor 中使用 MCP 服务器的功能。该服务器将显示在 MCP 服务器列表中,您可以根据需要启用/禁用。
使用 mcp.json 和 Cursor
为了获得可与团队共享或跨项目使用的更便携的配置,您可以在项目的根目录中创建一个.cursor/mcp.json文件:
将此文件放在项目的.cursor目录中(如果不存在则创建),Cursor 将在该项目中工作时自动检测并使用这些 MCP 服务器配置。
带 SSE 的 HTTP 模式
如果您正在开发 Web 应用程序并希望使用服务器发送事件 (SSE) 连接到 HTTP 服务器,则可以使用以下配置:
使用 Claude CLI 进行连接
如果您使用 Claude CLI,则只需两个命令即可连接到 MCP 服务器:
示例:在 Cursor 中使用 MCP 服务器
配置完 MCP 服务器后,您就可以在 Cursor 中轻松使用它了。例如:
在您的项目中创建一个新的 JavaScript/TypeScript 文件:
在 Cursor 中打开文件后,您可以要求 Cursor 执行以下操作:
“检查 vitalik.stark 的 ETH 余额”
“获取有关 Starknet 上最新区块的信息”
“在收藏 0x 中查找 NFT #123 的所有者...”
示例:使用 Starknet ID 获取 ETH 余额
示例:解析 Starknet ID
示例:调用智能合约
在 Node.js 项目中使用
如果您想在 Node.js 项目中以编程方式使用 MCP 服务器:
对于更高级的用法,您可以围绕 HTTP API 创建一个包装类,或者使用 Axios 等库进行更清晰的 API 调用。
📚 API 参考
可用的 MCP 工具
该服务器实现了以下 MCP 工具:
网络工具
get_starknet_chain_info:获取有关 Starknet 网络的信息get_supported_starknet_networks:获取支持的 Starknet 网络列表
平衡工具
get_starknet_eth_balance:获取 Starknet 地址或 Starknet ID 的 ETH 余额get_starknet_token_balance:获取某个地址任意代币的余额get_starknet_strk_balance:获取地址的 STRK 代币余额get_starknet_native_balances:获取地址的所有原生代币余额(ETH 和 STRK)
StarknetID 工具
resolve_starknet_name:获取地址的 Starknet IDresolve_starknet_address:获取 Starknet ID 的地址get_starknet_profile:获取地址的完整 Starknet ID 配置文件validate_starknet_domain:检查字符串是否为有效的 Starknet ID
块工具
get_starknet_block:获取有关特定区块的信息get_starknet_block_transactions:获取特定区块中的交易
交易工具
get_starknet_transaction:获取交易的详细信息get_starknet_transaction_receipt:获取交易收据check_starknet_transaction_status:检查交易是否已确认
合同工具
call_starknet_contract:调用合约上的只读函数get_starknet_contract_class:获取合约的类别(ABI 和其他信息)execute_starknet_contract:执行合约调用(写入操作)
代币工具
get_starknet_token_info:获取有关代币的信息get_starknet_token_supply:获取代币的总供应量check_starknet_nft_ownership:检查地址是否拥有特定的 NFTget_starknet_nft_balance:获取地址拥有的 NFT 数量
传输工具
transfer_starknet_eth:将 ETH 从一个账户转移到另一个账户(金额采用人类可读的格式)transfer_starknet_strk:将 STRK 从一个账户转移到另一个账户(金额采用人类可读的格式)transfer_starknet_token:将 ERC20 代币从一个账户转移到另一个账户(金额采用人类可读的格式)
可用的 MCP 资源
服务器提供以下 MCP 资源:
网络资源
starknet://{network}/chain:获取特定网络的链信息starknet://networks:获取所有支持的网络列表
区块资源
starknet://{network}/block/{blockIdentifier}:获取特定区块的信息starknet://{network}/block/latest:获取最新区块
地址资源
starknet://{network}/address/{address}:获取有关地址的信息
交易资源
starknet://{network}/tx/{txHash}:获取交易信息
StarknetID 资源
starknet://{network}/id/address/{address}:将地址解析为 Starknet IDstarknet://{network}/id/name/{name}:将 Starknet ID 解析为地址starknet://{network}/id/profile/{address}:获取地址的 Starknet ID 配置文件
可用的 MCP 提示
对于 LLM 交互,服务器提供以下提示:
explore_starknet_block:探索有关特定 Starknet 区块的信息explore_starknet_address:获取有关 Starknet 地址的信息explore_starknet_transaction:获取有关 Starknet 交易的信息lookup_starknet_id:查找 Starknet ID 或将地址解析为 Starknet IDexplore_starknet_id_profile:探索完整的 Starknet ID 配置文件
🔍 与 AI 助手一起使用
当将此服务器与 Claude 或 GPT 等 AI 助手一起使用时:
配置您的 AI 助手以使用此 MCP 服务器
然后,助手可以使用工具与 Starknet 进行交互
示例查询:
“地址 0x04d07e40e93398ed3c76981e449d3446f7c4e52aac5b3e8a37d7b0ca30845a5d 的 ETH 余额是多少?”
“查找地址 0x04d07e40e93398ed3c76981e449d3446f7c4e52aac5b3e8a37d7b0ca30845a5d 的 Starknet ID”
“Starknet 主网的最新区块是什么?”
“获取有关交易 0x7e3a33ab42f2e24184763563b7b8482b53e3b89831ebc3eacf29d4d11f5198 的信息”
“将 Starknet ID vitalik.stark 解析为一个地址”
🔒 安全注意事项
私钥仅用于交易签名,服务器永远不会存储
所有代币数量均以人类可读的格式(例如 ETH、STRK、代币单位)指定,而不是以 wei 或最小单位指定
在执行操作之前始终验证并清理输入参数
考虑实施额外的身份验证机制以供生产使用
在生产环境中使用 HTTPS 作为 HTTP 服务器
实施速率限制以防止滥用
对于高价值服务,考虑添加确认步骤
📁 项目结构
🛠️ 开发约定
添加自定义工具、资源或提示时:
在所有资源、工具和提示名称中使用下划线 (
_) 代替连字符 (-)// Good: Uses underscores server.tool( "starknet_contract_call", "Description of the tool", { contract_address: z.string().describe("The contract address") }, async (params) => { // Tool implementation } );此命名约定确保与 Cursor 和其他 AI 工具的兼容性
📚 文档
更多信息请见:
📄 许可证
该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅LICENSE文件。