The meta-MCP that finds MCPs for you
SuperMCP is a Model Context Protocol (MCP) server that dynamically discovers and recommends the best free MCP servers for any task by searching multiple MCP marketplaces in real-time. Built for the PromptWars Hackathon at Scaler School of Technology, Hyderabad.
| Feature | Description |
|---|---|
| π Dynamic Discovery | Searches across 4 major MCP marketplaces simultaneously |
| π Smart Ranking | Intelligent scoring algorithm with weighted criteria |
| β‘ Fast Parallel Fetching | Async queries for sub-second results |
| π€ AI-Ready | Simple MCP tool interface for Claude & other AI assistants |
| π― 100% Dynamic | No hardcoded keywords - works with ANY search term |
| π Free Tier Focus | Automatically filters and prioritizes free MCP servers |
| π MCP Gateway | Dynamically load and proxy other MCP servers on-the-fly |
- ποΈ mcpmarket.com - Community marketplace for MCP servers
- π§ mcp.so - MCP server directory
- π¦ mcpserverfinder.com - MCP server discovery platform
- ποΈ mcp-archive.com - MCP server archive
- Python 3.10 or higher
- uv package manager (recommended)
# Clone or navigate to SuperMCP directory
cd SUPERMCP
# Install dependencies and create virtual environment
uv sync
# Verify installation
uv run python -c "import supermcp; print('β
SuperMCP Ready!')"# Clone or navigate to SuperMCP directory
cd SUPERMCP
# Install dependencies
python -m pip install -e .
# Verify installation
python -c "import supermcp; print('β
SuperMCP Ready!')"# Run using uv
uv run supermcp# Install and run globally via uvx
uvx supermcp# Direct Python execution
python -m supermcp
# or
python src/supermcp/server.pyYou should see a message indicating the server has started and is monitoring marketplaces.
-
Locate your Claude Desktop config file:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
- Windows:
-
Add SuperMCP to your config:
{
"mcpServers": {
"supermcp": {
"command": "uv",
"args": ["run", "supermcp"],
"cwd": "/path/to/SUPERMCP",
"env": {
"PYTHONPATH": "/home/anonymouslokesh/Desktop/SUPERMCP/src"
}
}
}
}{
"mcpServers": {
"supermcp": {
"command": "uvx",
"args": ["supermcp"],
"cwd": "/path/to/SUPERMCP"
}
}
}{
"mcpServers": {
"supermcp": {
"command": "python",
"args": ["-m", "supermcp"],
"cwd": "/path/to/SUPERMCP",
"env": {
"PYTHONPATH": "/home/anonymouslokesh/Desktop/SUPERMCP/src"
}
}
}
}-
Restart Claude Desktop
-
Ask Claude:
"Find me the best MCP server for websearch" "I need an MCP server for GitHub integration" "What's the best database MCP server?"
Discovers the best free MCP server for any task or functionality.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
keyword |
string | β | Task or functionality (e.g., "websearch", "github", "slack") |
Returns:
{
"query": "websearch",
"marketplaces_searched": 4,
"total_results": 12,
"best_server": {
"name": "websearch-mcp",
"description": "Advanced web search with multiple engines",
"url": "https://github.com/user/websearch-mcp",
"repository_url": "https://github.com/user/websearch-mcp",
"install_command": "npm install -g websearch-mcp",
"provider": "MCPMarket",
"tags": ["search", "web", "google"],
"score": 89.5
},
"alternatives": [
{
"name": "search-tools-mcp",
"score": 76.2,
...
}
]
}Return a list of configured providers (adapters) and their base URLs.
Example:
{
"providers": [
{"name": "MCPMarket", "base_url": "https://mcpmarket.com"},
...
],
"total": 4
}Search a specific marketplace (by provider name) for a keyword.
Parameters: marketplace (string), keyword (string)
Example:
{
"query": "websearch",
"marketplaces_searched": 1,
"total_results": 1,
"best_server": { ... }
}Given a server url, attempt to return metadata about that server.
Parameters: url (string)
A simple health check tool that returns basic status and the package version.
{"status": "ok", "version": "0.1.0"}Return the best server for a given keyword with a scoring breakdown.
Parameters: keyword (string)
Example:
{
"best_server": { ... },
"breakdown": {
"parts": { ... },
"weighted": { ... },
"total": 85.6
}
}The server exposes helper resources that clients can read:
config://version- returns the server version stringproviders://list- returns a list of configured providers
Returns all MCP marketplaces that SuperMCP searches.
Returns:
{
"marketplaces": [
{
"name": "MCPMarket",
"url": "https://mcpmarket.com",
"description": "Community marketplace for MCP servers"
},
...
],
"total": 4
}SuperMCP isn't just a discovery tool β it's a meta-MCP gateway that can dynamically load and proxy other MCP servers. An AI agent using SuperMCP can self-discover, connect to, and use any MCP server's tools in a single session.
Agent: "I need to search the web"
β auto_discover_mcp("websearch") # finds + loads best websearch MCP
β call_mcp_tool("websearch", "search", {"query": "hello world"})
| Tool | Description |
|---|---|
load_mcp |
Connect to an MCP server (by config name or inline command/args) |
list_loaded_mcps |
Show all currently connected MCP servers |
list_mcp_tools |
List tools available from a loaded MCP server |
call_mcp_tool |
Invoke a tool on a loaded MCP server |
unload_mcp |
Disconnect a loaded MCP server |
auto_discover_mcp |
Search β auto-load best match β return tools (all-in-one) |
Pre-configure known MCP servers (same format as Claude Desktop):
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "./"],
"transport": "stdio"
}
},
"defaults": {
"idle_timeout_seconds": 300
}
}Then load by name: load_mcp("filesystem")
graph LR
A[fetch_mcp] -->|discover| B[load_mcp]
B -->|connect| C[list_mcp_tools]
C -->|inspect| D[call_mcp_tool]
D -->|done| E[unload_mcp]
F[auto_discover_mcp] -->|all-in-one| D
SUPERMCP/
βββ src/supermcp/
β βββ server.py # FastMCP server entry point
β βββ core/
β β βββ types.py # Pydantic models (MCPServer, SearchResponse)
β β βββ config.py # Configuration (URLs, weights, timeouts)
β βββ providers/ # Marketplace adapters
β β βββ base.py # Abstract MarketplaceAdapter class
β β βββ mcpmarket.py # mcpmarket.com scraper
β β βββ mcpso.py # mcp.so scraper
β β βββ mcpserverfinder.py # mcpserverfinder.com scraper
β β βββ mcparchive.py # mcp-archive.com scraper
β βββ services/
β β βββ aggregator.py # Parallel marketplace fetching
β β βββ scorer.py # Relevance scoring algorithm
β βββ gateway/ # π MCP Gateway
β βββ config.py # Server config models & JSON loader
β βββ manager.py # Connection lifecycle & tool proxying
βββ mcp_servers.json # Gateway config (pre-configured MCPs)
βββ tests/
βββ pyproject.toml
βββ README.md
AI assistant calls fetch_mcp tool with a keyword (e.g., "websearch")
SuperMCP simultaneously queries all 4 marketplaces:
tasks = [adapter.search(keyword) for adapter in self.adapters]
results = await asyncio.gather(*tasks)Each marketplace adapter:
- Builds dynamic search URL with keyword
- Fetches HTML via httpx
- Parses with BeautifulSoup
- Extracts: name, description, URL, repository, install command, tags
# Filter free servers
free_servers = [s for s in all_servers if s.is_free]
# Score based on weighted criteria
score = (
keyword_match * 40% +
has_install_cmd * 20% +
has_repo * 15% +
description_quality * 15% +
tag_match * 10%
)- Remove duplicates (same name)
- Sort by score descending
- Return best + alternatives
AI receives structured response with best match and alternatives
SuperMCP uses a weighted scoring system (0-100):
| Factor | Weight | Description |
|---|---|---|
| Keyword Match | 40% | Presence in name (80pts) or description (20pts) |
| Install Command | 20% | Availability of installation instructions |
| Repository URL | 15% | Link to source code repository |
| Description Quality | 15% | Length and completeness of description |
| Tag Match | 10% | Relevance of tags to keyword |
Example:
websearch-mcpsearching for "websearch"- Keyword in name: 80pts Γ 40% = 32
- Has install command: 100pts Γ 20% = 20
- Has repository: 100pts Γ 15% = 15
- Good description (150 chars): 100pts Γ 15% = 15
- Tag match: 0pts Γ 10% = 0
- Total: 82/100
uv run python -c "import supermcp; print('β
OK')"python demo.pypython test_supermcp.pyNote: Live testing will actually fetch from marketplaces. Use sparingly to avoid rate limits.
uv run pytest tests/ -vAll 24 tests passing! β
Edit src/core/config.py to customize:
class Config:
# Timeout for HTTP requests (seconds)
REQUEST_TIMEOUT = 10
# Maximum concurrent requests
MAX_CONCURRENT_REQUESTS = 4
# User agent for web scraping
USER_AGENT = "Mozilla/5.0 (...)"
# Marketplace URLs (uses {keyword} placeholder)
MARKETPLACES = {
"mcpmarket": "https://mcpmarket.com/search?q={}",
...
}
# Scoring weights (must sum to 100)
SCORE_WEIGHTS = {
"keyword_match": 40.0,
"has_install_cmd": 20.0,
...
}# Ensure you're using absolute imports
uv run python validate_imports.py- HTML structure may have changed
- Check
src/providers/*.pyand update CSS selectors - Enable debug logging in adapters
- Try different/simpler keywords
- Check if marketplaces are accessible
- Verify network connectivity
- Verify config path is correct (use absolute paths)
- Check Python is in system PATH
- Restart Claude Desktop after config changes
- Check Claude logs:
%APPDATA%\Claude\logs
- Caching layer β TTL-based cache to avoid re-fetching marketplaces for repeated queries
- Rate limiting & retry β Polite crawling with exponential backoff when marketplaces throttle
- More marketplace adapters β Add support for smithery.ai, github.com/search, and other directories
- User feedback loop β Let users upvote/downvote results to tune scoring weights over time
- Web UI β Simple Flask/FastAPI dashboard to search and browse MCP servers
- CLI mode β Interactive search without needing an MCP host (e.g.
python -m supermcp search websearch) - Docker support β
Dockerfile+docker-compose.ymlfor one-command deployment - Gateway improvements β Auto-cleanup idle MCP connections, better error recovery
- CI/CD pipeline β GitHub Actions for lint, test, and publish to PyPI
- Structured logging β Replace print with Python logging module, log to file
- Configuration file β YAML/JSON config for marketplace URLs, timeouts, weights
- Search filters β Filter by tags, source marketplace, has-repo, has-install-cmd
- Offline mode β Export search results to JSON and re-query without network
Contributions welcome! Areas to improve:
- New Marketplace Adapters: Add support for more MCP directories
- Better Parsing: Improve HTML extraction logic
- Scoring Refinement: Enhance relevance algorithm
- Testing: Add unit tests for adapters and scoring
- Documentation: Improve examples and guides
MIT License - feel free to use, modify, and distribute.
- Built with FastMCP by Marvin
- Inspired by the growing MCP ecosystem
- Thanks to all MCP marketplace maintainers
- Developed for PromptWars Hackathon at Scaler School of Technology, Hyderabad
Made with care for the MCP community