Solana MCP Server 🌱
A MCP server to interact with the Solana blockchain with your own private key.
📖 Table of Contents
✨ Features
- Get latest slot
- Get wallet address
- Get wallet balance
- Transfer SOL
⚙️ Setup
- Clone the repository
git clone https://github.com/Grandbusta/solana-mcp.git
- Install dependencies
npm install
- Build the project
npm run build
- Create a keypair file
Create a file named
keypair.json
anywhere you want and copy your private key into it. Check the example-keypair.json file for an example.
NB: RPC endpoint is set to api.devnet.solana.com
by default. If you want to use a different endpoint, you can set it in the run.sh
file.
Integration with Cursor
To integrate with Cursor, follow these steps:
- In the Cursor settings, go to MCP
- Click "Add new MCP server"
- Enter the following information:
- Name: Solana MCP
- Type: command
- Command:
/path/to/your/solana-mcp/run.sh /path/to/your/keypair.json
Example command: /Users/username/projects/solana-mcp/run.sh /Users/username/Documents/keypair.json
🛠️ Available Tools
1. get-latest-slot
Returns the latest slot number:
368202671
2. get-wallet-address
Returns the wallet address:
5GTuMBag1M8tfe736kcV1vcAE734Zf1SRta8pmWf82TJ
3. get-wallet-balance
Returns the wallet balance in SOL, Lamports, and USD:
{
"lamportsBalance": "4179966000",
"solanaBalnce": 4.179966,
"usdBalance": "553.0513"
}
4. transfer
Transfers SOL to a recipient address:
{
"blockTime": "1742316463",
"meta": {
"computeUnitsConsumed": "150",
"err": null,
"fee": "5000",
"innerInstructions": [],
"loadedAddresses": {
"readonly": [],
"writable": []
},
"logMessages": [
"Program 11111111111111111111111111111111 invoke [1]",
"Program 11111111111111111111111111111111 success"
],
"postBalances": [
"4179966000",
"819999000",
"1"
],
"postTokenBalances": [],
"preBalances": [
"4399970000",
"600000000",
"1"
],
"preTokenBalances": [],
"rewards": [],
"status": {
"Ok": null
}
},
"slot": "368211978",
"transaction": {
"message": {
"accountKeys": [
"6qhddtBoEHqTc3VM35a3rb3aLUe6vDQfmLigo2G4r5s1",
"5GTuMBag1M8tfe736kcV1vcAE734Zf1SRta8pmWf82TJ",
"11111111111111111111111111111111"
],
"addressTableLookups": [],
"header": {
"numReadonlySignedAccounts": 0,
"numReadonlyUnsignedAccounts": 1,
"numRequiredSignatures": 1
},
"instructions": [
{
"accounts": [
0,
1
],
"data": "3Bxs452Q9hdvHuwd",
"programIdIndex": 2,
"stackHeight": null
}
],
"recentBlockhash": "BLqtPS9BHPp9CRFTrVAsrxFMWC98VTUAQ3vi12bSquLo"
},
"signatures": [
"3bLyqbPn26ofkaxSAVqadQnHqXu9hyoryixmKCn69nunKg2cSryDVAWnfCcYPcGtjSmXcMHfrzc3bw25zFTabXvs"
]
},
"version": "0"
}
🧑💻 Contributing
Contributions are welcome! Please open an issue or submit a pull request.