feat: add --host flag and QMD_HOST env for configurable bind address#583
Open
ductiletoaster wants to merge 2 commits intotobi:mainfrom
Open
feat: add --host flag and QMD_HOST env for configurable bind address#583ductiletoaster wants to merge 2 commits intotobi:mainfrom
ductiletoaster wants to merge 2 commits intotobi:mainfrom
Conversation
The MCP HTTP server hardcodes `localhost` as the bind address, making
it inaccessible from other containers in Kubernetes deployments where
QMD runs as a ClusterIP service.
Add `--host` CLI flag and `QMD_HOST` environment variable to configure
the bind address. Defaults to `localhost` for backward compatibility.
Usage:
qmd mcp --http --host 0.0.0.0 # CLI flag
QMD_HOST=0.0.0.0 qmd mcp --http # Environment variable
The `host` option is also available via the `startMcpHttpServer` API:
startMcpHttpServer(8181, { host: "0.0.0.0" })
Priority: options.host > QMD_HOST > "localhost"
The custom Database interface in db.ts was missing the transaction() method, causing TypeScript compilation to fail on store.ts line 2142. Both better-sqlite3 and bun:sqlite support transaction(), so this was simply an omission in the interface definition.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The MCP HTTP server hardcodes
localhostas the bind address instartMcpHttpServer():This prevents cross-container access in Kubernetes deployments where QMD runs as a ClusterIP service and other pods need to connect to it.
Solution
Add a configurable bind address with three levels of control:
--hostCLI flag:qmd mcp --http --host 0.0.0.0QMD_HOSTenvironment variable:QMD_HOST=0.0.0.0 qmd mcp --httpstartMcpHttpServer(8181, { host: "0.0.0.0" })Priority:
options.host>QMD_HOST>"localhost"(default)Changes
src/mcp/server.ts: Addhostto options, readQMD_HOSTenv, use inlisten()and log messagesrc/cli/qmd.ts: Add--hostCLI flag, pass through tostartMcpHttpServerand daemon spawn argsBackward Compatible
Defaults to
localhost— no behavior change for existing users.Use Case
Running QMD as a Kubernetes service behind an AI gateway (Bifrost) that aggregates multiple MCP servers. The gateway runs in a different namespace and needs TCP access to QMD's HTTP port.
Or via environment variable: