Dynamically exposes REST APIs defined by OpenAPI specs as MCP tools, with Streamable HTTP support.
Setup
Choose your client, copy the config, then fill in any required environment variables.
claude mcp add openapi-proxy --env API_AUTH_TYPE='<API_AUTH_TYPE>' --env API_KEY='<API_KEY>' --env EXTRA_HEADERS='<EXTRA_HEADERS>' --env OPENAPI_SPEC_FORMAT='<OPENAPI_SPEC_FORMAT>' --env OPENAPI_SPEC_URL='<OPENAPI_SPEC_URL>' --env SERVER_URL_OVERRIDE='<SERVER_URL_OVERRIDE>' --env STRIP_PARAM='<STRIP_PARAM>' --env TOOL_NAME_PREFIX='<TOOL_NAME_PREFIX>' --env TOOL_WHITELIST='<TOOL_WHITELIST>' -- uvx mcp-openapi-proxy~/.codex/config.toml
[mcp_servers.openapi-proxy]
command = "uvx"
args = ["mcp-openapi-proxy"]
env = { API_AUTH_TYPE = "<API_AUTH_TYPE>", API_KEY = "<API_KEY>", EXTRA_HEADERS = "<EXTRA_HEADERS>", OPENAPI_SPEC_FORMAT = "<OPENAPI_SPEC_FORMAT>", OPENAPI_SPEC_URL = "<OPENAPI_SPEC_URL>", SERVER_URL_OVERRIDE = "<SERVER_URL_OVERRIDE>", STRIP_PARAM = "<STRIP_PARAM>", TOOL_NAME_PREFIX = "<TOOL_NAME_PREFIX>", TOOL_WHITELIST = "<TOOL_WHITELIST>" }
# codex mcp add openapi-proxy --env API_AUTH_TYPE='<API_AUTH_TYPE>' --env API_KEY='<API_KEY>' --env EXTRA_HEADERS='<EXTRA_HEADERS>' --env OPENAPI_SPEC_FORMAT='<OPENAPI_SPEC_FORMAT>' --env OPENAPI_SPEC_URL='<OPENAPI_SPEC_URL>' --env SERVER_URL_OVERRIDE='<SERVER_URL_OVERRIDE>' --env STRIP_PARAM='<STRIP_PARAM>' --env TOOL_NAME_PREFIX='<TOOL_NAME_PREFIX>' --env TOOL_WHITELIST='<TOOL_WHITELIST>' -- uvx mcp-openapi-proxy~/.cursor/mcp.json
{
"mcpServers": {
"openapi-proxy": {
"command": "uvx",
"args": [
"mcp-openapi-proxy"
],
"env": {
"API_AUTH_TYPE": "<API_AUTH_TYPE>",
"API_KEY": "<API_KEY>",
"EXTRA_HEADERS": "<EXTRA_HEADERS>",
"OPENAPI_SPEC_FORMAT": "<OPENAPI_SPEC_FORMAT>",
"OPENAPI_SPEC_URL": "<OPENAPI_SPEC_URL>",
"SERVER_URL_OVERRIDE": "<SERVER_URL_OVERRIDE>",
"STRIP_PARAM": "<STRIP_PARAM>",
"TOOL_NAME_PREFIX": "<TOOL_NAME_PREFIX>",
"TOOL_WHITELIST": "<TOOL_WHITELIST>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"openapi-proxy": {
"type": "stdio",
"command": "uvx",
"args": [
"mcp-openapi-proxy"
],
"env": {
"API_AUTH_TYPE": "<API_AUTH_TYPE>",
"API_KEY": "<API_KEY>",
"EXTRA_HEADERS": "<EXTRA_HEADERS>",
"OPENAPI_SPEC_FORMAT": "<OPENAPI_SPEC_FORMAT>",
"OPENAPI_SPEC_URL": "<OPENAPI_SPEC_URL>",
"SERVER_URL_OVERRIDE": "<SERVER_URL_OVERRIDE>",
"STRIP_PARAM": "<STRIP_PARAM>",
"TOOL_NAME_PREFIX": "<TOOL_NAME_PREFIX>",
"TOOL_WHITELIST": "<TOOL_WHITELIST>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"openapi-proxy": {
"command": "uvx",
"args": [
"mcp-openapi-proxy"
],
"env": {
"API_AUTH_TYPE": "<API_AUTH_TYPE>",
"API_KEY": "<API_KEY>",
"EXTRA_HEADERS": "<EXTRA_HEADERS>",
"OPENAPI_SPEC_FORMAT": "<OPENAPI_SPEC_FORMAT>",
"OPENAPI_SPEC_URL": "<OPENAPI_SPEC_URL>",
"SERVER_URL_OVERRIDE": "<SERVER_URL_OVERRIDE>",
"STRIP_PARAM": "<STRIP_PARAM>",
"TOOL_NAME_PREFIX": "<TOOL_NAME_PREFIX>",
"TOOL_WHITELIST": "<TOOL_WHITELIST>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"openapi-proxy": {
"command": "uvx",
"args": [
"mcp-openapi-proxy"
],
"env": {
"API_AUTH_TYPE": "<API_AUTH_TYPE>",
"API_KEY": "<API_KEY>",
"EXTRA_HEADERS": "<EXTRA_HEADERS>",
"OPENAPI_SPEC_FORMAT": "<OPENAPI_SPEC_FORMAT>",
"OPENAPI_SPEC_URL": "<OPENAPI_SPEC_URL>",
"SERVER_URL_OVERRIDE": "<SERVER_URL_OVERRIDE>",
"STRIP_PARAM": "<STRIP_PARAM>",
"TOOL_NAME_PREFIX": "<TOOL_NAME_PREFIX>",
"TOOL_WHITELIST": "<TOOL_WHITELIST>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"openapi-proxy": {
"command": "uvx",
"args": [
"mcp-openapi-proxy"
],
"env": {
"API_AUTH_TYPE": "<API_AUTH_TYPE>",
"API_KEY": "<API_KEY>",
"EXTRA_HEADERS": "<EXTRA_HEADERS>",
"OPENAPI_SPEC_FORMAT": "<OPENAPI_SPEC_FORMAT>",
"OPENAPI_SPEC_URL": "<OPENAPI_SPEC_URL>",
"SERVER_URL_OVERRIDE": "<SERVER_URL_OVERRIDE>",
"STRIP_PARAM": "<STRIP_PARAM>",
"TOOL_NAME_PREFIX": "<TOOL_NAME_PREFIX>",
"TOOL_WHITELIST": "<TOOL_WHITELIST>"
}
}
}
}Environment variables
API_AUTH_TYPEAPI_KEYEXTRA_HEADERSOPENAPI_SPEC_FORMATOPENAPI_SPEC_URLSERVER_URL_OVERRIDESTRIP_PARAMTOOL_NAME_PREFIXTOOL_WHITELIST
Replace the placeholders with your own credentials and keep them out of version control.