MCP Server for Rootstock Blockchain. This server implements the Model Context Protocol (MCP) to manage and exchange model context data within Rootstock-related workflows. It exposes MCP-compliant operations and is categorized under AI-agent, blockchain, claude, and web3 topics.
π οΈ Key Features
MCP-compatible model context management
Focused on Rootstock (RSK) blockchain use cases
Lightweight server for model-context exchange
Related to AI agents and web3 tooling
π Use Cases
Enabling model-context sharing for blockchain applications
Facilitating integration of AI agents with Rootstock workflows
Supporting mcp-server oriented deployments in web3 environments
β‘ Developer Benefits
Clear alignment with MCP standards for context data
GitHub-style discovery via topics for easy routing
Descriptive readme excerpt to quick-start integration
β οΈ Limitations
Based on provided source fields; no additional capabilities inferred
Limited descriptive content; may require contributor input for extension
Rootstock MCP Server is a Model Context Protocol (MCP) server that provides advanced tools for interacting with the Rootstock (RSK) blockchain. This project enables AI clients to seamlessly connect and execute blockchain operations.
π Key Features
πΌ Wallet Management: Create, import, switch and manage multiple wallets
π° Balance Queries: Check rBTC and ERC20 token balances
πΈ Transfers: Send rBTC and tokens to other addresses
π Transaction Tracking: Verify transaction status by hash
π Contract Deployment: Deploy smart contracts on Rootstock
π Contract Interaction: Read data from verified contracts
π History: Query transaction history
π― Attestations: Create, verify, and manage attestations using RAS (Rootstock Attestation Service)
ποΈ Schema Management: Create and manage attestation schemas
π Attestation Queries: List and filter attestations by various criteria
π§° Available Tools
This server exposes 22 MCP tools. You don't call these directly β once the MCP is connected, your AI client selects the right tool based on your prompt.
Category
Tool
Description
Session
start-interaction
Start interacting with the Rootstock CLI functions
Session
list-pending-operations
List pending operations awaiting confirmation (deploys, transfers)
Session
confirm-operation
Confirm and execute a pending operation by ID
Session
cancel-operation
Cancel a pending operation by ID
Wallet
start-wallet-interaction
Show available wallet management operations
Wallet
create-wallet
Create, import, list, switch, or delete wallets
Wallet
use-wallet-from-creation
Reuse wallet data from a previous create-wallet result without re-uploading it
Balance
check-balance
Check rBTC or ERC20 token balances
Transfers
transfer-tokens
Transfer rBTC or ERC20 tokens between wallets
Transactions
check-transaction
Check a transaction's status and details by hash
Transactions
check-transaction-history
Query a wallet's transaction history via the Alchemy API
Contracts
deploy-contract
Deploy a smart contract using ABI and bytecode
Contracts
verify-contract
Verify a deployed contract's source code
Contracts
read-contract
Call view/pure functions on a verified contract
Attestations
issue-attestation
Issue a new attestation via RAS (Rootstock Attestation Service)
Attestations
verify-attestation
Verify an existing attestation by UID
Attestations
revoke-attestation
Revoke an existing attestation by UID
Attestations
list-attestations
Query attestations by event logs (requires a custom RPC URL)
Attestations
create-schema
Register a new attestation schema
Attestations
attest-deployment
Attest a contract deployment using the RAS default schema
Attestations
attest-verification
Attest a contract verification using the RAS default schema
Attestations
attest-transfer
Attest a token transfer using the RAS default schema
Note: You will use this Model Context Protocol Server from a LLM Client (e.g Cursor, Claude, Warp, etc) which needs to be compatible with the MCP standard. Take into account there are 2 steps here:
Installation and Build
AI Client Configuration
IMPORTANT: You need to complete both settings to correctly use MCP within the Client.
π οΈ Installation and Build
1. Clone the Repository
bash
git clone https://github.com/rsksmart/rsk-mcp-server
cd rsk-mcp-server
2. Install Dependencies
bash
npm install
3. Build the Project
bash
npm run build
This command:
Compiles TypeScript to JavaScript in the build/ folder
Makes the main file executable (build/index.js)
4. Verify Installation
bash
node build/index.js
Important Note: For local running this MCP, your client will point to the index.js file created on the build folder after building it.
βοΈ AI Client Configuration
π Remote Configuration
For Cursor IDE
In Cursor, go to Settings > Cursor Settings > Tools & Integrations
You will see an option to Add Custom MCP
And add to the JSON file:
json
{"mcpServers":{"rsk-mcp-server":{"command":"npx","args":["-y","@rsksmart/rsk-mcp-server"]}}}// The Args field contains the path to the index.js file created by the build.
Note: For install reference on Cursor, please follow these instructions Here
Once it is installed into Cursor, you should see something like:
Green dot indicates it was installed correctly.
For Claude Desktop (Anthropic)
Edit your Claude Desktop configuration file:
Open your Claude client, and then click on Settings/Developer
Click the βEdit Configβ button to open the configuration file and add the following configuration:
Note: This action creates a new configuration file if one doesnβt exist, or opens your existing configuration. The file is located at:
{"mcpServers":{"rsk-mcp-server":{"command":"npx","args":["-y","@rsksmart/rsk-mcp-server"]}}}// The Args field contains the path to the index.js file created by the build.
Note: For install reference on Claude, please follow these instructions Here
Once you have installed this MCP on the Claude client, you will see it once you click on the Search and toolsoption under Web search option (see next image)
π Local Configuration
For Cursor IDE
In Cursor, go to Settings > Cursor Settings > Tools & Integrations
You will see an option to Add Custom MCP
And add to the JSON file:
json
{"mcpServers":{"rsk-mcp":{"command":"node","args":["/absolute/path/to/your/project/rsk-mcp-server/build/index.js"]}}}// The Args field contains the path to the index.js file created by the build.
Note: For install reference on Cursor, please follow these instructions Here
Once it is installed into Cursor, you should see something like:
Green dot indicates it was installed correctly.
For Claude Desktop (Anthropic)
Edit your Claude Desktop configuration file:
Open your Claude client, and then click on Settings/Developer
Click the βEdit Configβ button to open the configuration file and add the following configuration:
Note: This action creates a new configuration file if one doesnβt exist, or opens your existing configuration. The file is located at:
{"mcpServers":{"rsk-mcp":{"command":"node","args":["/absolute/path/to/your/project/rsk-mcp-server/build/index.js"],"env":{}}}}// The Args field contains the path to the index.js file created by the build.
Note: For install reference on Claude, please follow these instructions Here
Once you have installed this MCP on the Claude client, you will see it once you click on the Search and toolsoption under Web search option (see next image)
Once this MCP is installed on the client, you will be able to interact with it by prompt, using chat box, for example, a good prompt to start interacting with this MCP is to write a prompt like:
I would like to start interacting with Rootstock
Then it will require you to give permission to use the MCP tool, you click on accept, and then it should answer something like:
code
Perfect! The Rootstock CLI is now active and ready to help you interact with the Rootstock blockchain. Here are the available options:
Available Rootstock Operations:
πΌ wallet - Manage your wallet (create new, use existing, or import)
π° balance - Check wallet balances
πΈ transfer - Transfer RBTC or ERC20 tokens
π tx - Check transaction status
π deploy - Deploy a smart contract
β verify - Verify a contract
π contract - Interact with a contract
π history - Check transaction history
β help - Display help
What would you like to do? If you don't have a wallet yet, I'd recommend starting with option 1 (wallet management) to create or import a wallet first. Then you can proceed with other operations like checking balances, transferring tokens, or deploying contracts.
Which option interests you?
You can continue the flow according to what you need to do.
1. π§ Session & Interaction
Available Tools:
start-interaction: Entry point tool β start here when a user first asks about Rootstock. Lists all available operations.
list-pending-operations: List operations awaiting confirmation (contract deployments, token transfers)
confirm-operation: Confirm and execute a pending operation using its operation ID
cancel-operation: Cancel and discard a pending operation using its operation ID
Why confirmation is needed: Critical operations like deploy-contract and transfer-tokens require a confirmAction boolean on every call β omitting it fails schema validation. Passing confirmAction: false creates a pending operation (expires after 5 minutes) instead of executing, and nothing happens on-chain until it's confirmed via confirm-operation. Passing confirmAction: true on the first call skips that pending step entirely β the tool descriptions themselves instruct AI agents not to do this until a real person has explicitly approved the action, so treat it as an escape hatch for already-approved automation, not the default flow.
List Pending Operations
typescript
{} // no parameters
Confirm an Operation
typescript
{
operationId: "op_1700000000000_abc123xyz"// ID returned when the operation was created
}
// List all available wallets
{
walletOption: "π List saved wallets",
walletData: "my-wallets.json_content"
}
π Switch Active Wallet
typescript
// Switch to another wallet
{
walletOption: "π Switch wallet",
newMainWallet: "WalletName"
}
β»οΈ Reuse Wallet From Previous Creation
typescript
// Skips re-uploading wallet data by referencing the create-wallet result
{
testnet: true,
token: "rBTC",
walletCreationResult: "{\"walletsData\":{...}}"// the full JSON string returned by create-wallet, not a parsed object
}
3. π° Balance Queries
Tool: check-balance
Supported Tokens:
rBTC - Rootstock native token
USDT - Tether USD
DOC - Dollar on Chain
BPRO - BitPro
RIF - RIF Token
FISH - Fish Token
Custom Token - Any ERC20 token
Example:
typescript
{
testnet: true, // true for testnet, false for mainnettoken: "rBTC",
walletName: "MyWallet"// optional, uses current wallet if not specified
}
Transfers rBTC or ERC20 tokens between wallets. Like deploy-contract, confirmAction is required on every call: pass false to get back a pending operation that must be confirmed via confirm-operation before anything executes; pass true only once a real person has approved the transfer.
Requirements:
Recipient address
Amount (number, not string)
Wallet with sufficient funds
Token contract address (optional, omit for native rBTC)
Example:
typescript
{
testnet: true,
toAddress: "0x...", // recipient addressvalue: 0.01, // amount to transfer (number)tokenAddress: "0x...", // optional, omit for native rBTC transferswalletData: "my-wallets.json_content",
walletPassword: "wallet_password",
confirmAction: false// required on every call; false requires confirm-operation, true executes immediately
}
5. π Transaction Tracking
Tool: check-transaction
typescript
{
testnet: true, // network to checktxid: "0x..."// transaction hash (with or without 0x prefix)
}
Returned Information:
Transaction status (pending/confirmed/failed)
Block number
Gas used
Transfer details
Timestamps
6. π Transaction History
Tool: check-transaction-history
Queries a wallet's transaction history using the Alchemy API.
Requirements:
Alchemy API key (optional β falls back to a stored key if omitted)
Example:
typescript
{
testnet: true,
apiKey: "your-alchemy-api-key", // optional, uses a stored key if omittednumber: "10", // number of transactions to retrieve (string)walletData: "my-wallets.json_content"
}
Each wallet has its own unique IV (initialization vector)
Passwords are never stored in plain text
Best Practices
Use strong and unique passwords
Maintain secure backups of my-wallets.json
Do not share configuration files
Use testnet for testing
π Troubleshooting
Error: "Module not found"
bash
npm install
npm run build
MCP Connection Error
Verify absolute path in configuration
Ensure the project is compiled
Check MCP client logs
Wallet Issues
Verify my-wallets.json format
Check password in password.json (in case you managed the password in a file)
Ensure sufficient funds for transactions
Contributing
We welcome contributions from the community. Please fork the repository and submit pull requests with your changes. Ensure your code adheres to the project's main objective.
Support
For any questions or support, please open an issue on the repository or reach out to the maintainers.
Disclaimer
The software provided in this GitHub repository is offered βas is,β without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, and non-infringement.
Testing: The software has not undergone testing of any kind, and its functionality, accuracy, reliability, and suitability for any purpose are not guaranteed.
Use at Your Own Risk: The user assumes all risks associated with the use of this software. The author(s) of this software shall not be held liable for any damages, including but not limited to direct, indirect, incidental, special, consequential, or punitive damages arising out of the use of or inability to use this software, even if advised of the possibility of such damages.
No Liability: The author(s) of this software are not liable for any loss or damage, including without limitation, any loss of profits, business interruption, loss of information or data, or other pecuniary loss arising out of the use of or inability to use this software.
Sole Responsibility: The user acknowledges that they are solely responsible for the outcome of the use of this software, including any decisions made or actions taken based on the softwareβs output or functionality.
No Endorsement: Mention of any specific product, service, or organization does not constitute or imply endorsement by the author(s) of this software.
Modification and Distribution: This software may be modified and distributed under the terms of the license provided with the software. By modifying or distributing this software, you agree to be bound by the terms of the license.
Assumption of Risk: By using this software, the user acknowledges and agrees that they have read, understood, and accepted the terms of this disclaimer and assumes all risks associated with the use of this software.