Provides real-time access to documentation, library popularity data, and career insights using the Serper API.
An enhanced MCP server for documentation search, security analysis, and developer productivity. Deploys instantly with
uvx
, just like official AWS MCP servers.
Key Features | Description | Example Query |
---|---|---|
📚 Multi-Lib Search | Search across 104+ docs simultaneously | "Compare state management in react vs vue" |
🛡️ Project Security | Scan all dependencies for vulnerabilities | "Are there any security issues in my project?" |
🏗️ Project Generation | Create boilerplate for new projects | "Create a new fastapi project" |
🐳 Docker Environments | Set up local services like Postgres/Redis | "Set up a postgres database for me" |
🎓 Learning Paths | Get a structured learning plan | "Give me a learning path for devops" |
⚖️ Security Comparison | Compare security scores of libraries | "Compare flask vs django" |
To understand the impact of this MCP server, let's compare a common, critical developer task with and without the tool.
Scenario: "Are there any vulnerabilities in my project's dependencies?"
Without MCP (The Manual Grind) | With MCP (The Instant Audit) |
---|---|
1. Open your pyproject.toml or requirements.txt . | 1. Ask your AI assistant: |
2. For each of your 25 dependencies: | Are there any vulnerabilities in my project? |
a. Google "[library-name] vulnerability" . | |
b. Open its PyPI page, look for warnings. | |
c. Open its GitHub page, find the "Security" tab. | |
d. Manually check if CVEs apply to your version. | |
3. Try to mentally aggregate the risk level. | |
--- | --- |
Time Required: 15-30 minutes | Time Required: ~5 seconds |
Output: A vague sense of security. | Output: A precise, actionable JSON report. |
json { "summary": { "vulnerable_count": 2, "overall_project_risk": "High" }, "vulnerable_packages": [ { "library": "requests", "security_score": 35 } ] } |
This is the core value: automating tedious, complex, and critical developer workflows to deliver instant, accurate, and actionable insights.
# No git clone required! Needs Python 3.12+
uvx documentation-search-enhanced@latest
Add to your Claude Desktop or Cursor configuration:
{
"mcpServers": {
"documentation-search-enhanced": {
"command": "uvx",
"args": ["documentation-search-enhanced@latest"],
"env": {
"SERPER_API_KEY": "your_serper_api_key_here"
}
}
}
}
This server provides a powerful suite of tools to enhance your development workflow:
Tool | Description |
---|---|
get_docs | Fetches and summarizes documentation for one or more libraries. |
semantic_search | Performs AI-powered semantic search across multiple libraries, ranking results by relevance. |
get_learning_path | Generates a structured learning curriculum for a technology or skill level. |
get_code_examples | Finds curated code examples for a specific topic. |
scan_project_dependencies | (New!) Scans your project's dependencies (pyproject.toml , etc.) for known security vulnerabilities. |
generate_project_starter | (New!) Creates boilerplate for new FastAPI or React projects. |
manage_dev_environment | (New!) Generates a docker-compose.yml for services like Postgres or Redis. |
get_security_summary | Provides a quick security score and summary for a single library. |
compare_library_security | Compares the security posture of multiple libraries side-by-side. |
suggest_libraries | Autocompletes library names. |
get_current_config | (New!) Returns the active configuration, which you can save and modify for local overrides. |
health_check | Checks the status of documentation sources. |
You can customize the server by creating a config.json
file in your project directory.
"get the current configuration"
.config.json
: Save the output to a config.json
file in your project's root.The server will automatically use your local config.json
if it exists.
If you want to contribute or customize the server's code:
git clone https://github.com/antonmishel/documentation-search-mcp.git
cd documentation-search-mcp
uv sync
echo "SERPER_API_KEY=your_key_here" > .env
uv run python src/documentation_search_enhanced/main.py
Contributions are welcome! Please see CONTRIBUTING.md for details.
This project is open source under the MIT License. See LICENSE for details.
Command | What It Does | Example |
---|---|---|
uvx documentation-search-enhanced@latest | Install/run MCP server | One-time setup |
Get docs for library | Search documentation | "Find FastAPI authentication examples" |
Get library suggestions | Auto-complete libraries | "What libraries start with 'lang'?" |
Check system health | Monitor performance | "Check if documentation sources are working" |
Compare technologies | Side-by-side analysis | "Compare FastAPI vs Django for APIs" |
🔥 AI & ML: langchain, openai, anthropic, transformers, scikit-learn, spacy
🌐 Web Frameworks: fastapi, django, flask, express
⚛️ Frontend: react, svelte, javascript, typescript
☁️ Cloud: aws, google-cloud, azure, boto3
🐍 Python: pandas, numpy, matplotlib, requests, streamlit
🛠️ DevOps: docker, kubernetes
💾 Data: duckdb, jupyter, papermill
✅ Zero Local Setup - No cloning, no path management
✅ Automatic Updates - Always get the latest version with @latest
✅ Isolated Environment - uvx
handles dependencies automatically
✅ Universal Compatibility - Works with any MCP-compatible AI assistant
✅ No Maintenance - No local virtual environments to manage
# The @latest tag automatically gets the newest version
# Just restart your AI assistant to get updates
Based on my analysis of the AWS MCP repository, here are priority enhancements that would make your documentation-search-enhanced MCP server enterprise-grade:
auto_approve
, priority
, features
FASTMCP_LOG_LEVEL
supportpyproject.toml
, etc. for vulnerabilities.docker-compose.yml
for services.config.json
is valid on startup, providing clear errors.# Add to main.py
from asyncio import Semaphore
from collections import defaultdict
from datetime import datetime, timedelta
class RateLimiter:
def __init__(self, requests_per_minute: int = 60):
self.requests_per_minute = requests_per_minute
self.requests = defaultdict(list)
async def check_rate_limit(self, identifier: str = "default"):
now = datetime.now()
# Implementation...
# Modify tools to respect auto-approve settings
@mcp.tool()
async def get_docs(query: str, library: str):
"""Enhanced with auto-approve support"""
config = load_config()
auto_approve = config["server_config"]["auto_approve"].get("get_docs", False)
if not auto_approve:
# Request user approval for external fetch
pass
# Add usage analytics like AWS MCP servers
class AnalyticsTracker:
def __init__(self):
self.metrics = {
"requests_total": 0,
"libraries_searched": defaultdict(int),
"response_times": [],
"error_count": 0
}
# Enable community extensions
class PluginManager:
def __init__(self):
self.plugins = []
def register_plugin(self, plugin):
self.plugins.append(plugin)
async def execute_plugins(self, event_type: str, data: dict):
for plugin in self.plugins:
await plugin.handle(event_type, data)
# Add SQLite-based persistent cache
import sqlite3
import pickle
class PersistentCache(SimpleCache):
def __init__(self, db_path: str = "cache.db"):
super().__init__()
self.db_path = db_path
self._init_db()
# Add comprehensive health monitoring
@mcp.tool()
async def detailed_health_check():
"""Enhanced health check with more metrics"""
return {
"status": "healthy",
"uptime_seconds": (datetime.now() - start_time).total_seconds(),
"memory_usage_mb": psutil.Process().memory_info().rss / 1024 / 1024,
"cache_hit_rate": cache.get_hit_rate(),
"active_connections": len(active_connections),
"rate_limit_status": rate_limiter.get_status()
}
# Modular architecture
uvx documentation-search-enhanced.core@latest # Core search
uvx documentation-search-enhanced.ai@latest # AI-specific docs
uvx documentation-search-enhanced.web@latest # Web framework docs
uvx documentation-search-enhanced.cloud@latest # Cloud platform docs
{
"environments": {
"development": {
"logging_level": "DEBUG",
"cache_ttl_hours": 1,
"rate_limit_enabled": false
},
"production": {
"logging_level": "ERROR",
"cache_ttl_hours": 24,
"rate_limit_enabled": true
}
}
}
@mcp.tool()
async def semantic_search(query: str, libraries: list[str], context: str = None):
"""AI-powered semantic search across multiple libraries"""
@mcp.tool()
async def code_examples_search(query: str, language: str = "python"):
"""Search specifically for code examples"""
@mcp.tool()
async def trending_topics(category: str = "ai"):
"""Get trending topics in a category"""
After implementing these AWS MCP-inspired enhancements:
Your MCP server would then match or exceed the capabilities of AWS MCP servers while maintaining the same professional deployment model! 🎯
Would you like me to implement any specific enhancement from this list?
uvx documentation-search-enhanced@latest
This project is open source under the MIT License. See LICENSE file for details.
Made with ❤️ by developers, for developers
Transform Claude into your personal development advisor today!
⭐ Don't forget to star this repo if it helped you! ⭐
@mcp.tool() async def semantic_search(query: str, libraries: list[str], context: str = None): """AI-powered semantic search across multiple libraries"""
@mcp.tool() async def code_examples_search(query: str, language: str = "python"): """Search specifically for code examples"""
@mcp.tool() async def trending_topics(category: str = "ai"): """Get trending topics in a category"""
Get a broader perspective by searching across multiple libraries at once.
🤖 You: How do I handle state management in React vs Vue?
(This will search both libraries and return a combined, ranked result)
Claude:
{
"query": "state management",
"libraries_searched": ["react", "vue"],
"total_results": 20,
"results": [
{
"source_library": "react",
"title": "React Docs: State and Lifecycle",
"relevance_score": 95.5,
"snippet": "Learn how to use state and lifecycle methods in React components..."
},
{
"source_library": "vue",
"title": "Vue Docs: State Management with Pinia",
"relevance_score": 92.1,
"snippet": "Pinia is the now the official state management library for Vue..."
},
{
"source_library": "react",
"title": "Redux Toolkit Tutorial",
"relevance_score": 88.7,
"snippet": "The official, opinionated, batteries-included toolset for efficient Redux development..."
}
]
}
Your MCP server comes pre-configured with 104 popular libraries, but you can easily customize it.
Get the Default Configuration:
Ask your AI assistant: "Show me the current configuration"
This will output the entire config.json
content.
Create a Local config.json
:
config.json
in your project's root directory.Modify Your Local Config:
The MCP server will automatically detect and use your local config.json
instead of the default one.
To add a new library, simply edit your local config.json
and add a new entry to the docs_urls
and categories
sections:
Provides the Ferengi Rules of Acquisition with powerful search and retrieval capabilities.
Search for icons from the Hugeicons library and get usage documentation.
Fetches user data and event information from the Connpass platform using the Connpass and Gemini APIs.
An agent-based tool for web search and advanced research, including analysis of PDFs, documents, images, and YouTube transcripts.
Search and fetch documentation for popular libraries like Langchain, Llama-Index, and OpenAI using the Serper API, providing updated information for LLMs.
Interact with the French government's open data platform (data.gouv.fr) to search for company information.
Search engine for AI agents (search + extract) powered by Tavily
Provides comprehensive patent search and statistical analysis for intelligence analysis, technological innovation, and intellectual property management.
Web search using OpenAI's o3 model. Requires an OpenAI API key.
Unlock geospatial intelligence through Mapbox APIs like geocoding, POI search, directions, isochrones and more.