Model Context Protocol (MCP) server for Shape, built with xmcp. This server provides AI assistants access to Shape's onchain data: gasback distribution, collections analytics, stack users & more.
Contributions are welcome! Fork and add your own tools, feel free to submit a PR.
Check our docs about how to build AI on Shape: https://docs.shape.network/building-on-shape/ai
Organized by functionality for easy extension:
- Gasback Analytics - Track creator earnings, top performers, and simulate gasback earned
- NFT Analysis - Collections and ownership
- Stack Achievements - Monitor user progress in Shape's Stack ecosystem
- Network Monitoring - Chain health, metrics, RPC URLs, etc
- AI Ready - Tools are optimized for agent chaining and automation
- Caching - Optional Redis for snappier responses & less load on RPCs, no lock-in required
Monitor Shape's network: RPC health, gas prices, block times, etc.
Example prompt: "current shape status? gas prices looking mint-friendly?"
Collection stats: supply, owners, sample NFTs, floors, etc.
Example prompt: "what's the vibe on collection 0x567...abc? floor price and top holders?"
List NFTs for an address, with metadata.
Example prompt: "what NFTs does 0xabcd...123 hold on shape?"
Shape builder/creator deep dive: earnings, tokens, withdrawals, etc.
Example prompt: "analyze creator 0xabcd...123's gasback and compare to top earners. any tips?"
Top creators by gasback earned & tx.
Example prompt: "who are shape's top 10 gasback earners?"
Get gasback rough estimates.
Example prompt: "simulate 50 txs/day at 50k gasβearnings over 3 months? wen lambo?"
User medals by tier, total count, etc.
Example prompt: "what's 0xghi...123's stack status? gold medals?"
Want to try the MCP server without local setup? Point directly to our deployed instance:
{
"mcpServers": {
"shape-mcp": {
"url": "https://shape-mcp-server.vercel.app/mcp"
}
}
}Note: This deployed version is rate limited and is intended for testing/sandbox use only. For production AI applications, we recommend self-hosting your own instance following the setup instructions above.
- Alchemy API key for NFT queries (get one here)
- MCP client like Cursor IDE, Claude Desktop or your AI client of choice
- Optional: Redis for caching (speeds up RPC-heavy tools)
Copy .env.example to .env and fill in:
ALCHEMY_API_KEY=your_key_here
CHAIN_ID=360 # Mainnet; use 11011 for Sepolia
# Optional caching
REDIS_URL=redis://localhost:6379 # Local, or Upstash for prodyarn installyarn devServer is now running at http://localhost:3002/mcp
Add to your MCP settings in Cursor for eg:
{
"mcpServers": {
"shape-mcp": {
"url": "http://localhost:3002/mcp"
}
}
}src/
βββ tools/ # Modular tools
β βββ gasback/
β βββ network/
β βββ nft/
β βββ stack/
βββ abi/ # Contract interfaces
βββ utils/ # Helpers like cache.ts
βββ addresses.ts # Key contracts addys
βββ clients.ts # RPC/Alchemy/Redis
βββ config.ts # Env-based setup
βββ middleware.ts # Auth/logging if needed
βββ types.ts # Shared outputs
βββ xmcp.config.ts # xmcp server config
Categories keep things modular. Add a tool to /tools/gasback/ and xmcp auto-picks it up. No monolith mess.
- Pick a category folder (e.g., /tools/gasback/)
- New .ts file with schema, metadata, function
- Example:
import { z } from 'zod';
import { type InferSchema } from 'xmcp';
export const schema = {
address: z.string().describe('Wallet to analyze'),
};
export const metadata = {
name: 'myTool',
description: 'Custom tool for fun insights',
annotations: {
title: 'My Tool',
readOnlyHint: true,
destructiveHint: false,
idempotentHint: true,
requiresWallet: false,
category: 'gasback',
chainableWith: ['getShapeCreatorAnalytics'],
},
};
export default async function myTool({ address }: InferSchema<typeof schema>) {
// Logic here
return {
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
};
}Redis cuts RPC load for repeat calls. Set REDIS_URL to your instance (Vercel KV or Upstash). Skip it? Tools run direct, no sweat. See cache.ts for the simple get/set logic.
Fork this repo and deploy your personal MCP:
- Fork on GitHub
- Import to Vercel: New Project
- Set env vars:
SHAPE_RPC_URL(your node),ALCHEMY_API_KEY,CHAIN_ID(360for mainnet, or11011for testnet), optionalREDIS_URL - Deployβaccess at your-vercel-url/mcp!
Use your own Alchemy API key to avoid public RPC limits. Default falls back to Shapeβs public node https://mainnet.shape.network and https://sepolia.shape.network.
Contact @williamhzo or hop into Shape Discord.
MIT LICENSE - See LICENSE