fix(mcp): inject X-Molecule-Org-Id so SaaS tenant calls dont 400 #42
Closed
core-devops
wants to merge 4 commits from
fix/mcp-inject-org-header into main
pull from: fix/mcp-inject-org-header
merge into: molecule-ai:main
molecule-ai:main
molecule-ai:fix/a2a-2251-ts-canonical-builder
molecule-ai:feat/migrate-workspace-provider
molecule-ai:fix/mgmt-create-request-collision
molecule-ai:feat/management-create-approval
molecule-ai:fix/mcp-58-confirm-name-destructive-actions
molecule-ai:fix/audit-server-url-replace-lexer
molecule-ai:feat/unified-requests-inbox-p5-shims
molecule-ai:feat/unified-requests-inbox-p2-mcp
molecule-ai:ci/absorb-queue-schedule-into-conductor
molecule-ai:chore/bump-1.5.0
molecule-ai:feat/create-issue-tool
molecule-ai:fix/mcp-audit-force-merge
molecule-ai:fix/mcp-inject-org-header-v2
molecule-ai:fix/48-reject-unknown-actor
molecule-ai:test/issue-34-integration-clean
molecule-ai:test/issue-34-integration-a2a-acl-memory
molecule-ai:fix/cp-admin-reject-unknown-actor
molecule-ai:fix/mcp-server-merge-queue-plus-cleanup
molecule-ai:feat/2355-merge-queue-mcp-server
molecule-ai:fix/mcp-server-delete-obsolete-auto-promote
molecule-ai:chore/mcp-server-distinct-names-38
molecule-ai:feat/recreate-workspace-mcp-579
molecule-ai:fix/remote-auth-and-esm-logger
molecule-ai:fix/mcp-pause-resume-cascade-param-2122-followup
molecule-ai:fix/36-auth-headers
molecule-ai:feat/management-mcp
molecule-ai:fix/qs-dos-audit
molecule-ai:pr32
molecule-ai:chore/cursor-store-nits
molecule-ai:feat/session-cursor-module
molecule-ai:fix/upload-resolution-timeout
molecule-ai:chore/bump-1.3.0
molecule-ai:feat/poll-uploads-resolved-contract-test-layer-d
molecule-ai:feat/inbox-uploads-rfc640-layer-b
molecule-ai:ssot/external-workspace-tool-schemas
molecule-ai:fix/use-package-token-for-npm-publish
molecule-ai:fix/gitea-npm-publish-install
molecule-ai:ssot/workspace-targets-contract
molecule-ai:fix/claude-88th-tool
molecule-ai:feat/provision-workspace-tool-failclosed
molecule-ai:docs/fix-sdk-reference-in-platform-integration
molecule-ai:docs/sync-ki-007-kpi-009-resolution
molecule-ai:fix/merge-queue-mcp
molecule-ai:fix/ki007-stale-path-ref
molecule-ai:fix/merge-queue-required-contexts
molecule-ai:chore/add-merge-queue-workflow
molecule-ai:fix/remote-agent-setup-command
molecule-ai:docs/readme-add-npm-install
molecule-ai:fix/kind-ki006-anyof-workspaces
molecule-ai:feat/api-request-timeouts
molecule-ai:fix/ci-all-required-sentinel
molecule-ai:chore/sop-checklist-gate
molecule-ai:docs/regenerate-readme-from-source
No Reviewers
No Label
Milestone
No items
No Milestone
Projects
Clear projects
No project
Assignees
agent-dev-a
agent-dev-b
agent-pm
agent-researcher
agent-reviewer
agent-reviewer-1
agent-reviewer-cr2
app-fe (Molecule AI · app-fe)
app-lead (Molecule AI · app-lead)
app-qa (Molecule AI · app-qa)
claude-ceo-assistant
claude-ci-reader
core-be (Molecule AI · core-be)
core-devops (Molecule AI · core-devops)
core-fe (Molecule AI · core-fe)
core-lead (Molecule AI · core-lead)
core-offsec (Molecule AI · core-offsec)
core-qa (Molecule AI · core-qa)
core-security (Molecule AI · core-security)
core-uiux (Molecule AI · core-uiux)
cp-be (Molecule AI · cp-be)
cp-lead (Molecule AI · cp-lead)
cp-qa (Molecule AI · cp-qa)
cp-security (Molecule AI · cp-security)
cui (Zhanlin Cui)
dev-lead (Molecule AI · dev-lead)
devops-engineer
documentation-specialist (Molecule AI · documentation-specialist)
fullstack-engineer (Molecule AI · fullstack-engineer)
godwin
hongming
hongming-ceo-delegated
hongming-codex-laptop
hongming-kimi-laptop
hongming-pc2
hongming-personal
infra-lead (Molecule AI · infra-lead)
infra-runtime-be (Molecule AI · infra-runtime-be)
infra-sre (Molecule AI · infra-sre)
integration-tester (Molecule AI · integration-tester)
molecule-code-reviewer
plugin-dev (Molecule AI · plugin-dev)
pm
release-manager (Molecule AI · release-manager)
sdk-dev (Molecule AI · sdk-dev)
sdk-lead (Molecule AI · sdk-lead)
sop-tier-bot (SOP Tier-Check Bot)
technical-writer (Molecule AI · technical-writer)
triage-operator (Molecule AI · triage-operator)
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: molecule-ai/molecule-mcp-server#42
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "fix/mcp-inject-org-header"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
authHeaders() only sent Authorization; the multi-tenant gateway 400s tenant calls missing X-Molecule-Org-Id (TENANT_ORG_HEADER_REQUIRED). Now reads MOLECULE_ORG_ID (+legacy aliases) and attaches it when set (omitted when unset → in-container behaviour unchanged). Verified: build clean, compiled dist carries the header; the Bearer+org-header combo is the same one the operator uses successfully against the agents-team tenant. Unblocks using the platform MCP instead of operator-side A2A curl.
Two bugs made the platform-management MCP server unusable outside an in-container localhost context: 1. logger ESM crash: src/utils/logger.ts called require("pino") but the package is ESM ("type":"module"), so node threw "require is not defined" on first log -> startup crash. Fixed via createRequire(import.meta.url). 2. no auth header: src/api.ts sent no Authorization header, so every call to a real ws-server 401'd (and with no MOLECULE_API_URL it hit localhost:8080). Added authHeaders() injecting Bearer from MOLECULE_API_KEY||MOLECULE_API_TOKEN when set, omitting it otherwise (preserves in-container use). Both apiCall and platformGet use it. Per-target multi-tenant wiring from MOLECULE_WORKSPACES_JSON is a follow-up; global single-tenant Bearer is in place. Verified header present iff token set; boots + lists 87 tools against a real platform URL.Closing as superseded: this PR's net diff against main is EMPTY (changed_files=0; the X-Molecule-Org-Id injection from commits 4af1f227/ae4e94ab is already present in main, and the head is a 'merge main into…' commit). The fix has landed — no remaining delta to merge. (qa fresh-wave review, agent-reviewer.)
Pull request closed