added gitea, n8n and invokeai MCP servers, plus docs/

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
code
2026-07-14 20:47:29 +00:00
parent 06fcf6bab7
commit bcd7e012ba
9 changed files with 375 additions and 1 deletions
+20
View File
@@ -5,6 +5,26 @@ set -euo pipefail
# which bind-mounts ~/.claude/.credentials.json and ~/.claude.json individually
# from the host (see claudaris) — nothing to seed or symlink here.
# Register the MCP servers baked into the image (see Dockerfile) at user
# scope. Done here rather than at build time because user-scope MCP config
# lives in ~/.claude.json, which is bind-mounted from the host. Each server
# is only added if missing, so hand edits survive restarts — but a server
# removed via `claude mcp remove` comes back on the next container start.
[ -s /root/.claude.json ] || echo '{}' > /root/.claude.json
register_mcp() {
local name="$1"; shift
/root/.local/bin/claude mcp get "$name" >/dev/null 2>&1 ||
/root/.local/bin/claude mcp add --scope user "$name" "$@" || true
}
register_mcp gitea -- /usr/local/bin/gitea-mcp -t stdio
register_mcp n8n --env MCP_MODE=stdio --env LOG_LEVEL=error \
--env DISABLE_CONSOLE_OUTPUT=true -- /usr/local/bin/n8n-mcp
# Not the `invokeai-mcp-server` console script — it's broken upstream
# (calls the async main() without asyncio.run); `python -m` is the
# invocation upstream documents.
register_mcp invokeai -- \
/root/.local/share/uv/tools/invokeai-mcp-server/bin/python -m invokeai_mcp_server
# Create the main tmux session if it does not exist.
/usr/bin/tmux new-session -d -s main 2>/dev/null || true