Content
# Solana Web3.js MCP Server
A Model Context Protocol (MCP) server that enables AI assistants like Claude to develop and deploy Solana smart contracts end-to-end. This server acts as a bridge between AI language models and the Solana blockchain, providing a standardized interface for blockchain interactions.
> **Important Update**: This project is currently being migrated from Solana web3.js v1.x to v2.0 to take advantage of improved performance, better type safety, and modern functional programming patterns. See the [migration plan](/migration_plan.md) for details.
## What is MCP?
The [Model Context Protocol](https://modelcontextprotocol.io) (MCP) is an open standard that allows AI assistants to access external tools and data sources in a secure, controlled manner. This server implements the MCP specification to expose Solana blockchain functionality to AI assistants.
## What This Server Does
This MCP server provides AI assistants with the ability to:
1. **Interact with the Solana Blockchain**: Query account data, check balances, view transaction history, and get network status from various Solana clusters (mainnet, testnet, devnet)
2. **Create and Manage Transactions**: Build, simulate, sign, and send transactions to the Solana blockchain with proper error handling and fee estimation
3. **Develop Smart Contracts**: Access templates, compile, test, and deploy Solana programs written in Rust using the Solana SDK or Pinocchio framework
4. **Manage Wallets and Keys**: Generate keypairs, derive addresses, and interact with wallet adapters while maintaining security best practices
5. **Work with Tokens**: Create, transfer, and manage SPL tokens and token accounts
## Architecture
The server exposes three types of MCP capabilities:
- **Tools**: Functions that perform actions like sending transactions, deploying programs, or generating keypairs
- **Resources**: Data sources such as documentation, code templates, and blockchain state information
- **Prompts**: Templates for guiding the AI through complex workflows like smart contract development
All blockchain interactions are performed through the [@solana/web3.js](https://github.com/solana-labs/solana-web3.js) library and related SDKs, with the MCP server acting as a secure intermediary between the AI and the blockchain.
## Installation
```bash
# Clone the repository
git clone https://github.com/FrankGenGo/solana-web3js-mcp-server.git
cd solana-web3js-mcp-server
# Install dependencies
npm install
# Build the server
npm run build
# Start the server
npm start
```
## Usage with Claude Desktop
1. Install [Claude Desktop](https://claude.ai/download)
2. Add the following to your Claude Desktop configuration file:
**On macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
**On Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"solana": {
"command": "node",
"args": ["/absolute/path/to/solana-web3js-mcp-server/dist/index.js"]
}
}
}
```
3. Restart Claude Desktop
4. You can now ask Claude to perform Solana-related tasks, such as:
- "Create a new Solana account and show me the keypair"
- "What's the current balance of address X?"
- "Help me write and deploy a simple token contract on Solana devnet"
## Security Considerations
- This server does NOT store private keys by default
- Sensitive operations (signing, deploying to mainnet) require explicit user approval
- The server follows best practices for secure blockchain interactions
## Available Tools
### Account Management (Implemented)
- `getAccountInfo`: Fetch and decode account information
- `checkAccountBalance`: Get SOL balance for an address
- `findProgramAccounts`: Find accounts owned by a program
- `getRentExemption`: Calculate minimum balance for rent exemption
### Transaction Management (Implemented)
- `createTransaction`: Build a transaction with specified instructions
- `signTransaction`: Sign a transaction with one or more keypairs
- `sendTransaction`: Send and confirm a transaction on-chain
- `simulateTransaction`: Simulate a transaction without sending it
- `getTransactionStatus`: Check the status of a transaction
### Key Management (Implemented)
- `generateKeypair`: Create a new Solana keypair
- `importKeypair`: Import an existing keypair from various formats
- `deriveKeypair`: Derive a keypair from seed, mnemonic, or path
### Program Development (Implemented)
- `deployProgram`: Deploy a program to a Solana cluster
- `upgradeProgram`: Upgrade an existing upgradeable program
- `generateProgramAddress`: Derive a program derived address (PDA)
### Token Operations (Implemented)
- `createToken`: Create a new SPL token
- `mintTokens`: Mint tokens to a token account
- `transferTokens`: Transfer tokens between accounts
- `getTokenAccountInfo`: Get token account information
- `getTokenSupply`: Get the total supply of a token
### Configuration Management (Planned)
- `getConfig`: Get current configuration settings
- `setConfig`: Update configuration parameters
- `getClusterVersion`: Get Solana cluster version
### Extended Keypair Management (Planned)
- `saveKeypair`: Save keypair to secure storage
- `recoverKeypair`: Recover keypair from seed phrase
- `verifyKeypair`: Verify keypair integrity
### Network Interaction (Planned)
- `requestAirdrop`: Request SOL from devnet/testnet faucet
- `manageStake`: Create and manage stake accounts
- `getValidators`: Get validator information
### Blockchain Data Inspection (Planned)
- `getBlock`: Get block details by slot number
- `getBlockProduction`: Get block production statistics
- `getRecentBlockhash`: Get recent blockhash with fee calculator
- `getEpochInfo`: Get current epoch information
- `getInflationRate`: Get current inflation rate
### Logging & Monitoring (Planned)
- `getLogs`: Stream and filter transaction logs
- `getProgramLogs`: Monitor program execution logs
## Development
```bash
# Run in development mode (with auto-reload)
npm run dev
# Run tests (including integration tests against devnet)
npm test
# Lint the code
npm run lint
```
### Setting Up Test Environment
The test suite includes integration tests that run against the Solana devnet. To set up your environment for testing:
1. **Install Solana CLI**: Follow the [official installation instructions](https://docs.solanalabs.com/cli/install)
2. **Generate a test keypair**:
```bash
mkdir -p ~/solana-web3js-tests
solana-keygen new --force --no-bip39-passphrase -o ~/solana-web3js-tests/test-keypair.json
```
3. **Fund the test keypair with devnet SOL**:
```bash
solana airdrop 1 $(solana address -k ~/solana-web3js-tests/test-keypair.json) --url devnet
```
4. **Verify the balance**:
```bash
solana balance -k ~/solana-web3js-tests/test-keypair.json --url devnet
```
The test suite will automatically use this keypair for integration tests against devnet.
## Project Structure
- `src/index.ts`: Main entry point (implemented)
- `src/solana-server.ts`: Core server implementation (implemented)
- `src/core/connection-manager.ts`: Solana connection management (implemented)
- `src/transport/`: Transport layer implementations
- `src/transport/stdio.ts`: Standard I/O transport (implemented)
- `src/transport/http.ts`: HTTP/SSE transport (implemented)
- `src/transport/index.ts`: Transport exports (implemented)
- `src/tools/`: Tool implementations for Solana operations
- `src/tools/accounts/`: Account management tools (implemented)
- `src/tools/transactions/`: Transaction operations tools (implemented)
- `src/tools/keys/`: Key management tools (implemented)
- `src/tools/programs/`: Program development tools (implemented)
- `src/resources/`: Resource implementations for Solana data (planned)
- `src/prompts/`: Reusable prompts for common workflows (planned)
- `src/types/`: TypeScript type definitions
- `src/types/solana.ts`: Solana-specific type definitions (partial implementation)
- `src/types/tools.ts`: Tool input/output type definitions (planned)
- `src/types/config.ts`: Configuration type definitions (planned)
- `src/utils/`: Utility functions and classes
- `src/utils/errors.ts`: Error handling system (implemented)
- `src/utils/logging.ts`: Logging system (implemented)
## Extending the Server
This server is designed to be extensible. To add new functionality:
1. Create a new tool in the appropriate file in the `tools` directory
2. Register the tool in `solana-server.ts`
3. Test the tool with both unit tests and integration tests
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
## License
MIT
Connection Info
You Might Also Like
everything-claude-code
Complete Claude Code configuration collection - agents, skills, hooks,...
markitdown
MarkItDown-MCP is a lightweight server for converting URIs to Markdown.
cc-switch
All-in-One Assistant for Claude Code, Codex & Gemini CLI across platforms.
servers
Model Context Protocol Servers
servers
Model Context Protocol Servers
Time
A Model Context Protocol server for time and timezone conversions.