Documentation Search MCP Server
# Documentation Search MCP Server
[](https://github.com/antonmishel/documentation-search-mcp/actions/workflows/ci.yml)
[](https://github.com/antonmishel/documentation-search-mcp/actions/workflows/security.yml)
[](https://pypi.org/project/documentation-search-enhanced/)
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
MCP server for searching documentation, scanning dependencies for vulnerabilities, and generating project boilerplate. Works with Claude Desktop, Cursor, and other MCP clients.
**📚 [Read the comprehensive tutorial](TUTORIAL.md)** for detailed examples and workflows.
## Features
- Search 190+ curated documentation sources with optional semantic vector search
- Scan Python projects for vulnerabilities (Snyk, Safety, OSV)
- Generate FastAPI and React project starters
- Learning paths and code examples
## Installation
```bash
# Recommended: use uvx (install uv from https://docs.astral.sh/uv)
uvx documentation-search-enhanced@1.9.0
# Or with pip in a virtual environment
pip install documentation-search-enhanced==1.9.0
# Optional: AI semantic search (Python 3.12 only, adds ~600MB)
pip install documentation-search-enhanced[vector]==1.9.0
```
## Configuration
### Claude Desktop
Find your uvx path: `which uvx`
Edit `~/Library/Application Support/Claude/claude_desktop_config.json`:
```json
{
"mcpServers": {
"documentation-search-enhanced": {
"command": "/Users/yourusername/.local/bin/uvx",
"args": ["documentation-search-enhanced@1.9.0"],
"env": {
"SERPER_API_KEY": "optional_key_here"
}
}
}
}
```
Replace `/Users/yourusername/.local/bin/uvx` with your actual uvx path.
### Codex CLI
```bash
# Find your uvx path first
which uvx
# Then add with full path (replace with your actual path)
codex mcp add documentation-search-enhanced \
-- /Users/yourusername/.local/bin/uvx documentation-search-enhanced@1.9.0
# Or if uvx is in PATH:
codex mcp add documentation-search-enhanced \
-- uvx documentation-search-enhanced@1.9.0
```
**With SERPER API Key** (enables live web search):
```bash
codex mcp add documentation-search-enhanced \
--env SERPER_API_KEY=your_key_here \
-- /Users/yourusername/.local/bin/uvx documentation-search-enhanced@1.9.0
```
**Without SERPER API Key** (uses prebuilt index from GitHub Releases):
```bash
codex mcp add documentation-search-enhanced \
-- /Users/yourusername/.local/bin/uvx documentation-search-enhanced@1.9.0
```
If you get a timeout on first run, pre-download dependencies:
```bash
uvx documentation-search-enhanced@1.9.0
```
### Environment Variables
- `SERPER_API_KEY` - Optional. Enables live web search. Without it, uses prebuilt index from GitHub Releases.
- `DOCS_SITE_INDEX_AUTO_DOWNLOAD` - Set to `false` to disable automatic index downloads
- `DOCS_SITE_INDEX_PATH` - Custom path for documentation index
Set `server_config.features.real_time_search=false` in your config to disable live crawling.
## Semantic Search (Optional)
The `[vector]` extra adds semantic search using sentence-transformers (all-MiniLM-L6-v2) with hybrid reranking:
- 50% semantic similarity (cosine)
- 30% keyword matching
- 20% source authority
Only works on Python 3.12 (PyTorch limitation). Python 3.13 users get keyword-based search.
To disable vector search even when installed:
```python
semantic_search(query="FastAPI auth", libraries=["fastapi"], use_vector_rerank=False)
```
## Available Tools
Core MCP tools:
- `semantic_search` - Search documentation
- `get_docs` - Fetch specific documentation
- `get_learning_path` - Generate learning roadmap
- `get_code_examples` - Find code snippets
- `scan_project_dependencies` - Vulnerability scan
- `snyk_scan_project` - Detailed Snyk analysis
- `generate_project_starter` - Create project boilerplate
- `manage_dev_environment` - Generate docker-compose files
- `compare_library_security` - Compare library vulnerabilities
## Development
```bash
git clone https://github.com/anton-prosterity/documentation-search-mcp.git
cd documentation-search-mcp
uv sync --all-extras
uv run python -m documentation_search_enhanced.main
```
### Testing
```bash
uv run pytest --ignore=pytest-test-project # Core tests
uv run ruff check src # Linting
uv run ruff format src --check # Format check
```
### Configuration
Use the `get_current_config` tool to export current settings to `config.json`. Validate with:
```bash
uv run python src/documentation_search_enhanced/config_validator.py
```
## Contributing
See `CONTRIBUTING.md` for guidelines. Use Conventional Commits for commit messages.
## License
MIT License - see `LICENSE` for details.
TDQS
Scored across 23 tools
The tool set mixes documentation search tools (get_docs, semantic_search, filtered_search) with security scanning (scan_library_vulnerabilities, multiple snyk tools) and other utilities (manage_dev_environment, generate_project_starter), causing confusion. Several search tools have overlapping purposes, and multiple security tools differ only in target (library vs. project, Snyk vs. OSINT).
Tool names use inconsistent patterns: some are verb_noun (clear_cache, get_docs), others are adjective_noun (semantic_search, filtered_search) or brand-specific (snyk_scan_library). While all use underscores, the lack of a consistent verb style harms predictability.
23 tools is excessive for a 'Documentation Search' server. Many tools (e.g., manage_dev_environment, snyk_monitor_project, generate_project_starter) are unrelated to the primary purpose, making the surface feel bloated and unfocused.
For documentation search, the server covers search, filtering, semantic search, examples, and learning paths, but it lacks update or CRUD operations. The inclusion of many security and utility tools suggests the surface is not well-scoped for its stated name, leaving gaps in documentation coverage and adding irrelevant functions.