openapi-mcp-server

module
v1.0.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 4, 2026 License: MIT

README

OpenAPI MCP Server

HTTP server that converts OpenAPI specifications into MCP tools and proxies calls to upstream APIs.

Quick Start

  1. Clone the repository:
git clone https://github.com/merzzzl/openapi-mcp-server.git
cd openapi-mcp-server
  1. Copy and edit the configuration:
cp config.example.yaml config.yaml
  1. Run the server:
go run ./cmd/app -config config.yaml
  1. MCP endpoints are available at:
http://localhost:9090/{server_name}/mcp   — Streamable HTTP
http://localhost:9090/{server_name}/sse   — SSE
  1. Health check:
http://localhost:8080/healthz

Configuration

# Main HTTP server port (defaults to ":8080").
port: ":9090"

# Enable TOON format for tool responses.
enable_toon: false

# OpenTelemetry: traces, logs, metrics via OTLP gRPC.
# If endpoint is empty — traces and metrics are disabled, logs go to stdout.
telemetry:
  endpoint: "localhost:4317"
  insecure: true

# List of OpenAPI servers. Each one is registered as a separate MCP server.
servers:
  - # Server name — used in URL path (/{name}/mcp, /{name}/sse).
    name: petstore

    # OpenAPI specification URL (v2 or v3).
    schema_url: "https://petstore3.swagger.io/api/v3/openapi.json"

    # Base URL for proxying tool calls.
    base_url: "https://petstore3.swagger.io/api/v3"

    # Operation filter rules. allow — whitelist, block — blacklist.
    # Each rule: methods (HTTP methods) + regex (path pattern).
    allow:
      - methods: ["GET", "POST", "PUT", "DELETE"]
        regex: ".*"
    block: []

Docker

docker pull ghcr.io/merzzzl/openapi-mcp-server:latest
docker run -p 9090:9090 -v $(pwd)/config.yaml:/config.yaml ghcr.io/merzzzl/openapi-mcp-server:latest

Prerequisites

  • Go >= 1.24
  • OpenTelemetry Collector (optional, for telemetry collection)

Directories

Path Synopsis
cmd
app command
Package main is the entry point for the openapi-mcp-server.
Package main is the entry point for the openapi-mcp-server.
internal
clients
Package clients provides HTTP client constructors.
Package clients provides HTTP client constructors.
controller/mcp
Package mcp implements the MCP controller layer.
Package mcp implements the MCP controller layer.
measure
Package measure provides application-level OpenTelemetry metric instruments.
Package measure provides application-level OpenTelemetry metric instruments.
middleware
Package middleware provides HTTP middleware for authorization.
Package middleware provides HTTP middleware for authorization.
models
Package models defines domain types used across the application.
Package models defines domain types used across the application.
repository
Package repository defines interfaces for data access.
Package repository defines interfaces for data access.
repository/openapi
Package openapi implements OpenAPI specification loading.
Package openapi implements OpenAPI specification loading.
repository/proxy
Package proxy implements HTTP request proxying.
Package proxy implements HTTP request proxying.
service/schema
Package schema provides OpenAPI schema analysis and tool generation.
Package schema provides OpenAPI schema analysis and tool generation.
service/tool
Package tool provides tool execution against proxied APIs.
Package tool provides tool execution against proxied APIs.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL