The Starknet MCP Server leverages the Model Context Protocol to provide blockchain services to AI agents. It offers a comprehensive interface to the Starknet ecosystem, enabling AI assistants to interact with Starknet blockchain data and operations through natural language. Key capabilities include reading blockchain state, interacting with Cairo smart contracts, transferring tokens, working with NFTs, and resolving StarknetID domains.
# Run the stdio server without installation
npx @mcpdotdirect/starknet-mcp-server
# Run the HTTP server without installation
npx @mcpdotdirect/starknet-mcp-server http
# Install globally
npm install -g @mcpdotdirect/starknet-mcp-server
# Then run from anywhere
starknet-mcp-server
starknet-mcp-server http
# 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
# 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
The server uses the following default configuration:
- Default Network: Mainnet
- Server Port: 3000 (HTTP mode)
- Server Host: 0.0.0.0 (accessible from any network interface)
# 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 http
starknet-mcp-server
command
npx @mcpdotdirect/starknet-mcp-server
{
"mcpServers": {
"starknet-mcp-server": {
"command": "npx",
"args": ["@mcpdotdirect/starknet-mcp-server"]
},
"starknet-mcp-http": {
"command": "npx",
"args": ["@mcpdotdirect/starknet-mcp-server", "http"]
}
}
}
{
"mcpServers": {
"starknet-mcp-sse": {
"url": "http://localhost:3000/sse"
}
}
}
# 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
get_starknet_chain_info
: Get information about a Starknet networkget_supported_starknet_networks
: Get a list of supported Starknet networksget_starknet_eth_balance
: Get the ETH balance for a Starknet address or Starknet IDget_starknet_token_balance
: Get the balance of any token for an addressget_starknet_strk_balance
: Get the STRK token balance for an addressget_starknet_native_balances
: Get all native token balances (ETH and STRK) for an addressresolve_starknet_name
: Get the Starknet ID for an addressresolve_starknet_address
: Get the address for a Starknet IDget_starknet_profile
: Get the full Starknet ID profile for an addressvalidate_starknet_domain
: Check if a string is a valid Starknet IDget_starknet_block
: Get information about a specific blockget_starknet_block_transactions
: Get transactions in a specific blockget_starknet_transaction
: Get details about a transactionget_starknet_transaction_receipt
: Get transaction receiptcheck_starknet_transaction_status
: Check if a transaction is confirmedcall_starknet_contract
: Call a read-only function on a contractget_starknet_contract_class
: Get the class (ABI and other information) of a contractexecute_starknet_contract
: Execute a contract call (write operation)get_starknet_token_info
: Get information about a tokenget_starknet_token_supply
: Get the total supply of a tokencheck_starknet_nft_ownership
: Check if an address owns a specific NFTget_starknet_nft_balance
: Get the number of NFTs owned by an addresstransfer_starknet_eth
: Transfer ETH from one account to another (amounts in human-readable format)transfer_starknet_strk
: Transfer STRK from one account to another (amounts in human-readable format)transfer_starknet_token
: Transfer ERC20 tokens from one account to another (amounts in human-readable format)starknet://{network}/chain
: Get chain information for a specific networkstarknet://networks
: Get a list of all supported networksstarknet://{network}/block/{blockIdentifier}
: Get information about a specific blockstarknet://{network}/block/latest
: Get the latest blockstarknet://{network}/address/{address}
: Get information about an addressstarknet://{network}/tx/{txHash}
: Get transaction informationstarknet://{network}/id/address/{address}
: Resolve an address to a Starknet IDstarknet://{network}/id/name/{name}
: Resolve a Starknet ID to an addressstarknet://{network}/id/profile/{address}
: Get the Starknet ID profile for an addressexplore_starknet_block
: Explore information about a specific Starknet blockexplore_starknet_address
: Get information about a Starknet addressexplore_starknet_transaction
: Get information about a Starknet transactionlookup_starknet_id
: Look up a Starknet ID or resolve an address to a Starknet IDexplore_starknet_id_profile
: Explore a full Starknet ID profileWhen using this server with AI assistants like Claude or GPT:
1. Configure your AI assistant to use this MCP server
2. The assistant can then use tools to interact with Starknet
3. Example queries:
- "What's the ETH balance of address 0x04d07e40e93398ed3c76981e449d3446f7c4e52aac5b3e8a37d7b0ca30845a5d?"
- "Look up the Starknet ID for address 0x04d07e40e93398ed3c76981e449d3446f7c4e52aac5b3e8a37d7b0ca30845a5d"
- "What's in the latest block on Starknet mainnet?"
- "Get information about transaction 0x7e3a33ab42f2e24184763563b7b8482b53e3b89831ebc3eacf29d4d11f5198"
- "Resolve the Starknet ID vitalik.stark to an address"
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
When adding custom tools, resources, or prompts:
1. Use underscores (_
) instead of hyphens (-
) in all resource, tool, and prompt names
ts
// Good: Uses underscores
server.tool(
"starknet_contract_call",
"Description of the tool",
{
contract_address: z.string().describe("The contract address")
},
async (params) => {
// Tool implementation
}
);
2. This naming convention ensures compatibility with Cursor and other AI tools
For more information about:
- Model Context Protocol
- Starknet.js Documentation
- Starknet Documentation
- StarknetID Documentation
This project is licensed under the MIT License - see the LICENSE file for details.