AMOCA Solana
STDIOIntelligent agent providing enhanced capabilities for Solana blockchain development through standardized interface.
Intelligent agent providing enhanced capabilities for Solana blockchain development through standardized interface.
This repository demonstrates an implementation of an Autonomous Merit On Chain Agent (AMOCA) for Solana development, built on the Model Context Protocol (MCP).
AMOCA (Autonomous Merit On Chain Agent) is an intelligent agent that provides enhanced capabilities for Solana blockchain development through a standardized interface. This implementation showcases:
Comprehensive RPC methods for Solana:
DeFi Trading Capabilities:
Helpful autonomous workflows for Solana development:
Merit-based validation and verification of on-chain operations
flowchart TB %% Main Components Claude[Claude LLM] MCP[Model Context Protocol Server] User[User] %% External APIs SolanaRPC[Solana RPC Endpoints] JupiterAPI[Jupiter API] HeliusAPI[Helius API] %% API Categories subgraph HeliusServices[Helius API Services] DAS[Digital Asset Standard API] CollectionMint[Collection & Mint API] Webhooks[Webhook Management] NetworkTools[Network & Utility Tools] end subgraph SolanaServices[Solana Services] AccountOps[Account Operations] StorageCalc[Storage Calculations] WalletOps[Wallet Operations] TxAnalysis[Transaction Analysis] end subgraph JupiterServices[Jupiter Services] PriceData[Price Data] TokenSwaps[Token Swaps] QuoteRetrieval[Quote Retrieval] end %% Core Interactions User <---> Claude Claude <---> MCP %% MCP to APIs MCP <---> SolanaRPC MCP <---> JupiterAPI MCP <---> HeliusAPI %% Helius API Connections HeliusAPI --- HeliusServices %% Solana Service Connections SolanaRPC --- SolanaServices %% Jupiter Service Connections JupiterAPI --- JupiterServices %% AMOCA Features MCP --- TokenBalances[Token Balance Checking] MCP --- PortfolioAnalysis[Portfolio Analysis] MCP --- ValueVisualizations[Value Visualizations] MCP --- MeritValidation[Merit-based Validation] MCP --- AutoWorkflows[Autonomous Workflows]
This repository demonstrates a simple implementation of a Model Context Protocol (MCP) server for Solana development.
The Model Context Protocol (MCP) is a standardized interface for AI models to interact with tools and resources. This demo showcases a simple MCP server implementation that provides:
Clone this repository and install dependencies:
git clone https://github.com/manolaz/amoca-solana-mcp-server.git cd solana-dev-mcp pnpm install
To run this server in the MCP inspector, use:
npx @modelcontextprotocol/inspector ts-node index.ts
.env
file based on the .env.example
template with your API keys.cp .env.example .env # Edit .env with your API keys
Explore the code: The main implementation is in index.ts
, which sets up an MCP server with simple fetching tools and some prompts.
Modify the server: You can extend the server by adding more tools, resources, and prompts.
Test your implementation: Run the test suite to ensure everything is working properly.
pnpm test
This section explains how to use the Solana MCP server in Claude. Follow the same steps to use the Solana MCP server in Windsurf and Cursor.
To use this Solana MCP server, you need to generate a configuration file that Claude can use to connect to the server. Run one of the following commands to generate the configuration file:
pnpm generate-config
if you have ts-node
installed globallypnpm build && pnpm generate-config:js
if you don't have ts-node
installed globallyThis will print a JSON config with the following content:
If you have ts-node
:
{ "mcpServers": { "solana-dev": { "command": "ts-node", "args": ["<full-path-to-repo>/index.ts"] } } }
If you don't have ts-node
installed globally:
{ "mcpServers": { "solana-dev": { "command": "node", "args": ["<full-path-to-repo>/dist/index.js"] } } }
index.ts
- Main server implementationpackage.json
- Project dependencies and metadatatsconfig.json
- TypeScript configurationThis MCP server implementation provides a foundation that you can extend or fork for your own Solana development needs. Here are some ideas to get you started:
Priority Fee Estimator: Add a tool that estimates optimal priority fees for Solana transactions based on recent network activity. This could help users optimize transaction costs while ensuring timely processing.
Solana Verify Debugger: Create a tool that helps debug issues with solana-verify
by providing more detailed information about the verification process.
Solana Security.txt Inspector: Build a tool that extracts and displays the security.txt file information for a given Solana program, making it easier to contact the program's maintainers with security concerns.
Squads Helper for Program Deployment: Create a tool that automates the process of deploying and upgrading Solana programs, making it easier to manage program state across multiple environments.
Anchor-Error Explainer: Develop a tool that takes an error code and looks up the corresponding human-readable error message from the Anchor error code database.
Enhanced Prompts: Expand the server's prompt capabilities to provide more context-aware suggestions for Solana development tasks. For example, add prompts for common transaction patterns, account creation, or token operations.
Transaction Builder: Create tools that help construct complex transactions with multiple instructions, making it easier to interact with various Solana programs.
Custom RPC Endpoints: Allow configuration of custom RPC endpoints, including support for private RPC providers or local validators.
Program Deployment Helpers: Create tools that simplify the process of deploying and upgrading Solana programs.
Account & Transaction Explorer: Add a tool that takes an account or transaction ID and displays the contents in a human-readable format, similar to an explorer view. This could be useful for inspecting transaction data or account state without needing to manually decode the data.
Solana, Anchor, and Protocol Documentation: Add resources that load the Solana, Anchor, and Protocol documentation directly into the MCP editor, providing easy access to relevant information without needing to leave the editor. This could be implemented by fetching the documentation from the respective repositories and serving it as resources from the MCP server.
If you've built an extension that might be useful to others, consider submitting a pull request to this repository. Make sure to follow these guidelines:
This project integrates various Helius API endpoints for powerful Solana data access:
Tool | Description |
---|---|
getAssetsByOwner | Get NFTs owned by a specific address |
getAsset | Get detailed information about a specific NFT by its ID |
getAssetsByGroup | Get assets that belong to a specific group (like collection) |
searchAssets | Search for assets using complex query parameters |
getAssetProof | Get the merkle proof for a compressed NFT |
getAssetsByCreator | Get assets created by a specific creator address |
getAssetsByAuthority | Get assets by update authority address |
getNftEditions | Get all editions of a master edition NFT |
Tool | Description |
---|---|
getMintlist | Get mintlist for a collection |
Tool | Description |
---|---|
getAllWebhooks | Get all webhooks for your Helius API key |
getWebhookByID | Get webhook details by webhook ID |
createWebhook | Create a new webhook for address activity monitoring |
createCollectionWebhook | Create a webhook to monitor NFT collections |
deleteWebhook | Delete a webhook by its ID |
Tool | Description |
---|---|
getCurrentTPS | Get current transactions per second on Solana |
getTokenHolders | Get holders of a specific token by mint address |
getPriorityFeeEstimate | Get estimated priority fees for transactions |
getStakeAccounts | Get stake accounts by their owner address |
getComputeUnits | Simulate a transaction to get the total compute units consumed |
The server includes specialized prompts for common Helius-related tasks:
Prompt | Description |
---|---|
collection-analysis | Get a detailed analysis of an NFT collection |
monitor-nft-collection | Set up a webhook to monitor NFT collection activity |
network-status | Get Solana network status information |
const response = await server.tools.getAssetsByOwner({ ownerAddress: "GoodboiNft5iFNhbgKkf1RX2VdMqKvt5xYxyVh3zf9okx", });
const response = await server.prompts["collection-analysis"]({ collectionAddress: "J1S9H3QjnRtBbbuD4HjPV6RpRhwuk4zKbxsnCHuTgh9w", });
const response = await server.prompts["network-status"]({});
MIT