Mcp Server Hybrid Search — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Mcp Server Hybrid Search (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
An MCP (Model Context Protocol) server that provides read-only access to the Hybrid Search knowledge base. Enables AI assistants in Windsurf, VS Code, Open Code, and Claude Desktop to query collections and search documents using hybrid search (semantic + keyword with RRF ranking).
⚠️ IMPORTANT PREREQUISITE
>
This MCP server requires the Hybrid Search container stack to be running in order to work. The MCP server does not directly access the database - it communicates with the Hybrid Search backend API.
When you install the Hybrid Search container stack, it automatically ensures that the backend API is available at http://localhost:8000.
http://localhost:8000Once published to PyPI, you can install with:
# Using pip
pip install hybrid-search-mcp
# Using uvx (run without installing)
uvx hybrid-search-mcp
# Using pipx (isolated environment)
pipx install hybrid-search-mcp#### Using uv (Recommended)
cd mcp-server
uv sync#### Using pip
cd mcp-server
pip install -e .The MCP server connects to the Hybrid Search FastAPI backend. Configure via environment variables:
| Variable | Default | Description |
|---|---|---|
HYBRID_SEARCH_API_URL | http://localhost:8000 | Backend API base URL |
HYBRID_SEARCH_API_TIMEOUT | 30.0 | Request timeout in seconds |
# Direct command (if installed globally)
hybrid-search-mcp
# Using uvx (no installation needed)
uvx hybrid-search-mcp
# Using pipx
pipx run hybrid-search-mcpcd mcp-server
uv run python -m hybrid_search_mcp
# or
uv run hybrid-search-mcpAdd to your Windsurf MCP configuration (~/.windsurf/mcp_config.json or similar):
{
"mcpServers": {
"hybrid-search": {
"command": "uv",
"args": [
"run",
"--project", "/path/to/mcp-server",
"python", "-m", "hybrid_search_mcp"
],
"env": {
"HYBRID_SEARCH_API_URL": "http://localhost:8000"
}
}
}
}Add to your VS Code MCP configuration:
{
"mcpServers": {
"hybrid-search": {
"command": "uv",
"args": [
"run",
"--project", "/path/to/mcp-server",
"python", "-m", "hybrid_search_mcp"
],
"env": {
"HYBRID_SEARCH_API_URL": "http://localhost:8000"
}
}
}
}Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
{
"mcpServers": {
"hybrid-search": {
"command": "uv",
"args": [
"run",
"--project", "/path/to/mcp-server",
"python", "-m", "hybrid_search_mcp"
],
"env": {
"HYBRID_SEARCH_API_URL": "http://localhost:8000"
}
}
}
}Add to your Open Code MCP configuration:
{
"mcpServers": {
"hybrid-search": {
"command": "uv",
"args": [
"run",
"--project", "/path/to/mcp-server",
"python", "-m", "hybrid_search_mcp"
],
"env": {
"HYBRID_SEARCH_API_URL": "http://localhost:8000"
}
}
}
}list_collectionsList all available collections in the knowledge base.
Returns: Collection names, document counts, chunk counts, and metadata.
get_collectionGet detailed information about a specific collection.
Parameters:
collection_name (string): Name of the collectionReturns: Document count, chunk count, embedding dimension, timestamps.
get_collection_filesList all files in a collection with their chunk counts.
Parameters:
collection_name (string): Name of the collectionReturns: List of files with filenames and chunk counts.
search_collectionSearch a collection using hybrid search (semantic + keyword with RRF ranking).
Parameters:
collection_name (string): Name of the collection to searchquery (string): Search query (natural language or keywords)limit (integer, optional): Maximum results (1-100, default 10)Returns: Ranked search results with chunk text, similarity scores, source files, and metadata.
collections://listStatic resource listing all available collections.
collection://{name}Dynamic resource with detailed information about a specific collection.
Once configured, you can ask your AI assistant:
┌─────────────────┐ STDIO ┌─────────────────┐ HTTP ┌─────────────────┐
│ AI Assistant │ ◄────────────► │ MCP Server │ ◄───────────► │ FastAPI Backend│
│ (Windsurf/VS │ │ (FastMCP) │ │ (Hybrid Search)│
│ Code/etc.) │ │ │ │ │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐
│ PostgreSQL │
│ + pgvector │
└─────────────────┘Ensure the FastAPI backend is running:
cd backend
uvicorn application:app --reload --host 0.0.0.0 --port 8000Use list_collections to see available collections, then use the exact collection name.
uv is installed and in your PATHcd mcp-server
uv run pytestmcp-server/
├── pyproject.toml # Project configuration
├── README.md # This file
└── src/
└── hybrid_search_mcp/
├── __init__.py # Package exports
├── __main__.py # Module entry point
├── server.py # FastMCP server with tools/resources
├── api_client.py # HTTP client for backend
└── config.py # Configuration managementpip install build twinecd mcp-server
uv build
# or
python -m buildThis creates:
dist/hybrid_search_mcp-0.1.0.tar.gz (source distribution)dist/hybrid_search_mcp-0.1.0-py3-none-any.whl (wheel)# Upload to TestPyPI
twine upload --repository testpypi dist/*
# Test installation
pip install --index-url https://test.pypi.org/simple/ hybrid-search-mcp# Upload to PyPI
twine upload dist/*
# Verify installation
pip install hybrid-search-mcp~/.pypirc:[distutils]
index-servers =
pypi
testpypi
[pypi]
username = __token__
password = pypi-YOUR-API-TOKEN
[testpypi]
username = __token__
password = pypi-YOUR-TESTPYPI-TOKENUpdate version in pyproject.toml, then:
# Clean old builds
rm -rf dist/
# Build new version
uv build
# Upload
twine upload dist/*MIT License - see LICENSE file for details.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.