Solana MCP Server
by Grandbusta
Solana MCP Server is a tool that allows you to interact with the Solana blockchain using your own private key. It provides functionalities to get the latest slot, wallet address, balance, and transfer SOL.
Last updated: N/A
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.