Solana MCP Server
by Grandbusta
Verified
# Solana MCP Server 🌱
A MCP server to interact with the Solana blockchain with your own private key.
## 📖 Table of Contents
- [✨Features](#-features)
- [⚙️Setup](#️-setup)
- [Integration with Cursor](#integration-with-cursor)
- [🛠️Available Tools](#️-available-tools)
- [🔖License](#️-license)
## ✨ Features
- Get latest slot
- Get wallet address
- Get wallet balance
- Transfer SOL
## ⚙️ Setup
1. Clone the repository
```bash
git clone https://github.com/Grandbusta/solana-mcp.git
```
2. Install dependencies
```bash
npm install
```
3. Build the project
```bash
npm run build
```
4. 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:
1. In the Cursor settings, go to MCP
2. Click "Add new MCP server"
3. 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:
```bash
368202671
```
### 2. get-wallet-address
Returns the wallet address:
```bash
5GTuMBag1M8tfe736kcV1vcAE734Zf1SRta8pmWf82TJ
```
### 3. get-wallet-balance
Returns the wallet balance in SOL, Lamports, and USD:
```bash
{
"lamportsBalance": "4179966000",
"solanaBalnce": 4.179966,
"usdBalance": "553.0513"
}
```
### 4. transfer
Transfers SOL to a recipient address:
```bash
{
"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.
## 🔖 License
[WTFPL License](https://www.wtfpl.net/about/)