OpenAPI Transformer MCP server

Transforms OpenAPI specifications into ready-to-use tools that enable seamless interaction with REST APIs through automatic endpoint mapping, authentication handling, and response formatting.
Back to servers
Provider
Loopwork
Release date
Apr 10, 2025
Language
Go
Stats
265 stars

Emcee is a tool that allows you to connect AI assistants like Claude Desktop to external tools and data services using the Model Context Protocol (MCP). It takes any web application with an OpenAPI specification and turns it into an MCP server, similar to ChatGPT plugins functionality.

Installation Options

Using Homebrew (macOS)

If you're on macOS with Homebrew installed:

brew install loopwork-ai/tap/emcee

Using the Installer Script

For Linux and macOS (Intel/Apple Silicon):

# For fish shell
sh (curl -fsSL https://get.emcee.sh | psub)

# For bash or zsh
sh <(curl -fsSL https://get.emcee.sh)

Using Docker

docker run -it ghcr.io/loopwork-ai/emcee

Building From Source

Requires Go 1.24 or later:

git clone https://github.com/loopwork-ai/emcee.git
cd emcee
go build -o emcee cmd/emcee/main.go

Configuring Claude Desktop

  1. Install Claude Desktop from https://claude.ai/download
  2. Open Claude Desktop Settings (⌘,)
  3. Select the "Developer" section in the sidebar
  4. Click "Edit Config" to open the configuration file

You can also open the config file directly with:

code ~/Library/Application\ Support/Claude/claude_desktop_config.json

Add the following configuration to connect to the weather.gov API:

{
  "mcpServers": {
    "weather": {
      "command": "emcee",
      "args": [
        "https://api.weather.gov/openapi.json"
      ]
    }
  }
}

After saving the file, restart Claude. You should see a 🔨 icon in the bottom right corner of your chat box, indicating available tools.

Using Emcee

Basic Command Syntax

emcee [spec-path-or-url] [flags]

Available Flags

--basic-auth string    Basic auth value (either user:pass or base64 encoded)
--bearer-auth string   Bearer token value 
--raw-auth string      Raw value for Authorization header
--retries int          Maximum number of retries for failed requests (default 3)
-r, --rps int          Maximum requests per second (0 for no limit)
-s, --silent           Disable all logging
--timeout duration     HTTP request timeout (default 1m0s)
-v, --verbose          Enable debug level logging to stderr
--version              Display version information

Authentication Options

For APIs that require authentication:

Auth Type Command Flag Result
Bearer Token --bearer-auth="abc123" Authorization: Bearer abc123
Basic Auth --basic-auth="user:pass" Authorization: Basic dXNlcjpwYXNz
Raw Value --raw-auth="Custom xyz789" Authorization: Custom xyz789

Emcee also supports 1Password secret references:

emcee --bearer-auth="op://shared/x/credential" https://api.twitter.com/2/openapi.json

Example in Claude Desktop

After configuring Claude, you can ask questions that require the API:

  1. Start a new chat
  2. Ask a question like "What's the weather in Portland, OR?"
  3. Claude will request permission to use the weather tool
  4. When approved, Claude will use the API to provide weather information

Transforming OpenAPI Specifications

You can filter or modify OpenAPI specs before passing them to emcee:

cat path/to/openapi.json | \
  jq 'if .paths then .paths |= with_entries(select(.key == "/points/{point}")) else . end' | \
  emcee

Debugging

Use the MCP Inspector to debug emcee:

npx @modelcontextprotocol/inspector emcee https://api.weather.gov/openapi.json

Then open http://localhost:5173 in your browser to interact with the inspector interface.

How to add this MCP server to Cursor

There are two ways to add an MCP server to Cursor. The most common way is to add the server globally in the ~/.cursor/mcp.json file so that it is available in all of your projects.

If you only need the server in a single project, you can add it to the project instead by creating or adding it to the .cursor/mcp.json file.

Adding an MCP server to Cursor globally

To add a global MCP server go to Cursor Settings > MCP and click "Add new global MCP server".

When you click that button the ~/.cursor/mcp.json file will be opened and you can add your server like this:

{
    "mcpServers": {
        "cursor-rules-mcp": {
            "command": "npx",
            "args": [
                "-y",
                "cursor-rules-mcp"
            ]
        }
    }
}

Adding an MCP server to a project

To add an MCP server to a project you can create a new .cursor/mcp.json file or add it to the existing one. This will look exactly the same as the global MCP server example above.

How to use the MCP server

Once the server is installed, you might need to head back to Settings > MCP and click the refresh button.

The Cursor agent will then be able to see the available tools the added MCP server has available and will call them when it needs to.

You can also explictly ask the agent to use the tool by mentioning the tool name and describing what the function does.

Want to 10x your AI skills?

Get a free account and learn to code + market your apps using AI (with or without vibes!).

Nah, maybe later