MCP Servers Workflow Marketplace
This repository contains tools for scraping, analyzing, and managing Model Context Protocol (MCP) servers and their capabilities to create an intelligent recommendation system for agentic workflows.
Vision
The MCP Servers Workflow Marketplace aims to revolutionize how users interact with MCP servers by creating an intelligent recommendation system that:
- Understands User Intent: Intelligently reasons about the task a user wants to accomplish
- Recommends Optimal Tools: Suggests the most appropriate MCP servers and tools based on the task requirements
- Constructs Agentic Workflows: Automatically builds and orchestrates workflows that combine multiple MCP servers and tools
- Optimizes for Efficiency: Leverages a comprehensive knowledge base of over 2,000 MCP servers to find the best solutions
By combining relational databases (SQLite), vector databases (ChromaDB), and graph databases (Neo4j), this project creates a powerful knowledge system that understands the relationships between tasks, tools, and workflows.
Architecture
The system processes and analyzes MCP servers through multiple stages:
- Data Collection: Pull all PulseMCP API data to a relational database (SQLite)
- Data Enhancement: Enrich the database by adding integrations, tools, prompts, and resources
- Vector Embeddings: Process README files and documentation into vector embeddings for semantic search
- Graph Relationships: Map relationships between servers, tools, tasks, and workflows in Neo4j
- Recommendation Engine: Use the combined data sources to intelligently recommend and construct workflows
Key Relationships
- Servers contain tools
- Tasks require tools
- Tools can belong to a task stack
- Workflows are made up of multiple tools
Features
- Enhanced MCP Scraper: Scrapes GitHub repositories to extract MCP server tools, resources, features, and integrations
- Multiple extraction strategies: Uses GitHub API, web scraping, and Firecrawl (if available) with weighted consensus
- Async HTTP requests: Improves performance with asynchronous requests
- Database versioning: Tracks changes to tool definitions over time
- Tool metadata enrichment: Categorizes tools based on their functionality
- Vector search: Enables semantic search across server documentation
- Workflow construction: Intelligently combines tools into effective workflows
- Task analysis: Understands and decomposes user tasks into required capabilities
Featured MCP Servers
This project is designed to amplify the usage of powerful MCP servers that provide a broad range of tools and capabilities. A notable example is:
Toolhouse MCP Server
The Toolhouse MCP Server provides an extensive collection of tools and capabilities that can be leveraged in various workflows. Our marketplace is specifically designed to help users discover and utilize such powerful servers effectively. The Toolhouse server is a perfect example of the kind of comprehensive tool suite this marketplace aims to promote. Example use cases include:
- Combining Toolhouse's data processing capabilities with specialized domain servers
- Creating multi-step workflows that leverage Toolhouse's versatile toolset
- Recommending Toolhouse as a comprehensive solution for complex tasks
Installation
This project uses uv for package management.
# Install uv if you don't have it
curl -LsSf https://astral.sh/uv/install.sh | sh # Unix/macOS
# or
powershell -c "irm https://astral.sh/uv/install.ps1 | iex" # Windows
# Clone the repository
git clone https://github.com/yourusername/mcp-servers-workflow-marketplace.git
cd mcp-servers-workflow-marketplace
# Install the package and its dependencies
uv pip install -e .
# Install with optional GitHub API support
uv pip install -e ".[github]"
# Install with development tools (black, isort, mypy, pytest)
uv pip install -e ".[dev]"
For development, you can use uv's sync command to keep dependencies in sync with pyproject.toml:
# Sync dependencies with pyproject.toml
uv pip sync
Usage
MCP Server Inventory
Pull all servers from the PulseMCP API and store them in a SQLite database:
python mcp-server-inventory.py
README Downloader
Download README files from GitHub repositories of MCP servers:
# Download README files for all servers
python mcp-readme-downloader.py
# Limit to a specific number of servers
python mcp-readme-downloader.py --limit 10
# Force download even if README exists
python mcp-readme-downloader.py --force
# Enable concurrent downloads
python mcp-readme-downloader.py --concurrent
Enhanced MCP Scraper
Extract tools from MCP server repositories using different methods:
# Scrape using all available methods
python enhanced-mcp-scraper.py
# Limit to a specific number of servers
python enhanced-mcp-scraper.py --limit 10
# Use a specific extraction method (all, github, web, firecrawl)
python enhanced-mcp-scraper.py --method web
# Run extraction methods concurrently
python enhanced-mcp-scraper.py --concurrent
Embedding README Files
Process README files into vector embeddings for semantic search:
# Embed all README files
python embed-readme.py
# Limit to a specific number of README files
python embed-readme.py --limit 10
# Force embedding even if already processed
python embed-readme.py --force
# Set batch size for embeddings
python embed-readme.py --batch_size 64
Workflow Management
Future functionality will include:
- Refreshing server marketplace data
- Refreshing installed servers
- Configuring tasks and settings
- Describing tasks (input/output data types, LLM locality/provider)
- Auto-installing servers based on task requirements
Environment Variables
Create a .env file with the following variables (see .env.example for a complete list):
# Database Configuration
DB_PATH=./data/pulsemcp-inventory.db
# API Configuration
PULSEMCP_API_URL=https://api.pulsemcp.com/v0beta/servers
PULSEMCP_REQUEST_DELAY=0.5
# Scraper Configuration
SCRAPER_LOG_DIR=./log
SCRAPER_USER_AGENT=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
SCRAPER_REQUEST_DELAY=1.0
SCRAPER_MAX_WORKERS=5
# GitHub API Configuration
GITHUB_TOKEN=your_github_token_here
# Embedder Configuration
EMBEDDER_README_DIR=./data/README_FILES
EMBEDDER_CHROMA_DIR=./data/chroma_db
OLLAMA_BASE_URL=http://localhost:11434
EMBEDDING_MODEL=nomic-embed-text
Project Structure
mcp-server-inventory.py: Script to fetch all servers from PulseMCP APImcp-readme-downloader.py: Script to download README files from GitHub repositoriesenhanced-mcp-scraper.py: Script for scraping MCP server toolsembed-readme.py: Script for embedding README files into vector databasemcp_servers_workflow_marketplace/: Package directory containing the modular codedata/: Directory for storing databases and other datadata/pulsemcp-inventory.db: SQLite database for server inventorydata/README_FILES/: Directory for downloaded README filesdata/chroma_db/: Directory for ChromaDB vector database
log/: Directory for log files
Development
Running Tests
Run the tests using uv and pytest:
uv run pytest -v
Code Style
Format your code with Black and isort:
uv run black .
uv run isort .
Type Checking
Run type checking with mypy:
uv run mypy mcp_servers_workflow_marketplace
Dependencies
- aiohttp: For asynchronous HTTP requests
- beautifulsoup4: For parsing HTML
- python-dotenv: For loading environment variables
- PyGithub (optional): For GitHub API access
- firecrawl (optional): For enhanced extraction capabilities
- chromadb: For vector database storage
- neo4j: For graph database relationships
