Integrations
Used as a recommended runtime environment for the MCP server, with specific compatibility for Bun 1.0.0 or higher
Supports interaction with Starknet on Ethereum's Sepolia testnet, providing integration between Starknet and Ethereum ecosystems
Supports Node.js 18.0.0 or higher as an alternative runtime environment for the MCP server
Starknet MCP 服务器
一个适用于 Starknet 区块链的全面模型上下文协议 (MCP) 服务器。该服务器为 AI 代理提供了与 Starknet 网络交互、查询区块链数据、管理钱包以及与智能合约交互的能力。
📋 内容
🔭 概述
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 服务器
- 实施速率限制以防止滥用
- 对于高价值服务,考虑添加确认步骤
📁 项目结构
🛠️ 开发约定
添加自定义工具、资源或提示时:
- 在所有资源、工具和提示名称中使用下划线 (
_
) 代替连字符 (-
)Copy - 此命名约定确保与 Cursor 和其他 AI 工具的兼容性
📚 文档
更多信息请见:
📄 许可证
该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅LICENSE文件。
You must be authenticated.
一个全面的模型上下文协议服务器,使 AI 代理能够与 Starknet 区块链交互、查询数据、管理钱包以及使用智能合约。
- 📋 Contents
- 🔭 Overview
- ✨ Features
- 🔧 Networks Supported
- 🛠️ Prerequisites
- 📦 Installation
- ⚙️ Server Configuration
- 🔍 Usage
- 📚 API Reference
- 🔍 Usage with AI Assistants
- 🔒 Security Considerations
- 📁 Project Structure
- 🛠️ Development Conventions
- 📚 Documentation
- 📄 License