Files
e2b-dev--e2b/spec
devin-ai-integration[bot] 7af41e9fab chore: refresh generated MCP server types (#1716)
## Summary

`spec/mcp-server.json` (and the `McpServer` types generated from it for
both SDKs) has been frozen since the MCP beta landed. It is produced by
`mcp-gateway`'s `type-gen` from that repo's `docker-catalog.yaml`; this
refreshes it against a fresh snapshot of Docker's MCP catalog: **222 →
265 servers**.

Regenerated with the existing pipeline only — `packages/js-sdk: pnpm
generate:mcp` (`json2ts`) and `packages/python-sdk: make generate-mcp`
(`datamodel-codegen`). No hand edits.

- **49 new servers**: `n8n`, `neo4j`, `okta`, `temporal`, `proxmox`,
`testkube`, `thingsboard`, `zen`, `zscaler`, `googleFlights`,
`nextDevtools`, `victoriametrics`/`victorialogs`/`victoriatraces`, and
the AWS Labs family (`awslabsCloudwatch`, `awslabsDynamodb`,
`awslabsIam`, `awsPricing`, `amazonNeptune`, ...).
- **6 servers removed** — the catalog no longer ships them: `postgres`,
`root`, `tembo`, `flexprice`, `triplewhale`, `cdataConnectcloud`.
Passing them to `Sandbox.create` no longer type-checks, and since
`McpServerName = keyof McpServer`, `Template().addMcpServer('postgres')`
stops compiling too.
- **4 servers changed their options**: `awsDiagram` and `context7` now
require one (`outputDir`, `apiKey`), so `awsDiagram: {}` / `context7:
{}` no longer type-check; `onlyofficeDocspace` is down to `baseUrl` +
`docspaceApiKey`; `neo4jCypher` renamed keys.
- **71 entries differ in metadata**, but 61 of those are title-only and
10 description-only. Titles feed the generated TS interface names
(`AirtableMCPServer` → `Airtable`), which only matters to a caller who
imported those interface names directly — `mcp.d.ts` types are not
re-exported from the SDK root, only `McpServer` is.

The config is still forwarded to the gateway as written, so a dropped
server can be kept by casting past the type — whether it starts is up to
the gateway.

```ts
import { Sandbox } from 'e2b'

const sandbox = await Sandbox.create({
  mcp: { n8n: { apiKey: process.env.N8N_API_KEY!, apiUrl: 'https://n8n.example.com/api/v1' } },
})
```

The catalog snapshot this was generated from:
https://github.com/e2b-dev/mcp-gateway/pull/3. The `mcp-gateway`
template has to be rebuilt from that snapshot for the new servers to
actually start in a sandbox, so that PR should land (and the template be
rebuilt) before or with this one.

### Known upstream defects, deliberately not hand-patched

Both come from `type-gen`'s naming rules and belong in
`e2b-dev/mcp-gateway`, since editing generated output here is undone by
the next regeneration:

- `vectraAiRux` lists `VECTRABASEURL` as required, but no such property
exists — the catalog maps it from `vectra_url` via the entry's `env`
block, and `type-gen` emits the env-var name verbatim. `type-gen` should
resolve `required` names through `env` and hard-fail on one that matches
no property.
- `VECTRACLIENTID` keeps its env-var spelling because `type-gen` strips
underscores without re-casing.


Link to Devin session:
https://app.devin.ai/sessions/215a9143568a44209fb02e4177143b72

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: mish@e2b.dev <mish@e2b.dev>
2026-08-19 20:57:12 +02:00
..

API specs

Most files in this directory are owned by other repositories and are synced here with Copybara (config in ../copy.bara.sky) — don't edit them by hand; change them in their source repository and re-sync:

  • openapi.yml, envd/envd.yaml, envd/filesystem/, envd/process/ are owned by the infra repository, pinned by infra-ref.
  • openapi-volumecontent.yml is owned by the private belt repository, pinned by belt-ref.

Fetches authenticate with a GitHub token when available (GITHUB_TOKEN, or being logged in with gh auth login); the public infra specs also fetch anonymously, while the volume-content spec needs a token with read access to belt. When a fetch fails, make codegen warns and falls back to the tracked copy.

make codegen re-fetches all of them at their pinned commits before generating the clients, and the generated-files CI check fails if the tracked copies don't match the pins. The files are stored byte-identical to upstream. To update the specs, point the pin at a newer commit and re-run make codegen. To fetch without regenerating:

pnpm fetch:api-spec     # openapi.yml
pnpm fetch:envd-spec    # envd spec
pnpm fetch:volume-spec  # openapi-volumecontent.yml
E2B_INFRA_REF=main pnpm fetch:api-spec     # try the latest without moving the pin
E2B_BELT_REF=main pnpm fetch:volume-spec

The remaining files (mcp-server.json, envd/buf-*.gen.yaml) are owned by this repository. The SDK generate pipelines filter openapi.yml down to the tags each SDK exposes with Redocly CLI (see ../redocly.yaml) before generating the clients.