feat(mcp-servers): add server selection and GitHub auth - #1083
Conversation
|
Also @Edd88-pixel I just wanna check have you tested this end to end because I was having a few issues when I was trying to test this with npx and the actual install of the mcp servers. |
|
@DevelopmentCats Thanks for flagging this. I’ve pushed an update with explicit GitHub authentication support and rerun the E2E tests. Claude Code, Codex, and Cursor pass the unauthenticated and token-env flows. Claude Code also supports runtime Coder External Auth through coder external-auth access-token; Codex and Cursor are rejected for that mode because they don’t expose a documented dynamic Authorization helper. The official local GitHub MCP server also passed initialize, tools/list, and headless device-flow validation. The only scenarios I couldn’t complete locally are a two-user Coder Premium prebuild claim and the final interactive GitHub OAuth approval. |
|
if you can have real instances for testing you can do them and give me feedback |
|
I think there could be some issues with the inline node installation stuff but its something we can address later since most people would use images or the node module anyways. |
## Why `mcp-servers` landed in the `coder` namespace in #1083, but it fits `coder-labs` better. Moving it now while it is still at `0.0.1` and unreleased, so no published module source has to change. ## Changes Relocates `registry/coder/modules/mcp-servers` to `registry/coder-labs/modules/mcp-servers` and updates every namespace-derived path: - `module_directory` → `$HOME/.coder-modules/coder-labs/mcp-servers`, matching the `coder-labs/pool` convention - Runtime paths derived from it: the Node bootstrap `dependencies` dir and the `github-headers.sh` helper - Registry source address in the README examples → `registry.coder.com/coder-labs/mcp-servers/coder` - `coder exp sync` script names in `main.tftest.hcl`, which `coder-utils` derives from `module_directory` (`coder-mcp-servers-*` → `coder-labs-mcp-servers-*`) - Helper path assertions in `auth.test.ts` No behaviour changes. The icon path (`../../../../.icons/mcp.svg`) is unchanged because the namespace sits at the same depth. ## Validation - `terraform fmt -check` — passed - `terraform validate` — passed - `terraform test` — 10 passed, 0 failed The `main.tftest.hcl` sync-name assertions failed on the first run and caught the `coder-utils` `caller_name` derivation, which is included above. Container-based tests were not run locally; CI covers those.
Why
Workspace users currently have to configure popular MCP servers and their authentication separately for each agent client. A shared Coder module makes that choice available during workspace creation while keeping credentials out of rendered Terraform and MCP configuration files.
Changes
mcp-add, Playwright MCP, and checksum-verified Node.js versions.prebuildsowner and recalculate it after workspace claim.0.0.1so its interface can evolve before1.0.0.Validation
terraform test— 10 passed, 0 failed../scripts/terraform_test_all.sh— 17 dependency tests and 10 module tests passed../scripts/ts_test_auto.sh— 16 passed, 0 failed; 48 assertions../scripts/terraform_validate.sh— passed.terraform fmt -check -diff— passed.headersHelpercontract for Coder External Auth, including the not-connected diagnostic path.initializeandtools/listrequests and selected device flow in a headless container.