Skip to main content
Glama

ronzz-gptsearch

Vendored, patched gptr-mcp — the Model Context Protocol server for GPT Researcher — as deployed on LinuxServer2 for Open WebUI at ronzz.org.

This is a backup of the patched source, not a GitHub fork. Upstream is tracked manually; the diff against upstream master is listed below. Upstream docs are preserved at docs/upstream-README.md.

Why a patched build

The official gptresearcher/gpt-researcher image is amd64-only, and the full GPT Researcher app has no hosted service. LinuxServer2 is aarch64, so the MCP server is built from source (python:3.11-slim, arch-agnostic) with the fixes below.

Related MCP server: Google Search MCP Server

Patches vs upstream

File

Change

Reason

server.py

Docker auto-detection no longer overrides an explicit MCP_TRANSPORT

Upstream forces SSE inside Docker; Open WebUI supports Streamable HTTP only

server.py

Startup no longer hard-exits without OPENAI_API_KEY (warns instead)

We use the native deepseek provider (DEEPSEEK_API_KEY)

Dockerfile

Installs runtime system libs (libmagic1, libpango/libpangocairo/libcairo/libgdk-pixbuf, libffi8, shared-mime-info, poppler-utils); purges the build toolchain after pip install

Upstream installs none — WeasyPrint / python-magic (via unstructured) fail at import

requirements.txt

Adds tavily-python, ddgs

gpt-researcher's metadata does not declare the retriever backends

.dockerignore

New — excludes .env, logs/, .git/, tests/

Prevent secrets / local state baking into the image

Deployment (LinuxServer2)

  • Source: /opt/gptr-mcp/ · container gptr-mcp (gptr-mcp:v1), 127.0.0.1:8000, mem_limit 2g, joins the external network openwebui_default

  • Open WebUI connection: id gptr → http://gptr-mcp:8000/mcp (Streamable HTTP, auth none)

  • Full runbook (gated): https://wikibase.ronzz.org/wiki/RonzzIT:Runbook/OpenWebUI

  • Registration script: deploy/register-gptrmcp.sh

cd /opt/gptr-mcp
docker compose up -d                              # recreate after any .env change
docker compose build && docker compose up -d      # after editing source/requirements.txt

Configuration

Copy .env.example to .env (mode 0600) and fill the keys. CONTEXT_FILTER=keyword selects BM25 and needs no embedding provider; a non-empty OPENAI_API_KEY is still required because GPT Researcher builds the embedding client eagerly at startup (it is never called in keyword mode).

Tools exposed

deep_research, quick_search, write_report, get_research_sources, get_research_context.

License

MIT — see LICENSE. Upstream © Assaf Elovic and contributors.

Related MCP Connectors

Related MCP Servers