docs-scraper
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@docs-scrapersearch docs for 'vector search'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Documentation Scraper Template
A complete Python template for building Model Context Protocol (MCP) servers with documentation scraping, vector search, and flexible deployment options.
Features
π Dual Search Modes: Semantic search (ML-powered) or keyword search (lightweight)
π€ Multi-Provider Embeddings: HuggingFace (local), OpenAI, or Azure OpenAI
π Web Scraping: Configurable documentation crawler with depth control
πΎ Vector Storage: ChromaDB with persistent storage
β° Auto-Updates: Scheduled documentation refresh
π Dual Transport: stdio (local MCP) or HTTP/SSE (remote access)
π³ Docker Ready: Containerized deployment with profiles
βΈοΈ Kubernetes Ready: Production deployment with autoscaling
Related MCP server: MCP Docs Server
Quick Start
Option 1: stdio Mode (Local MCP - Default)
For: VS Code, Claude Desktop integration on your local machine
Configure environment:
cp .env.example .env # Edit .env and set your DOCS_URLS # Keep TRANSPORT=stdio (or leave it out, stdio is default)Start container:
docker-compose up -dThis starts
mcp-server-templatecontainer (no ports exposed).Configure MCP client (VS Code or Claude Desktop):
{ "mcpServers": { "docs-scraper": { "command": "docker", "args": ["exec", "-i", "mcp-server-template", "python", "-m", "mcp_server_template.server"] } } }
Option 2: HTTP Mode (Remote Access)
For: Testing API, remote access, or preparing for Kubernetes deployment
Configure environment for HTTP:
cp .env.example .env # Edit .env and set: # TRANSPORT=http # DOCS_URLS=https://your-docs-site.com/Start container with HTTP profile:
docker-compose --profile http up -dThis starts
mcp-server-template-httpcontainer on port 3003.Test the server:
# Check health curl http://localhost:3003/health # MCP clients connect to: # http://localhost:3003/sse
Switching Between Modes
Stop current mode:
docker-compose downStart stdio mode:
docker-compose up -dStart HTTP mode:
docker-compose --profile http up -dView logs:
# stdio mode
docker logs mcp-server-template -f
# HTTP mode
docker logs mcp-server-template-http -fConfiguration
Key environment variables (see .env.example for full list):
TRANSPORT: Transport mode -stdio(local MCP) orhttp(remote/Kubernetes)DOCS_URLS: Documentation URLs to scrape (comma-separated for multiple sites)Single:
DOCS_URLS=https://docs.example.com/Multiple:
DOCS_URLS=https://docs.example.com/,https://api.example.com/docs/,https://guides.example.com/
SWAGGER_URLS: Swagger/OpenAPI JSON URLs (comma-separated, optional)USE_EMBEDDINGS: Enable semantic search (true) or keyword search (false)EMBEDDING_PROVIDER:huggingface,openai, orazureCRAWL_MAX_DEPTH: Maximum crawl depth (0-3, recommended 2)AUTO_UPDATE_ENABLED: Enable scheduled documentation updates (true/false)HTTP_PORT: Port for HTTP mode (default: 3000, mapped to 3003 on host)
Transport Modes
stdio Mode (Local MCP)
Best for: Local development, VS Code, Claude Desktop
This server uses stdio transport for direct MCP client communication via stdin/stdout pipes.
VS Code (settings.json):
{
"mcp.servers": {
"docs-scraper": {
"command": "docker",
"args": ["exec", "-i", "mcp-server-template", "python", "-m", "mcp_server_template.server"]
}
}
}Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"docs-scraper": {
"command": "docker",
"args": ["exec", "-i", "mcp-server-template", "python", "-m", "mcp_server_template.server"]
}
}
}HTTP Mode (Remote Access)
Best for: Remote access, multi-user, Kubernetes deployments
Set TRANSPORT=http in .env and use the HTTP profile:
docker-compose --profile http up -dEndpoints:
GET /health- Health checkGET /sse- MCP Server-Sent Events endpoint
MCP Client Configuration (for remote HTTP clients):
{
"mcpServers": {
"docs-scraper": {
"url": "http://localhost:3003/sse",
"transport": "sse"
}
}
}Kubernetes Deployment
See k8s-deployment.yaml for production Kubernetes deployment with:
Horizontal Pod Autoscaling
Persistent Volume Claims for ChromaDB
Ingress configuration
Health checks and readiness probes
Customization
This is a template - fork and customize for your documentation sources:
Update
DOCS_URLSin.envCustomize scraping in
src/mcp_server_template/documentation_scraper.pyAdd custom tools in
src/mcp_server_template/server.pyAdjust chunking and search parameters as needed
Requirements
Python 3.12+
Docker & Docker Compose (recommended)
500MB+ memory for semantic search (50MB for keyword-only)
This server cannot be deployed
Maintenance
Related MCP Connectors
Versioned documentation registry and semantic search for AI tools and coding assistants.
Ingest, manage, and retrieve documents for RAG-powered AI applications
Provide your AI coding tools with token-efficient access to up-to-date technical documentation forβ¦
Search the Cerebrium docs: deployment, cerebrium.toml, hardware, endpoints. Also sends feedback.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceScrapes and indexes documentation websites to provide AI assistants with searchable access to documentation content, API references, and code examples through configurable URL crawling.-
- AlicenseNot gradedqualityDmaintenanceAggregates documentation from multiple sources (llms.txt format or web scraping) and provides semantic search capabilities using vector embeddings and hybrid search for each documentation source.35 npmMIT
- AlicenseNot gradedqualityNot gradedmaintenanceCrawls documentation websites and provides semantic search capabilities over the content through vector embeddings, enabling natural language queries of technical documentation.2MIT
- AlicenseNot gradedqualityBmaintenanceEnables semantic search over local Markdown documentation using hybrid retrieval combining embeddings, keyword search, and graph traversal with automatic file watching and zero-configuration setup.2MIT