Knowledge Base MCP Server (Qdrant)
Read-only MCP server with hybrid search — dense semantic (all-MiniLM-L6-v2) + sparse keyword (BM-25) — fused with Qdrant's built-in RRF.
Stack
| Layer | Tool | Cost | |---|---|---| | MCP framework | FastMCP | Free | | Vector DB | Qdrant Cloud | Free (1 GB) | | Embeddings | FastEmbed (local, ONNX) | Free | | Hosting | Render | Free tier | | ChatGPT | Deep Research connector | Free (Pro plan) |
---
Setup
1. Install dependencies
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
2. Set up Qdrant Cloud
- Go to https://cloud.qdrant.io → create a free cluster
- Copy the cluster URL and API key from the Access tab
- The collection is created automatically on first ingest
3. Configure .env
cp .env.example .env
# fill in QDRANT_URL, QDRANT_API_KEY, MCP_API_KEY
4. Upload documents
python ingest.py --file report.pdf --dept 1 --pos 2
python ingest.py --file notes.md
python ingest.py --list
python ingest.py --delete <document_id>
Supported formats: pdf, docx, md, txt, rst
5. Test locally
python server.py
# → http://localhost:8000/mcp
6. Deploy to Render
- Push to GitHub (
.envis gitignored) - Render → New Web Service → Connect GitHub repo
- Add env vars:
QDRANT_URL,QDRANT_API_KEY,KEYCLOAK_REALM_URL,KEYCLOAK_CLIENT_ID - Copy your public URL
7. Connect to ChatGPT
- Settings → Connectors → Add → paste Render URL +
/mcp/ - Auth: Bearer token → your
MCP_API_KEY - Use via
+→ Deep Research → select your connector
---
Tools (all read-only)
| Tool | Description | |---|---| | search(query, top_k) | Hybrid search. Returns point IDs. | | fetch(id) | Get chunk content by point ID. | | list_documents() | List all documents. | | get_document(id) | Full text of a document by document_id. |
search + fetch follow the ChatGPT Deep Research contract.











