Internal APIs never get a dedicated MCP server, and they are usually the ones an agent most needs to reach. If yours has an OpenAPI spec and OAuth2, this turns it into tools without writing code — and the include and exclude filters matter more than they look, because a large spec would otherwise flood the client's tool list. The custom-tool hook covers the operations the spec describes badly.
A generic bridge between an OAuth2-protected API and an MCP client. It reads an OpenAPI or Swagger specification and generates a tool per operation, handling token acquisition and refresh itself so no separate proxy server is needed.
- MCP tools generated automatically from every operation in your OpenAPI spec
- Filtering over which operations become tools: `OPENAPI_INCLUDE_ONLY` for an allow list, `OPENAPI_EXCLUDE` for exclusions, `OPENAPI_TOOL_PREFIX` to namespace the generated names
- OAuth2 client-credentials handling with token caching and automatic refresh, plus retry on authentication errors
- Custom tools beyond the spec: register one in a JavaScript file with its own input schema, endpoint and method, and point `CUSTOM_TOOLS_PATH` at it
- An interactive setup wizard (`npm run setup`) that collects the configuration and writes both the env file and a ready Claude Desktop config
Client credentials for the target API — `CLIENT_ID` and `CLIENT_SECRET` — plus `API_BASE_URL`, `AUTH_PATH` for the token endpoint, and `OPENAPI_SPEC_PATH` pointing at a JSON spec file. The spec is not optional: without it the server only provides test and debug tools. Run with `npx @ssossan/mcp-openapi-connector` or install globally; the package is `@ssossan/mcp-openapi-connector`, 1.0.1 in package.json. Set `NODE_ENV=development` for verbose logging while wiring it up. MIT licensed.
One command plus a key — npm install -g @ssossan/mcp-openapi-connector, then supply credentials
