Complete guide to using toolkits in ROMA-DSPy agents.
- Overview
- Quick Start
- Native Toolkits
- MCP Integration
- Configuration Guide
- Examples
- Creating Custom Toolkits
- Best Practices
ROMA-DSPy provides a powerful toolkit system that enables agents to interact with external systems, execute code, access data, and perform specialized operations. The toolkit architecture supports:
- 10 Built-in Toolkits for common operations (files, math, web, crypto, code execution)
- MCP Integration to connect to any Model Context Protocol server (1000+ available)
- Smart Data Handling with optional Parquet storage for large results
- Execution Isolation with per-execution file scoping
- Tool Metrics tracking invocations, latency, and errors
- Flexible Configuration via YAML profiles
Agent (Executor)
├── Toolkit Manager
│ ├── Native Toolkits (FileToolkit, CalculatorToolkit, etc.)
│ ├── MCP Toolkits (connects to external MCP servers)
│ └── Custom Toolkits (user-defined)
├── Tool Storage (optional Parquet for large data)
└── Tool Metrics (tracking and observability)
Each toolkit:
- Auto-registers tools with DSPy's tool system
- Provides full parameter schemas for LLM tool selection
- Handles errors gracefully with structured responses
- Optionally stores large results to reduce context usage
# config/profiles/my_profile.yaml
agents:
executor:
llm:
model: openai/gpt-4o-mini
temperature: 0.3
prediction_strategy: react # Required for tool usage
toolkits:
- class_name: FileToolkit
enabled: true
- class_name: CalculatorToolkit
enabled: true
- class_name: E2BToolkit
enabled: true
toolkit_config:
timeout: 300Usage:
just solve "Calculate 15% of 2500 and save to results.txt" -c config/profiles/my_profile.yamlagents:
executor:
llm:
model: openai/gpt-4o-mini
prediction_strategy: react
toolkits:
# Public HTTP MCP server (no installation needed)
- class_name: MCPToolkit
enabled: true
toolkit_config:
server_name: coingecko
server_type: http
url: https://mcp.api.coingecko.com/sse
use_storage: falseUsage:
just solve "What is the current price of Bitcoin?" -c config/profiles/my_profile.yamlROMA-DSPy includes 10 built-in toolkits registered in ToolkitManager.BUILTIN_TOOLKITS.
File operations with execution-scoped isolation.
Tools:
save_file(file_path: str, content: str, encoding: str = 'utf-8')- Save content to fileread_file(file_path: str, encoding: str = 'utf-8')- Read file contentlist_files(directory: str = ".", pattern: str = "*")- List files matching patternsearch_files(query: str, directory: str = ".", extensions: list = None)- Search file contentscreate_directory(directory_path: str)- Create directorydelete_file(file_path: str)- Delete file (requires enable_delete=True)
Configuration:
- class_name: FileToolkit
enabled: true
toolkit_config:
enable_delete: false # Safety: disable destructive operations
max_file_size: 10485760 # 10MB limitSecurity:
- All file paths are scoped to execution-specific directories
- Path traversal attacks prevented
- File size limits enforced
- Delete operations disabled by default
Example: See config/examples/basic/minimal.yaml
Mathematical operations with precision control.
Tools:
add(a: float, b: float)- Add two numberssubtract(a: float, b: float)- Subtract b from amultiply(a: float, b: float)- Multiply two numbersdivide(a: float, b: float)- Divide a by bexponentiate(base: float, exponent: float)- Calculate base^exponentfactorial(n: int)- Calculate factorial of nis_prime(n: int)- Check if n is primesquare_root(n: float)- Calculate square root
Configuration:
- class_name: CalculatorToolkit
enabled: true
toolkit_config:
precision: 10 # Decimal places (default: 10)Response Format:
{
"success": true,
"operation": "addition",
"operands": [25, 47],
"result": 72.0
}Example: See config/examples/basic/minimal.yaml
Secure sandboxed code execution via E2B.
Features:
- Isolated Python/Node.js execution environments
- Automatic sandbox health checks
- Sandbox lifecycle management
- File system access within sandbox
- Network access for data fetching
Configuration:
- class_name: E2BToolkit
enabled: true
toolkit_config:
timeout: 300 # Execution timeout (seconds)
max_lifetime_hours: 23.5 # Auto-restart before 24h limit
template: base # E2B template ID
auto_reinitialize: true # Auto-restart on failureEnvironment Variables:
export E2B_API_KEY=your_key_here
export E2B_TEMPLATE_ID=base # Optional: custom templateExample: See config/examples/basic/multi_toolkit.yaml
Web search via Serper.dev API.
Tools:
search(query: str, num_results: int = 10)- Search the web
Configuration:
- class_name: SerperToolkit
enabled: true
toolkit_config:
location: "United States" # Search location
language: "en" # Results language
num_results: 10 # Number of results
date_range: null # Optional: "d" (day), "w" (week), "m" (month), "y" (year)Environment Variables:
export SERPER_API_KEY=your_key_hereExample: See config/examples/basic/multi_toolkit.yaml
Native web search using DSPy with LLM-powered web search capabilities.
Features:
- DSPy-native integration with web search enabled models
- Supports OpenRouter (with plugins) and OpenAI (Responses API)
- Automatic citation extraction
- Expert searcher prompts for comprehensive data retrieval
- Prioritizes reliable sources (Wikipedia, government, academic)
- Configurable search context depth
Tool:
web_search(query: str, max_results: int = None, search_context_size: str = None)- Search the web with comprehensive data retrieval
Configuration:
- class_name: WebSearchToolkit
enabled: true
toolkit_config:
model: openrouter/openai/gpt-5-mini # Auto-detects provider from prefix
search_engine: exa # For OpenRouter (omit for native search)
max_results: 5 # Number of search results
search_context_size: medium # low, medium, or high
temperature: 1.0 # Model temperature (1.0 required for GPT-5)
max_tokens: 16000 # Max response tokens (16000+ for GPT-5)Provider Detection:
- Models starting with
openrouter/use OpenRouter plugins API - Models starting with
openai/use OpenAI Responses API - No separate provider parameter needed
Search Behavior: The toolkit uses expert searcher instructions that guide the LLM to:
- Retrieve COMPLETE datasets (entire tables, all list items, all data points)
- Prioritize reliable sources (Wikipedia first, then gov/academic/news)
- Present data EXACTLY as found (no summarization)
- Include temporal awareness for time-sensitive queries
Environment Variables:
export OPENROUTER_API_KEY=your_key_here # For OpenRouter models
# OR
export OPENAI_API_KEY=your_key_here # For OpenAI modelsResponse Format:
{
"success": true,
"data": "Comprehensive answer with complete data...",
"citations": [
{"url": "https://en.wikipedia.org/..."},
{"url": "https://example.com/..."}
],
"tool": "web_search",
"model": "openrouter/openai/gpt-5-mini",
"provider": "openrouter"
}Example Usage:
# OpenRouter native search (GPT-5-mini)
- class_name: WebSearchToolkit
toolkit_config:
model: openrouter/openai/gpt-5-mini
# No search_engine = native search
max_results: 5
search_context_size: medium
temperature: 1.0
max_tokens: 16000
# OpenRouter with Exa search engine
- class_name: WebSearchToolkit
toolkit_config:
model: openrouter/anthropic/claude-sonnet-4
search_engine: exa
max_results: 10
search_context_size: high
# OpenAI Responses API
- class_name: WebSearchToolkit
toolkit_config:
model: openai/gpt-4o
search_context_size: medium
max_results: 5Example: See config/profiles/crypto_agent.yaml
Cryptocurrency market data from Binance.
Features:
- Spot, USDT-margined futures, and coin-margined futures
- Real-time prices and ticker stats
- Orderbook depth and recent trades
- OHLCV candlestick data
- Optional statistical analysis
Tools:
get_current_price(symbol: str, market: str = "spot")- Current priceget_ticker_stats(symbol: str, market: str = "spot")- 24h ticker statisticsget_book_ticker(symbol: str, market: str = "spot")- Best bid/ask pricesget_klines(symbol: str, interval: str, limit: int = 100, market: str = "spot")- OHLCV dataget_order_book(symbol: str, limit: int = 100, market: str = "spot")- Order book depthget_recent_trades(symbol: str, limit: int = 100, market: str = "spot")- Recent trades
Configuration:
- class_name: BinanceToolkit
enabled: true
toolkit_config:
default_market: spot # spot, usdm, coinm
enable_analysis: false # Statistical analysisNo API Key Required - Uses public Binance endpoints
Example: See config/profiles/crypto_agent.yaml
Comprehensive cryptocurrency data from CoinGecko.
Features:
- 17,000+ cryptocurrencies
- Real-time prices in 100+ currencies
- Historical price and market data
- OHLCV candlestick data
- Market rankings and statistics
- Contract address lookups
- Global market metrics
Tools:
get_coin_price(coin_name_or_id: str, vs_currency: str = "usd")- Current priceget_coin_market_chart(coin_name_or_id: str, vs_currency: str = "usd", days: int = 30)- Historical data- More tools available - see toolkit implementation
Configuration:
- class_name: CoinGeckoToolkit
enabled: true
toolkit_config:
coins: null # Restrict to specific coins (null = all)
default_vs_currency: usd # Default quote currency
use_pro: false # Use CoinGecko Pro API
enable_analysis: false # Statistical analysisEnvironment Variables:
export COINGECKO_API_KEY=your_key_here # Optional: for Pro APINo API Key Required for public endpoints
Example: See config/profiles/crypto_agent.yaml
DeFi protocol analytics from DefiLlama.
Features:
- Protocol TVL (Total Value Locked) tracking
- Daily fees and revenue analysis
- Yield farming pools and APY data (Pro)
- User activity metrics (Pro)
- Cross-chain analytics
- Statistical analysis
Tools (Public):
get_protocol_fees(protocol_name: str)- Protocol fees and revenueget_protocol_tvl(protocol_name: str)- Total Value Locked- More public tools available
Tools (Pro - requires API key):
get_yield_pools()- Yield farming opportunitiesget_yield_chart(pool_id: str)- Historical APY dataget_active_users(protocol_name: str)- User activity- More Pro tools available
Configuration:
- class_name: DefiLlamaToolkit
enabled: true
toolkit_config:
enable_pro_features: false # Requires API key
default_chain: ethereum
enable_analysis: trueEnvironment Variables:
export DEFILLAMA_API_KEY=your_key_here # For Pro featuresNo API Key Required for public endpoints
Example: See config/profiles/crypto_agent.yaml
Blockchain analytics from Arkham Intelligence.
Features:
- Token analytics (top tokens, holders, flows)
- Transfer tracking with entity attribution
- Wallet balance monitoring across chains
- Statistical analysis of distributions
- Rate limiting (20 req/sec standard, 1 req/sec heavy)
Tools:
- Token analytics tools
- Transfer tracking tools
- Wallet balance tools
- More tools available - see toolkit implementation
Configuration:
- class_name: ArkhamToolkit
enabled: true
toolkit_config:
default_chain: ethereum
enable_analysis: trueEnvironment Variables:
export ARKHAM_API_KEY=your_key_here # RequiredAPI Key Required
Derivatives market data from Coinglass.
Features:
- Historical funding rates weighted by open interest (OHLC data)
- Real-time funding rates across 20+ exchanges
- Funding rate arbitrage opportunity detection
- Open interest tracking and historical analysis
- Taker buy/sell volume ratios (market sentiment)
- Liquidation data by exchange and position type
Tools:
get_funding_rates_weighted_by_oi- Historical funding rate OHLC dataget_funding_rates_per_exchange- Current funding rates across exchangesget_arbitrage_opportunities- Funding rate arbitrage opportunitiesget_open_interest_by_exchange- Current open interest by exchangeget_open_interest_history- Historical open interest dataget_taker_buy_sell_volume- Buy/sell volume ratiosget_liquidations_by_exchange- Liquidation data
Configuration:
- class_name: CoinglassToolkit
enabled: true
toolkit_config:
symbols: ["BTC", "ETH", "SOL"] # Restrict to specific symbols (null = all)
default_symbol: BTC
storage_threshold_kb: 500 # Auto-store responses > 500KBEnvironment Variables:
export COINGLASS_API_KEY=your_key_here # RequiredAPI Key Required - Get yours at Coinglass API
Example: See config/profiles/crypto_agent.yaml
Universal connector for Model Context Protocol servers.
Special Property: The MCPToolkit can connect to any MCP server - there are 1000+ available!
See MCP Integration section below for complete details.
The MCPToolkit enables ROMA-DSPy agents to use tools from any MCP (Model Context Protocol) server. This provides unlimited extensibility beyond the 10 built-in toolkits.
MCP is an open protocol for connecting AI applications to data sources and tools. It's like USB-C for AI - a universal connector.
Resources:
- Awesome MCP Servers: 700+ servers
- MCP Documentation: modelcontextprotocol.io
- Build Your Own: Any server implementing the MCP protocol
Best for: Public APIs, cloud services, no installation needed
Example - CoinGecko Public Server:
- class_name: MCPToolkit
enabled: true
toolkit_config:
server_name: coingecko
server_type: http
url: https://mcp.api.coingecko.com/sse
use_storage: falseExample - Exa Search (with API key):
- class_name: MCPToolkit
enabled: true
toolkit_config:
server_name: exa
server_type: http
url: https://mcp.exa.ai/mcp
headers:
Authorization: "Bearer ${oc.env:EXA_API_KEY}"
use_storage: true # Exa returns large search results
storage_threshold_kb: 50No installation required - connects over HTTP
Best for: Local tools, filesystem access, databases, git operations
Example - GitHub Operations:
- class_name: MCPToolkit
enabled: true
toolkit_config:
server_name: github
server_type: stdio
command: npx
args:
- "-y"
- "@modelcontextprotocol/server-github"
env:
GITHUB_PERSONAL_ACCESS_TOKEN: "${oc.env:GITHUB_PERSONAL_ACCESS_TOKEN}"
use_storage: falseExample - Filesystem Access:
- class_name: MCPToolkit
enabled: true
toolkit_config:
server_name: filesystem
server_type: stdio
command: npx
args:
- "-y"
- "@modelcontextprotocol/server-filesystem"
- "/Users/yourname/Documents" # Allowed directory
use_storage: falseRequires installation:
npm install -g @modelcontextprotocol/server-github
npm install -g @modelcontextprotocol/server-filesystemMCP tools can return large datasets (search results, database queries, etc.). The toolkit provides smart data handling:
Small Data (default):
use_storage: false # Returns raw text/JSON directlyLarge Data (with storage):
use_storage: true # Stores data in Parquet, returns reference
storage_threshold_kb: 100 # Store results > 100KB (default)How it works:
- Tool executes and returns data
- If data size > threshold, saves to Parquet file
- Returns file reference instead of full data
- Reduces context usage for large datasets
Popular Categories:
| Category | Examples |
|---|---|
| Web Search | Exa, Brave Search, Google Search |
| Development | GitHub, GitLab, Linear, Sentry |
| Data | PostgreSQL, SQLite, MongoDB, Redis |
| Cloud | AWS, Google Cloud, Kubernetes |
| Productivity | Google Drive, Slack, Notion, Confluence |
| Finance | Stripe, QuickBooks |
| AI/ML | OpenAI, Anthropic, Hugging Face |
Browse all:
- awesome-mcp-servers - 700+ servers
- MCP Server Registry - Official registry
You can use multiple MCP servers in one agent:
agents:
executor:
llm:
model: openai/gpt-4o-mini
prediction_strategy: react
toolkits:
# GitHub for code
- class_name: MCPToolkit
toolkit_config:
server_name: github
server_type: stdio
command: npx
args: ["-y", "@modelcontextprotocol/server-github"]
env:
GITHUB_PERSONAL_ACCESS_TOKEN: "${oc.env:GITHUB_TOKEN}"
# Exa for web search
- class_name: MCPToolkit
toolkit_config:
server_name: exa
server_type: http
url: https://mcp.exa.ai/mcp
headers:
Authorization: "Bearer ${oc.env:EXA_API_KEY}"
use_storage: true
# Filesystem for local files
- class_name: MCPToolkit
toolkit_config:
server_name: filesystem
server_type: stdio
command: npx
args: ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/dir"]Example: See config/examples/mcp/multi_server.yaml
agents:
executor:
llm:
model: openai/gpt-4o-mini
temperature: 0.3
prediction_strategy: react # REQUIRED for tool usage
toolkits:
- class_name: ToolkitName
enabled: true
include_tools: null # Optional: whitelist specific tools
exclude_tools: null # Optional: blacklist specific tools
toolkit_config:
# Toolkit-specific settingsInclude specific tools only:
- class_name: CalculatorToolkit
enabled: true
include_tools:
- add
- subtract
- multiply
# Only these 3 tools will be availableExclude specific tools:
- class_name: FileToolkit
enabled: true
exclude_tools:
- delete_file # Safety: disable deletions
# All tools except delete_file will be availableVia OmegaConf:
toolkit_config:
api_key: "${oc.env:MY_API_KEY}" # Reads from environment
timeout: "${oc.env:TIMEOUT,300}" # Default value: 300Via .env file:
# .env
E2B_API_KEY=your_key
SERPER_API_KEY=your_key
GITHUB_PERSONAL_ACCESS_TOKEN=your_tokenSome toolkits support optional Parquet storage for large data:
- class_name: MCPToolkit
enabled: true
toolkit_config:
server_name: database
server_type: stdio
command: npx
args: ["-y", "@modelcontextprotocol/server-sqlite", "/path/to/db.db"]
use_storage: true # Enable storage wrapper
storage_threshold_kb: 100 # Store results > 100KBToolkits with storage support:
- MCPToolkit
- DefiLlamaToolkit
- ArkhamToolkit
- BinanceToolkit (for large responses)
- CoinGeckoToolkit (for large responses)
- CoinglassToolkit (for large responses)
All examples available in config/examples/. See config/examples/README.md for complete guide.
File: config/examples/basic/minimal.yaml
Simple agent with FileToolkit and CalculatorToolkit.
Usage:
just solve "Calculate 15% of 2500 and save to results.txt" -c config/examples/basic/minimal.yamlFile: config/examples/basic/multi_toolkit.yaml
Combines E2B (code execution), FileToolkit, CalculatorToolkit, and SerperToolkit.
Usage:
just solve "Search for Python fibonacci implementation, execute it, and save results" \
-c config/examples/basic/multi_toolkit.yamlFile: config/examples/mcp/http_public_server.yaml
Uses CoinGecko public MCP server - no installation or API key required!
Usage:
just solve "What is the current price of Bitcoin?" \
-c config/examples/mcp/http_public_server.yamlFile: config/examples/mcp/stdio_local_server.yaml
Uses local Exa MCP server for web search.
Setup:
export EXA_API_KEY=your_key
npm install -g @exa-labs/exa-mcp-serverUsage:
just solve "Search for latest LLM research papers" \
-c config/examples/mcp/stdio_local_server.yamlFile: config/examples/mcp/multi_server.yaml
Combines GitHub, Exa (web search), and CoinGecko MCP servers.
Usage:
just solve "Search recent AI news, check Bitcoin price, and create GitHub issue summary" \
-c config/examples/mcp/multi_server.yamlFile: config/profiles/crypto_agent.yaml
Comprehensive crypto analysis with:
- CoinGeckoToolkit (17,000+ coins)
- CoinglassToolkit (derivatives market data)
- BinanceToolkit (spot + futures)
- DefiLlamaToolkit (DeFi protocols)
- ArkhamToolkit (blockchain analytics)
- Exa MCP (web search)
Usage:
just solve "Compare Bitcoin and Ethereum: prices, market caps, 24h volumes, and analyze trends" \
crypto_agent# my_custom_toolkit.py
from roma_dspy.tools.base.base import BaseToolkit
from typing import Optional, List
class MyCustomToolkit(BaseToolkit):
"""My custom toolkit for XYZ operations."""
def __init__(
self,
enabled: bool = True,
include_tools: Optional[List[str]] = None,
exclude_tools: Optional[List[str]] = None,
**config,
):
super().__init__(
enabled=enabled,
include_tools=include_tools,
exclude_tools=exclude_tools,
**config,
)
# Your initialization
self.api_key = config.get("api_key")
def _setup_dependencies(self) -> None:
"""Setup external dependencies."""
# Optional: validate API keys, initialize clients
pass
def _initialize_tools(self) -> None:
"""Initialize toolkit-specific configuration."""
# Optional: additional setup
pass
# Tool methods (auto-registered by BaseToolkit)
async def my_tool(self, param1: str, param2: int) -> str:
"""
Tool description that the LLM will see.
Args:
param1: Description of param1
param2: Description of param2
Returns:
Result description
"""
# Your tool implementation
result = f"Processed {param1} with {param2}"
return result
async def another_tool(self, query: str) -> dict:
"""Another tool that returns structured data."""
return {
"success": True,
"query": query,
"results": ["result1", "result2"]
}Add to src/roma_dspy/tools/base/manager.py:
BUILTIN_TOOLKITS = {
# ... existing toolkits ...
"MyCustomToolkit": "path.to.my_custom_toolkit",
}agents:
executor:
llm:
model: openai/gpt-4o-mini
prediction_strategy: react
toolkits:
- class_name: MyCustomToolkit
enabled: true
toolkit_config:
api_key: "${oc.env:MY_API_KEY}"-
Tool Design:
- Clear, descriptive tool names
- Comprehensive docstrings (LLM sees these)
- Type hints for all parameters
- Return structured data (JSON dicts or strings)
-
Error Handling:
async def my_tool(self, param: str) -> dict: try: result = await self._do_something(param) return {"success": True, "data": result} except Exception as e: logger.error(f"Tool failed: {e}") return {"success": False, "error": str(e)}
-
Storage for Large Data:
class MyToolkit(BaseToolkit): REQUIRES_FILE_STORAGE = False # Optional storage def __init__(self, use_storage: bool = False, **config): super().__init__(**config) self.use_storage = use_storage async def big_data_tool(self, query: str) -> str: result = await self._fetch_large_dataset(query) if self.use_storage and len(result) > threshold: # Store to Parquet and return reference path = await self.file_storage.save_tool_result(...) return f"Data stored at: {path}" return result
-
Testing:
# tests/test_my_toolkit.py import pytest from my_custom_toolkit import MyCustomToolkit @pytest.mark.asyncio async def test_my_tool(): toolkit = MyCustomToolkit() result = await toolkit.my_tool("test", 42) assert "Processed" in result
Choose the right tools for the task:
# For file operations + math
toolkits:
- class_name: FileToolkit
- class_name: CalculatorToolkit
# For web research
toolkits:
- class_name: SerperToolkit # Native
# OR
- class_name: MCPToolkit # MCP (Exa, Brave, etc.)
toolkit_config:
server_name: exa
server_type: http
url: https://mcp.exa.ai/mcp
# For code execution
toolkits:
- class_name: E2BToolkitFile operations:
- class_name: FileToolkit
toolkit_config:
enable_delete: false # Disable destructive operations
max_file_size: 10485760 # 10MB limitMCP servers:
- Only use trusted MCP servers
- Validate server URLs and signatures
- Use environment variables for sensitive data
Use storage for large data:
- class_name: MCPToolkit
toolkit_config:
use_storage: true
storage_threshold_kb: 50 # Aggressive threshold for faster responsesLimit tool scope:
- class_name: CalculatorToolkit
include_tools:
- add
- multiply
# Faster tool selection with fewer optionsUse task-aware mapping to assign different toolkits to different task types:
agent_mapping:
executors:
RETRIEVE:
# Cheap model + web search
llm:
model: openrouter/google/gemini-2.0-flash-exp:free
toolkits:
- class_name: SerperToolkit
CODE_INTERPRET:
# Powerful model + code execution
llm:
model: openrouter/anthropic/claude-sonnet-4
toolkits:
- class_name: E2BToolkit
- class_name: FileToolkitExample: See config/examples/advanced/task_aware_mapping.yaml
Enable logging:
runtime:
enable_logging: trueTrack tool metrics:
- Tool invocations logged automatically
- Latency tracking
- Error rates
- View in MLflow (if observability enabled)
Never hardcode keys:
# ❌ BAD
toolkit_config:
api_key: "sk-1234567890abcdef"
# ✅ GOOD
toolkit_config:
api_key: "${oc.env:MY_API_KEY}"Use .env file:
# .env
E2B_API_KEY=your_key
SERPER_API_KEY=your_key
GITHUB_PERSONAL_ACCESS_TOKEN=your_tokenCause: Toolkit not registered or typo in class_name
Fix:
# Check available toolkits
python -c "from roma_dspy.tools.base.manager import ToolkitManager; print(ToolkitManager.BUILTIN_TOOLKITS.keys())"
# Verify spelling matches exactly (case-sensitive)Cause: Chain-of-thought strategy doesn't support tool usage
Fix:
agents:
executor:
prediction_strategy: react # Use react or codeact for toolsHTTP servers:
# Test connectivity
curl -I https://mcp.api.coingecko.com/sse
# Check headers/auth
curl -H "Authorization: Bearer YOUR_KEY" https://mcp.exa.ai/mcpStdio servers:
# Verify installation
npx @modelcontextprotocol/server-github --version
# Test manually
npx -y @modelcontextprotocol/server-github# Verify API key
echo $E2B_API_KEY
# Test connection
python -c "from e2b import Sandbox; s = Sandbox(); print(s.is_running())"
# Check template
export E2B_TEMPLATE_ID=baseEnable storage:
toolkit_config:
use_storage: true
storage_threshold_kb: 50 # Lower threshold- Configuration Guide: CONFIGURATION.md
- MCP Deep Dive: MCP.md
- Example Configurations:
config/examples/ - Awesome MCP Servers: https://github.com/wong2/awesome-mcp-servers
- MCP Documentation: https://modelcontextprotocol.io/
- E2B Documentation: https://e2b.dev/docs
Ready to build? Start with the examples in config/examples/ and customize for your use case! 🚀