Reference for the bridge.mcp/v1 manifest format that Bridge generates and serves.
The bridge.mcp/v1 manifest is the artifact that Bridge generates with bridge generate mcp and serves with bridge mcp serve or bridge mcp serve-http. It describes the MCP server name, the data source it reads from, the runtime transport it uses, and the tools it exposes.Manifests are plain YAML. You can commit them to version control. They contain no secrets — connection strings and tokens are referenced by environment variable name, not stored inline.
Bridge generates manifests automatically. You generally do not need to write one by hand. This page documents the format for cases where you want to understand or edit a generated manifest.
# Generated by bridge. Do not edit by hand unless you know what you are doing.# Manifest kind: bridge.mcp/v1kind: bridge.mcp/v1name: my-apisource: type: openapi path: ./openapi.yamlruntime: transport: stdio base_url_env: API_BASE_URL auth: type: bearer token_env: API_TOKENtools: - name: get_users ...
Field
Required
Description
kind
yes
Must be bridge.mcp/v1. Bridge rejects manifests with any other value.
name
yes
Name of the MCP server. Shown to MCP clients and used in client config snippets.
source
yes
Where the manifest was generated from. See Source.
runtime
yes
How the server connects to the backend at runtime. See Runtime.
Bridge resolves base_url_env from the process environment at server startup. If the variable is referenced but not set, the server exits with an error.
The execute block is the execution plan Bridge uses to fulfill tool calls. Bridge validates this block at load time so misconfigured manifests fail immediately rather than at call time.
Bridge validates the manifest at load time (when you run bridge mcp serve or bridge mcp serve-http). It also validates at generation time. Validation checks:
kind is exactly bridge.mcp/v1
name is non-empty
all tool names are unique and non-empty
input_schema is a JSON object for every tool
all column names in SQL plans contain only [a-zA-Z0-9_]
filterable_columns and sortable_columns are subsets of selectable_columns
key_column is also in filterable_columns
limit.max does not exceed 1000
limit.default does not exceed limit.max
Manifests that fail validation exit immediately with a manifest_error and a description of the problem.