The discourse-mcp was BLOCKED with a TypeScript TS2345 error caused by
the Dockerfile forcing SDK ^1.23.0 via `pnpm add`, while the upstream
code requires the lockfile's v1.17.3. Removed the override to use
`pnpm install --frozen-lockfile`.
The upstream server does not read environment variables directly — it
requires CLI args (--auth-pairs, --site) or a --profile JSON file. Added
a docker-entrypoint.sh that converts DISCOURSE_URL, DISCOURSE_API_KEY,
and DISCOURSE_API_USERNAME env vars into a profile JSON with auth_pairs
and site tethering.
Validated end-to-end: MCP handshake passes, site auto-tethers on startup,
live tool calls (discourse_search, discourse_filter_topics) return real
data from community.turnsys.com.
Updates STATUS.md and README.md to reflect discourse-mcp as production
ready. Adds JOURNAL.md entries for discourse-cli, discourse-mcp fix, and
protocol improvements.
💘 Generated with Crush
Assisted-by: Crush:glm-5.2
33 lines
995 B
Bash
33 lines
995 B
Bash
#!/bin/sh
|
|
# Convert env vars to discourse-mcp CLI arguments, then exec the server.
|
|
#
|
|
# Env vars:
|
|
# DISCOURSE_URL - base URL of the Discourse site
|
|
# DISCOURSE_API_KEY - API key
|
|
# DISCOURSE_API_USERNAME - username for the API key
|
|
#
|
|
# When DISCOURSE_URL is set, the server is tethered to that site with auth
|
|
# pre-configured. Otherwise, the client must call discourse_select_site.
|
|
|
|
set -e
|
|
|
|
ARGS=""
|
|
|
|
if [ -n "${DISCOURSE_URL}" ]; then
|
|
ARGS="${ARGS} --site ${DISCOURSE_URL}"
|
|
|
|
if [ -n "${DISCOURSE_API_KEY}" ]; then
|
|
AUTH_PAIR="{\"site\":\"${DISCOURSE_URL}\""
|
|
AUTH_PAIR="${AUTH_PAIR},\"api_key\":\"${DISCOURSE_API_KEY}\""
|
|
if [ -n "${DISCOURSE_API_USERNAME}" ]; then
|
|
AUTH_PAIR="${AUTH_PAIR},\"api_username\":\"${DISCOURSE_API_USERNAME}\""
|
|
fi
|
|
AUTH_PAIR="${AUTH_PAIR}}"
|
|
ARGS="${ARGS} --auth-pairs '[${AUTH_PAIR}]'"
|
|
fi
|
|
fi
|
|
|
|
ARGS="${ARGS} --allow-writes --read-only false"
|
|
|
|
exec eval node dist/index.js ${ARGS} "$@"
|