{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_4895a7mgmqbv","handle":"mcp-switchboard-client","url":"https://wellknown.network/agents/mcp-switchboard-client","links":{"self":"https://wellknown.network/agents/mcp-switchboard-client/record.json","html":"https://wellknown.network/agents/mcp-switchboard-client","markdown":"https://wellknown.network/agents/mcp-switchboard-client/record.md","api":"https://wellknown.network/api/v1/agents/mcp-switchboard-client","status":"https://wellknown.network/api/v1/agents/mcp-switchboard-client/status","claim":"https://wellknown.network/agents/mcp-switchboard-client/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/mcp-switchboard-client/claim.json","badge":"https://wellknown.network/agents/mcp-switchboard-client/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/mcp-switchboard-client/history","tools":"https://wellknown.network/api/v1/agents/mcp-switchboard-client/tools"},"ard":{"identifier":"urn:air::server:mcp-switchboard-client","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"mcp-switchboard-client","summary":"Tunnels local stdio MCP servers to an mcp-switchboard hub over one outbound WebSocket","description":"# mcp-switchboard-client\n\nThe client half of [mcp-switchboard](https://github.com/AkosPapp/mcp-switchboard).\n\nIt reads an `mcp.json`, spawns the local stdio MCP servers it describes, and\nopens a single **outbound** WebSocket to an `mcp-switchboard-hub`, multiplexing\nevery server over that one connection. No inbound port is ever opened, so it\nworks from behind NAT with nothing forwarded.\n\nThe client speaks no MCP itself — it is a pipe, shuttling each server's\nstdin/stdout across the tunnel. All MCP logic lives in the hub. That is why its\nonly dependency is `websockets`.\n\n## Running\n\n```sh\nuvx mcp-switchboard-client --hub-url wss://switchboard.example.com --token \"$TOKEN\"\n```\n\nor bootstrap `uvx`/`npx` first with the installer:\n\n```sh\ncurl -fsSL https://akospapp.github.io/mcp-switchboard/install.sh | sh -s -- \\\n  --hub-url wss://switchboard.example.com --token \"$TOKEN\"\n```\n\n`mcp.json` uses the familiar shape, resolved from the current directory:\n\n```json\n{\n  \"mcpServers\": {\n    \"git\": { \"command\": \"uvx\", \"args\": [\"mcp-server-git\", \"--repository\", \".\"] }\n  }\n}\n```\n\nSettings can also come from `MCP_SWITCHBOARD_*` environment variables or a\n`.env` file (`HUB_URL`, `TUNNEL_TOKEN`, `LABEL`, `CONFIG`, …). Any value that\nstarts with `/` and points at an existing regular file is read from that file, so\na token can be passed as a path.\n\n`LABEL` defaults to the machine's hostname and is how the hub tags this\nmachine's tools, so consumers can tell which host a tool lives on.\n\nSee the [main README](../README.md) for the full picture.","publisher":{"name":"Akos Papp","url":null},"homepage":"https://github.com/AkosPapp/mcp-switchboard","repository":"https://github.com/AkosPapp/mcp-switchboard","version":"0.2.0","license":"MIT","protocols":["mcp"],"tags":["mcp","model-context-protocol","reverse-proxy","switchboard","tunnel"],"pricing":null,"endpoints":[{"url":"pypi:mcp-switchboard-client","type":"package_pypi","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":null,"attribution":{"kind":"pypi","name":"pypi","license":"pypi","repoUrl":"pypi","summary":"pypi","version":"pypi","description":"pypi","homepageUrl":"pypi","publisherName":"pypi"}},"derived":{"capabilities":[{"slug":"dev.version-control","name":"Version Control","confidence":1,"provenance":"derived"}],"categories":["dev"],"language":"en"},"observed":{"status":"unknown","statusReason":"Distributed as a package to run locally; no network endpoint to check.","lastOkAt":null,"lastProbedAt":null,"statusComputedAt":null,"reliability30d":null,"latestObservations":[],"tools":null,"package":{"name":"mcp-switchboard-client","registry":"pypi","observedAt":"2026-10-24T17:29:23.701Z","publishedAt":"2026-09-16T19:55:31.483715Z","latestVersion":"0.2.0"},"toolSurface":null,"endpointFacts":[]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"pypi","key":"mcp-switchboard-client","url":"https://pypi.org/project/mcp-switchboard-client/","firstSeenAt":"2026-09-18T08:26:39.305Z","fetchedAt":"2026-10-24T17:28:17.893Z","normalizedAt":"2026-10-24T17:28:17.893Z"}]},"firstSeenAt":"2026-09-18T08:26:39.305Z","updatedAt":"2026-10-24T17:29:23.701Z"}