diff --git a/README.md b/README.md index adff5e9..88ae9fa 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ ## Features - **Hybrid search** — semantic (pgvector) fused with BM25 keyword ranking (ParadeDB `pg_search`) in a single SQL round-trip. -- **Two APIs** — a REST API (`/docs` for OpenAPI) and an MCP server over SSE for Claude Desktop, Cursor, and Zed. +- **Two APIs** — a REST API (`/docs` for OpenAPI) and an MCP server over streamable HTTP for Claude Desktop, Cursor, and Zed. - **Pluggable embeddings** — Ollama, sentence-transformers, any OpenAI-compatible endpoint, or Google Gemini. - **Pluggable storage** — uploaded files live on local disk by default, or on any number of S3-compatible backends (self-hosted MinIO, AWS S3, …). - **Document parsing** — PDF (fast PyMuPDF or OCR-capable docling), Markdown, and plain text out of the box; DOCX/PPTX when the docling backend is enabled — with optional NVIDIA GPU acceleration. @@ -41,7 +41,7 @@ ```mermaid flowchart LR Browser --> Nginx["Nginx UI · :3000"] - Nginx --> API["API · :8000
REST + MCP/SSE"] + Nginx --> API["API · :8000
REST + MCP/HTTP"] API --> Redis[("Redis
broker + pub/sub")] API --> DB[("ParadeDB
pgvector + BM25")] API --> Store["Object storage
local / S3 / MinIO"] @@ -289,8 +289,8 @@ EmbedBase exposes an MCP server over **streamable HTTP** at endpoint carries the `/api` prefix; note the trailing slash). Claude Desktop bridges to a *remote* HTTP server via [`mcp-remote`](https://www.npmjs.com/package/mcp-remote). Add to -`~/.config/claude/claude_desktop_config.json` (or `%APPDATA%\Claude\claude_desktop_config.json` -on Windows): +`~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or +`%APPDATA%\Claude\claude_desktop_config.json` (Windows): ```json { @@ -338,7 +338,7 @@ Host ports are configurable in `.env` (change them if the defaults conflict; run | Port | Service | `.env` var | Notes | |---|---|---|---| | `3000` | Nginx / UI | `UI_PORT` | Primary entrypoint. | -| `8000` | API | `API_PORT` | REST + MCP/SSE. Remove this mapping on shared networks (Nginx is the only ingress). | +| `8000` | API | `API_PORT` | REST + MCP/HTTP. Remove this mapping on shared networks (Nginx is the only ingress). | | `5432` | ParadeDB | `POSTGRES_HOST_PORT` | Bound to `127.0.0.1` for a local DB GUI; never exposed on the LAN. | | `9000` / `9001` | MinIO API / console | `MINIO_PORT` / `MINIO_CONSOLE_PORT` | Only with `docker-compose.minio.yml`. | diff --git a/api/main.py b/api/main.py index f7e429c..c071def 100644 --- a/api/main.py +++ b/api/main.py @@ -239,7 +239,7 @@ def create_app() -> FastAPI: # are registered so their routes exist to filter). _register_reference(app) - # MCP server (Delivery 4) — a mounted SSE ASGI sub-app, not a normal router. + # MCP server (Delivery 4) — a mounted streamable-HTTP ASGI sub-app, not a normal router. # Mount last so its /mcp prefix never shadows the REST routes above. mcp.mount_mcp(app, _load_app_config().mcp) diff --git a/api/routers/mcp.py b/api/routers/mcp.py index 54e7a2c..2116bdb 100644 --- a/api/routers/mcp.py +++ b/api/routers/mcp.py @@ -14,5 +14,5 @@ def mount_mcp(app: FastAPI, mcp_config: MCPConfig) -> None: - """Mount the MCP SSE app onto ``app`` (delegated to the service layer).""" + """Mount the MCP streamable-HTTP app onto ``app`` (delegated to the service layer).""" mount_app(app, mcp_config)