2026-03-29 04:53:36 +09:00
|
|
|
import { describe, expect, it } from "bun:test"
|
|
|
|
|
import { transformMcpServer } from "./transformer"
|
|
|
|
|
|
|
|
|
|
describe("transformMcpServer", () => {
|
|
|
|
|
describe("#given a remote MCP server with oauth config", () => {
|
|
|
|
|
it("#when transforming the server #then preserves oauth on the remote config", () => {
|
|
|
|
|
const transformed = transformMcpServer("remote-oauth", {
|
|
|
|
|
type: "http",
|
|
|
|
|
url: "https://mcp.example.com",
|
|
|
|
|
headers: { Authorization: "Bearer test" },
|
|
|
|
|
oauth: {
|
|
|
|
|
clientId: "client-id",
|
|
|
|
|
scopes: ["read", "write"],
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
expect(transformed).toEqual({
|
|
|
|
|
type: "remote",
|
|
|
|
|
url: "https://mcp.example.com",
|
|
|
|
|
headers: { Authorization: "Bearer test" },
|
|
|
|
|
oauth: {
|
|
|
|
|
clientId: "client-id",
|
|
|
|
|
scopes: ["read", "write"],
|
|
|
|
|
},
|
|
|
|
|
enabled: true,
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
})
|
2026-04-02 14:55:01 +09:00
|
|
|
|
|
|
|
|
describe("#given a server config containing sensitive env references", () => {
|
|
|
|
|
it("#when transforming a local MCP server #then it strips sensitive env vars from the environment", () => {
|
|
|
|
|
// given
|
|
|
|
|
process.env.GITHUB_TOKEN = "ghp-secret"
|
|
|
|
|
process.env.HOME = "/Users/tester"
|
|
|
|
|
|
|
|
|
|
// when
|
|
|
|
|
const transformed = transformMcpServer("local-secure", {
|
|
|
|
|
command: "npx",
|
|
|
|
|
args: ["mcp-server", "${HOME}"],
|
|
|
|
|
env: {
|
|
|
|
|
HOME_DIR: "${HOME}",
|
|
|
|
|
AUTH_TOKEN: "${GITHUB_TOKEN}",
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
// then
|
|
|
|
|
expect(transformed).toEqual({
|
|
|
|
|
type: "local",
|
|
|
|
|
command: ["npx", "mcp-server", "/Users/tester"],
|
|
|
|
|
environment: {
|
|
|
|
|
HOME_DIR: "/Users/tester",
|
|
|
|
|
AUTH_TOKEN: "",
|
|
|
|
|
},
|
|
|
|
|
enabled: true,
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
it("#when transforming a remote MCP server #then it strips sensitive env vars from the url", () => {
|
|
|
|
|
// given
|
|
|
|
|
process.env.API_KEY = "secret-key"
|
|
|
|
|
|
|
|
|
|
// when
|
|
|
|
|
const transformed = transformMcpServer("remote-secure", {
|
|
|
|
|
type: "http",
|
|
|
|
|
url: "https://mcp.example.com/${API_KEY}",
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
// then
|
|
|
|
|
expect(transformed).toEqual({
|
|
|
|
|
type: "remote",
|
|
|
|
|
url: "https://mcp.example.com/",
|
|
|
|
|
enabled: true,
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
})
|
2026-03-29 04:53:36 +09:00
|
|
|
})
|