Enhanced MCP server for searching documentation with OSINT vulnerability scanning, security analysis, and AWS-style deployment
Project description
Documentation Search MCP Server
This Model Context Protocol server delivers documentation search, vulnerability auditing, and project bootstrapping in one place. It runs as a long-lived process that serves requests from MCP-compatible clients such as Claude Desktop or Cursor.
Core Capabilities
- AI-Powered Semantic Search: Vector embeddings + hybrid reranking across 100+ documentation sources for superior relevance.
- Security-First Approach: Scan local Python projects for dependency vulnerabilities with multi-tool analysis.
- Project Scaffolding: Generate production-ready starters (FastAPI, React) and developer environment files.
- Developer Productivity: Learning paths, curated code examples, and library security comparisons on demand.
Quick Start
# Requires Python 3.12+
uvx documentation-search-enhanced@latest
Configure your assistant to launch the server:
{
"mcpServers": {
"documentation-search-enhanced": {
"command": "uvx",
"args": ["documentation-search-enhanced@latest"]
}
}
}
No API key is required. Optionally set SERPER_API_KEY to use Serper-powered search.
Without it, the server uses a prebuilt docs index (auto-downloaded from GitHub Releases on startup) plus on-site docs search (MkDocs/Sphinx indexes when available).
Control the download with DOCS_SITE_INDEX_AUTO_DOWNLOAD, DOCS_SITE_INDEX_MAX_AGE_HOURS, DOCS_SITE_INDEX_URL(S), and DOCS_SITE_INDEX_PATH.
Set server_config.features.real_time_search=false to avoid any live crawling and rely only on the downloaded index.
The process stays running and listens for JSON-RPC calls; stop it with Ctrl+C when finished.
Codex CLI
Add the server using Codex’s built-in MCP manager:
codex mcp add documentation-search-enhanced \
-- uvx documentation-search-enhanced@latest
To run from a local checkout instead:
codex mcp add documentation-search-enhanced \
-- bash -lc 'cd /path/to/documentation-search-mcp && uv run python -m documentation_search_enhanced.main'
Development Workflow
git clone https://github.com/anton-prosterity/documentation-search-mcp.git
cd documentation-search-mcp
uv sync --all-extras --all-groups # include dev tools
# Optional: enable Serper-powered search
# echo "SERPER_API_KEY=your_key_here" > .env
uv run python -m documentation_search_enhanced.main
- Run core tests:
uv run pytest --ignore=pytest-test-project. - Run example FastAPI tests:
cd pytest-test-project && uv run --all-extras python -m pytest -q. - Lint:
uv run ruff check src. Format:uv run black src(use--checkto verify). - Build distributions via
uv build;publish_to_pypi.shwraps the release flow.
Configuration
Ask your assistant for the current configuration via the get_current_config tool, save it as config.json, then adjust sources or caching preferences. Validate changes locally with uv run python src/documentation_search_enhanced/config_validator.py. Keep secrets in .env rather than committing them.
AI-Powered Semantic Search
The server now features vector-based semantic search with hybrid reranking for significantly improved relevance:
How It Works
- Vector Embeddings: Uses sentence-transformers (all-MiniLM-L6-v2) to generate 384-dimensional semantic embeddings
- Hybrid Scoring: Combines three signals with configurable weights:
- Semantic similarity (50%): True meaning-based matching via cosine similarity
- Keyword relevance (30%): Precise term matching for specific queries
- Source authority (20%): Official docs, code examples, and URL quality signals
- FAISS Index: Lightning-fast similarity search over large documentation corpora
Benefits
- Better Understanding: Finds semantically related content even with different terminology
- Improved Ranking: Hybrid approach balances semantic understanding with keyword precision
- Production Ready: Compact 120MB model, efficient L2-normalized embeddings
- Flexible: Enable/disable vector reranking with
use_vector_rerankparameter
Usage
Vector reranking is enabled by default in semantic_search. To disable:
semantic_search(query="FastAPI auth", libraries=["fastapi"], use_vector_rerank=False)
This feature addresses the #1 competitive gap vs Context7 while maintaining our security and scaffolding advantages.
Tools at a Glance
Key MCP tools include get_docs, semantic_search, get_learning_path, get_code_examples, scan_project_dependencies, generate_project_starter, manage_dev_environment, get_security_summary, and compare_library_security.
Contributing & License
Start with the contributor guide in AGENTS.md plus the workflow details in CONTRIBUTING.md. Follow Conventional Commits, document validation steps in pull requests, and update CHANGELOG.md for user-facing adjustments. Released under the MIT License—see LICENSE for the full text.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file documentation_search_enhanced-1.6.1.tar.gz.
File metadata
- Download URL: documentation_search_enhanced-1.6.1.tar.gz
- Upload date:
- Size: 74.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
27738ba255a48c939d32358e1bee4f7dbf89c299275dbc9554f9a4207c8a78c4
|
|
| MD5 |
d91b3a15feb450d1cb6b9db7041c539c
|
|
| BLAKE2b-256 |
61edd0999febbdb44290a741f21461f9ba96bf1dacf5db6d7733942526659f20
|
Provenance
The following attestation bundles were made for documentation_search_enhanced-1.6.1.tar.gz:
Publisher:
release.yml on anton-prosterity/documentation-search-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
documentation_search_enhanced-1.6.1.tar.gz -
Subject digest:
27738ba255a48c939d32358e1bee4f7dbf89c299275dbc9554f9a4207c8a78c4 - Sigstore transparency entry: 769459985
- Sigstore integration time:
-
Permalink:
anton-prosterity/documentation-search-mcp@cda85612e252d84824060f0aaeb9564e75ccffc4 -
Branch / Tag:
refs/tags/v1.6.1 - Owner: https://github.com/anton-prosterity
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@cda85612e252d84824060f0aaeb9564e75ccffc4 -
Trigger Event:
release
-
Statement type:
File details
Details for the file documentation_search_enhanced-1.6.1-py3-none-any.whl.
File metadata
- Download URL: documentation_search_enhanced-1.6.1-py3-none-any.whl
- Upload date:
- Size: 82.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
20d5d76fddcaa45d62de02d0e63c6e364c7446c9d124fb8fc4b8923e6cf068ec
|
|
| MD5 |
9ba417355099333d197e4774db95d339
|
|
| BLAKE2b-256 |
13bae55a7626a41f8a472e00ae6a56e5f0d73168d6a795d40b03c45a536a802a
|
Provenance
The following attestation bundles were made for documentation_search_enhanced-1.6.1-py3-none-any.whl:
Publisher:
release.yml on anton-prosterity/documentation-search-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
documentation_search_enhanced-1.6.1-py3-none-any.whl -
Subject digest:
20d5d76fddcaa45d62de02d0e63c6e364c7446c9d124fb8fc4b8923e6cf068ec - Sigstore transparency entry: 769459987
- Sigstore integration time:
-
Permalink:
anton-prosterity/documentation-search-mcp@cda85612e252d84824060f0aaeb9564e75ccffc4 -
Branch / Tag:
refs/tags/v1.6.1 - Owner: https://github.com/anton-prosterity
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@cda85612e252d84824060f0aaeb9564e75ccffc4 -
Trigger Event:
release
-
Statement type: