idlhub - a comprehensive, searchable registry of Interface Definition Language (IDL) files for Solana protocols. This repository provides a centralized location for discovering and accessing IDLs across the Solana ecosystem.
- Comprehensive Coverage: IDLs for 100+ Solana protocols including Jupiter, Orca, Marinade, Drift, Kamino, and many more
- Web Interface: Simple, intuitive web UI for searching and browsing protocols
- Easy Export: Select and download multiple IDLs at once
- Organized Structure: Clean directory layout with standardized naming
- Searchable: Filter by category, search by name or description
- Extensible: Easy to contribute new IDLs or update existing ones
- π MCP Server: Model Context Protocol server for LLM and editor integration with schema lookup, code generation, and diagnostics
idl-registry/
βββ index.html # Web UI for browsing and exporting IDLs
βββ index.json # Registry index with all protocol metadata
βββ IDLs/ # Directory containing all IDL files
β βββ jupiterIDL.json
β βββ orcaIDL.json
β βββ marinadeIDL.json
β βββ ...
βββ mcp-server/ # Model Context Protocol server
β βββ src/ # Server source code
β βββ config.json # Server configuration
β βββ README.md # MCP server documentation
βββ README.md
- Open
index.htmlin your browser (or visit the hosted version) - Search for protocols by name or description
- Filter by category (DEX, Lending, Derivatives, etc.)
- Select protocols you're interested in
- Click "Export Selected IDLs" to download them as a single JSON file
Access IDL files directly from the IDLs/ directory:
# Clone the repository
git clone https://github.com/openSVM/idl-registry.git
# Access a specific IDL
cat idl-registry/IDLs/jupiterIDL.json// Load the registry index
const response = await fetch('https://raw.githubusercontent.com/openSVM/idl-registry/main/index.json');
const registry = await response.json();
// Find a specific protocol
const jupiter = registry.protocols.find(p => p.id === 'jupiter');
// Load its IDL
const idlResponse = await fetch(`https://raw.githubusercontent.com/openSVM/idl-registry/main/${jupiter.idlPath}`);
const idl = await idlResponse.json();IDLHub includes a Model Context Protocol (MCP) server that provides structured, high-performance access to IDL schemas, symbol lookup, code generation, and diagnostics. Perfect for LLM integration and editor tooling.
One-Line Install:
curl -fsSL https://idlhub.com/mcp | shOr if you have the repository already:
# Install dependencies
npm install
# Start the MCP server (stdio transport)
npm run mcp:start
# Or start with WebSocket transport
npm run mcp:websocketFeatures:
- π Schema listing & retrieval
- π Symbol lookup (types, instructions, accounts, enums)
- π» Code generation (TypeScript, Rust, Python, Anchor TS)
- β IDL validation and diagnostics
- π High performance (p95 < 100ms)
- π Multiple transports (stdio, WebSocket)
Integration Examples:
// Claude Desktop / Cline
{
"mcpServers": {
"idlhub": {
"command": "node",
"args": ["/path/to/idlhub/mcp-server/src/index.js"]
}
}
}See mcp-server/README.md for complete documentation.
IDLHub provides a REST API for dynamically loading and uploading IDL files.
# Start the API server
npm run api:start
# Server runs on http://localhost:3000POST /api/idl/load-from-github- Load IDL from GitHub repositoryPOST /api/idl/upload- Upload IDL directlyGET /api/programs- List all programsGET /api/programs/:id/idl- Get specific program IDLGET /api/search- Semantic search using Qdrant
curl -X POST http://localhost:3000/api/idl/load-from-github \
-H "Content-Type: application/json" \
-d '{
"owner": "coral-xyz",
"repo": "anchor",
"path": "tests/example.json",
"branch": "master",
"programId": "example",
"name": "Example Program",
"category": "defi"
}'curl -X POST http://localhost:3000/api/idl/upload \
-H "Content-Type: application/json" \
-d '{
"programId": "myprogram",
"name": "My Program",
"category": "defi",
"idl": {
"version": "0.1.0",
"name": "my_program",
"instructions": []
}
}'See api/README.md for complete API documentation.
Deploy IDLHub to Netlify with one click:
IDLHub includes a complete Netlify configuration (netlify.toml) with:
- Automatic redirects for the
/mcpinstallation endpoint - Optimized caching and security headers
- CDN distribution for fast global access
Quick setup:
- Click the deploy button above
- Configure environment variables for Qdrant (optional)
- Deploy and get your custom domain
See NETLIFY.md for detailed deployment instructions.
IDLHub supports Qdrant for enhanced search and discovery:
# Install dependencies
npm install
# Configure Qdrant credentials
cp .env.example .env
# Edit .env with your Qdrant URL and API key
# Initialize Qdrant collections
npm run qdrant:initThis enables:
- Semantic search across protocols
- Similar protocol discovery
- Fast metadata queries
- Search history tracking
Qdrant configuration is based on aldrin-labs/openSVM for compatibility.
- DEX: Decentralized exchanges (Orca, Raydium, Phoenix, OpenBook)
- DEX Aggregator: Liquidity aggregators (Jupiter)
- Lending: Lending protocols (Kamino, Solend, MarginFi)
- Liquid Staking: Staking solutions (Marinade, Jito, Sanctum)
- Derivatives: Futures and options (Drift, Zeta, Mango)
- Launchpad: Token launch platforms
- Infrastructure: Core protocols and tools
- And more...
We welcome contributions! Here's how you can help:
- Fork this repository
- Add your IDL file to the
IDLs/directory following the naming convention:{protocol}IDL.json - The IDL should follow the standard Anchor IDL format
- Update
index.json(or run the generation script) - Submit a pull request
- Fork this repository
- Update the IDL file in the
IDLs/directory - Update the version and lastUpdated fields in
index.json - Submit a pull request
IDLs should follow the standard Anchor IDL format:
{
"version": "0.1.0",
"name": "protocol_name",
"instructions": [
{
"name": "instruction_name",
"accounts": [...],
"args": [...]
}
],
"accounts": [...],
"types": [...],
"metadata": {
"address": "program_address"
}
}For protocols without available IDLs, we include placeholder files with:
{
"version": "0.1.0",
"name": "protocol_name",
"instructions": [],
"accounts": [],
"types": [],
"metadata": {
"note": "Placeholder - IDL not yet available. Contributions welcome."
}
}- Total Protocols: 101
- IDLs Available: 5 (Jupiter, Orca, Marinade, Drift, Kamino)
- Placeholders: 96 (awaiting community contributions)
If you add or modify IDL files, you can regenerate the index:
# Install dependencies (Node.js required)
npm install
# Regenerate index.json (script to be added)
npm run generate-index# Serve the web interface locally
python3 -m http.server 8000
# or
npx serve .
# Open http://localhost:8000 in your browserThe registry includes IDLs (or placeholders) for the following protocols:
- Acceleraytor, Adrena, Aldrin, Apricot, Arrow, Atrix, Balansol, Beluga, Blaze
- Bonfida, Byreal, Cashio, Clone, Crate, Crema, Cropper, Cyclos, Cykura
- DeltaOne, Dexlab, Dexterity, Drift, Ellipsis, EnjinStarter, Flash, FluxBeam
- Francium, Gauge, Gavel, GMX, Goki, GoonFi, GooseFX, Hawksight, Hubble
- Humidifi, Hxro, Invariant, Jet, Jito, Jupiter, Kamino, Kommunitas, Larix
- LaunchMyNFT, Lifinity, Lifinity V2, Magic Eden, Mango, Mango V3, MarginFi
- Marinade, Mercurial, Merkle Distributor, Meteora, Obric, OpenBook, Orca
- Parrot, Penguin, Permalock, Phoenix, Plasma, Pool Manager, Port, Prism
- Pump.fun, PumpSwap, Quarry, Ribbon, Saber, Saber Periphery, Sanctum, Saros
- Save, Sencha, Serum V2, Snapshots, Solanium, Solend, SolFi, Solrazr
- SolStarter, Stabble, Stable Swap, StarLaunch, Step, STEPN, Sunny
- Switchboard, Symmetry, Synthetify, Tessera V, Titan, Tribeca, Tulip, UXD
- Venko, Whirlpool, Yi, ZeroFi, ZeroOne, Zeta
- Anchor Framework - IDL standard for Solana
- Solana Documentation
- Program IDL Specification
This project is released into the public domain under the Unlicense. See LICENSE for details.
Special thanks to all the Solana protocols and their teams for building the ecosystem. This registry is a community effort to make protocol integration easier for developers.
Note: Many IDLs are currently placeholders. We encourage the community and protocol teams to contribute actual IDL files. Together, we can build a comprehensive resource for the entire Solana ecosystem!