Starknet MCP Server
Starknet MCP 服务器
一个适用于 Starknet 区块链的全面模型上下文协议 (MCP) 服务器。该服务器为 AI 代理提供了与 Starknet 网络交互、查询区块链数据、管理钱包以及与智能合约交互的能力。
📋 内容
Related MCP server: AMOCA Solana 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直接运行包:
# Run the stdio server without installation
npx @mcpdotdirect/starknet-mcp-server
# Run the HTTP server without installation
npx @mcpdotdirect/starknet-mcp-server http这将自动下载并运行最新版本,而无需先安装。
选项 2:全局安装
如果您打算经常使用它,您可以全局安装它:
# Install globally
npm install -g @mcpdotdirect/starknet-mcp-server
# Then run from anywhere
starknet-mcp-server
starknet-mcp-server http选项 3:本地项目安装
# Add to your project
npm install @mcpdotdirect/starknet-mcp-server
# Using yarn
yarn add @mcpdotdirect/starknet-mcp-server
# Using pnpm
pnpm add @mcpdotdirect/starknet-mcp-server然后添加到你的 package.json 脚本:
"scripts": {
"starknet-mcp": "starknet-mcp-server",
"starknet-mcp-http": "starknet-mcp-server http"
}选项 4:从源代码运行
如果您想从源代码运行或在本地开发:
# Clone the repository
git clone https://github.com/mcpdotdirect/starknet-mcp-server.git
cd starknet-mcp-server
# Install dependencies
npm install
# Start the stdio server
npm start
# Or start the HTTP server
npm run start:http对于自动重新加载的开发:
# Development mode with stdio
npm run dev
# Development mode with HTTP
npm run dev:http⚙️ 服务器配置
服务器使用以下默认配置:
默认网络:主网
服务器端口:3000(HTTP模式)
服务器主机:0.0.0.0(可从任何网络接口访问)
这些值在应用程序中是硬编码的。如果需要修改它们,可以编辑以下文件:
网络配置:
src/core/chains.ts对于服务器配置:
src/server/http-server.ts
🔍 使用方法
运行服务器
您可以以两种模式运行 Starknet MCP 服务器:
# Run the server in stdio mode (for CLI tools and AI assistants)
npx @mcpdotdirect/starknet-mcp-server
# Run the server in HTTP mode (for web applications)
npx @mcpdotdirect/starknet-mcp-server httpHTTP 服务器默认在端口 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文件:
{
"mcpServers": {
"starknet-mcp-server": {
"command": "npx",
"args": [
"@mcpdotdirect/starknet-mcp-server"
]
},
"starknet-mcp-http": {
"command": "npx",
"args": [
"@mcpdotdirect/starknet-mcp-server",
"http"
]
}
}
}将此文件放在项目的.cursor目录中(如果不存在则创建),Cursor 将在该项目中工作时自动检测并使用这些 MCP 服务器配置。
带 SSE 的 HTTP 模式
如果您正在开发 Web 应用程序并希望使用服务器发送事件 (SSE) 连接到 HTTP 服务器,则可以使用以下配置:
{
"mcpServers": {
"starknet-mcp-sse": {
"url": "http://localhost:3000/sse"
}
}
}使用 Claude CLI 进行连接
如果您使用 Claude CLI,则只需两个命令即可连接到 MCP 服务器:
# Add the MCP server using npx
claude mcp add starknet-mcp-server npx @mcpdotdirect/starknet-mcp-server
# Start Claude with the MCP server enabled
claude示例:在 Cursor 中使用 MCP 服务器
配置完 MCP 服务器后,您就可以在 Cursor 中轻松使用它了。例如:
在您的项目中创建一个新的 JavaScript/TypeScript 文件:
// starknet-example.js
async function main() {
try {
// When using with Cursor, you can simply ask Cursor to:
// "Check the ETH balance of address 0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7 on Starknet mainnet"
// Or "Lookup the Starknet ID for address 0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7"
// Cursor will use the MCP server to execute these operations
// without requiring any additional code from you
} catch (error) {
console.error("Error:", error.message);
}
}
main();在 Cursor 中打开文件后,您可以要求 Cursor 执行以下操作:
“检查 vitalik.stark 的 ETH 余额”
“获取有关 Starknet 上最新区块的信息”
“在收藏 0x 中查找 NFT #123 的所有者...”
示例:使用 Starknet ID 获取 ETH 余额
// Example of using the MCP client to check an ETH balance using Starknet ID
const mcp = new McpClient("http://localhost:3000");
const result = await mcp.invokeTool("get_starknet_eth_balance", {
address: "vitalik.stark", // Starknet ID instead of address
network: "mainnet"
});
console.log(result);
// {
// wei: "1000000000000000000",
// ether: "1.0"
// }示例:解析 Starknet ID
// Example of using the MCP client to resolve a Starknet ID to an address
const mcp = new McpClient("http://localhost:3000");
const result = await mcp.invokeTool("resolve_starknet_address", {
name: "vitalik.stark",
network: "mainnet"
});
console.log(result);
// {
// starknetId: "vitalik.stark",
// address: "0x04d07e40e93398ed3c76981e449d3446f7c4e52aac5b3e8a37d7b0ca30845a5d",
// resolved: true
// }示例:调用智能合约
// Example of using the MCP client to call a smart contract function
const mcp = new McpClient("http://localhost:3000");
const result = await mcp.invokeTool("call_starknet_contract", {
contractAddress: "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", // ETH contract
entrypoint: "totalSupply",
calldata: [],
network: "mainnet"
});
console.log(result);
// {
// result: ["0x84b6c7d5970d5a73abe"]
// }在 Node.js 项目中使用
如果您想在 Node.js 项目中以编程方式使用 MCP 服务器:
// Start the MCP server as a child process
const { spawn } = require('child_process');
const mcpServer = spawn('npx', ['@mcpdotdirect/starknet-mcp-server']);
// Connect to it with the MCP client
const mcp = new McpClient({ process: mcpServer });
// Now you can use the client
const networks = await mcp.invokeTool("get_supported_starknet_networks", {
random_string: "any"
});
console.log("Supported networks:", networks);对于更高级的用法,您可以围绕 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 服务器
实施速率限制以防止滥用
对于高价值服务,考虑添加确认步骤
📁 项目结构
starknet-mcp-server/
├── src/
│ ├── index.ts # Main stdio server entry point
│ ├── server/ # Server-related files
│ │ ├── http-server.ts # HTTP server with SSE
│ │ └── server.ts # General server setup
│ ├── core/
│ │ ├── chains.ts # Chain definitions and utilities
│ │ ├── resources.ts # MCP resources implementation
│ │ ├── tools.ts # MCP tools implementation
│ │ ├── prompts.ts # MCP prompts implementation
│ │ └── services/ # Core blockchain services
│ │ ├── index.ts # Service exports
│ │ ├── balance.ts # Balance services
│ │ ├── blocks.ts # Block services
│ │ ├── clients.ts # Client utilities
│ │ ├── contracts.ts # Contract interactions
│ │ ├── starknetid.ts # Starknet ID services
│ │ ├── tokens.ts # Token services
│ │ ├── transactions.ts # Transaction services
│ │ ├── transfer.ts # Transfer services
│ │ └── utils.ts # Utility functions
├── package.json
├── tsconfig.json
└── README.md🛠️ 开发约定
添加自定义工具、资源或提示时:
在所有资源、工具和提示名称中使用下划线 (
_) 代替连字符 (-)// 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文件。
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseDqualityDmaintenanceA Model Context Protocol server that gives LLMs the ability to interact with Ethereum networks, manage wallets, query blockchain data, and execute smart contract operations through a standardized interface.544114MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables AI models to interact with the Solana blockchain, providing RPC methods, wallet management, DeFi trading capabilities, and Helius API integration for enhanced Solana development.5MIT
- AlicenseBqualityCmaintenanceA Model Context Protocol server that enables AI agents to interact with 30+ Ethereum-compatible blockchain networks, providing services like token transfers, contract interactions, and ENS resolution through a unified interface.28134381MIT
- -licenseNot gradedqualityNot gradedmaintenanceComprehensive Model Context Protocol server that enables AI agents to interact with 30+ Ethereum-compatible blockchain networks, supporting token transfers, smart contract interactions, and ENS name resolution through a unified interface.1
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A Model Context Protocol server for Wix AI tools
MCP server connecting AI agents to non-custodial staking data across 130+ networks.
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mcpdotdirect/starknet-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server