openapi-to-mcp
Expor endpoints de API como ferramentas fortemente tipadas a partir de uma especificação OpenAPI. Suporta OpenAPI 2.0/3.0 nos formatos JSON ou YAML, de arquivos locais ou remotos.
Documentação
openapi-to-mcp
Use sua especificação OpenAPI para expor os endpoints da sua API como ferramentas fortemente tipadas.
Exemplo básico para https://petstore3.swagger.io/ 🎉
{
"mcpServers": {
"petstore": {
"command": "openapi-to-mcp",
"args": [
"https://petstore3.swagger.io/api/v3/openapi.json"
]
}
}
}
Exemplo mais complexo, usando a API do Github:
{
"mcpServers": {
"github": {
"command": "openapi-to-mcp",
"args": [
"https://raw.githubusercontent.com/github/rest-api-description/refs/heads/main/descriptions/api.github.com/api.github.com.yaml",
"--bearer-token",
"github_pat_xxxxxx",
"--tool-naming-strategy",
"verbandpath"
]
}
}
}
Este exemplo usa a autenticação por token bearer (com um Token de Acesso Pessoal do Github) e força a estratégia de nomenclatura de ferramentas para "verbo e caminho", pois os ids de operação do Github não são nomes de ferramentas válidos.

Instalação
Como ferramenta Nuget: openapi-to-mcp
dotnet tool install --global openapi-to-mcp
Ou baixe os executáveis das versões
Uso
Usage:
openapi-to-mcp <open-api> [options]
Arguments:
<open-api> You OpenAPI specification (URL or file) [required]
Options:
-t, --tool-naming-strategy <extension|extension_or_operationid_or_verbandpath|operationid|verbandpath> How the tool name should be computed [default: extension_or_operationid_or_verbandpath]
-h, --host-override Host override
-b, --bearer-token Bearer token
-o2, --oauth-2-grant-type <client_credentials|password|refresh_token> OAuth2 flow to be used
-o2_tu, --oauth-2-token-url OAuth2 token endpoint URL (override the one defined in your OpenAPI for your chosen OAuth2 flow)
-o2_ci, --oauth-2-client-id OAuth2 client id (for the client_credentials grant_type)
-o2_cs, --oauth-2-client-secret OAuth2 client secret (for the client_credentials grant_type)
-o2_rt, --oauth-2-refresh-token OAuth2 refresh token (for the refresh_token grant_type)
-o2_un, --oauth-2-username OAuth2 username (for the password grant_type)
-o2_pw, --oauth-2-password OAuth2 password (for the password grant_type)
-i, --instructions MCP instruction to be advertised by the server
--verbose Log more info (in sdterr) [default: False]
-?, -h, --help Show help and usage information
--version Show version information
Suporte a OpenAPI
- Atualmente, OpenAPI 2.0 e 3.0 são suportados.
- 3.1 não é (pelo menos até o microsoft/OpenAPI.NET suportar)
- As especificações podem ser JSON/YAML e locais (arquivo) ou remotas (URL)
- Apenas $refs locais são suportados
Extensões personalizadas do OpenAPI
Um conjunto de extensões personalizadas está disponível para personalizar como sua API deve ser exposta:
info.x-mcp-instructions(string): Instruções textuais expostas pelo servidor MCP durante o handshake de inicializaçãooperation.x-mcp-tool-name(string): Nome personalizado da ferramentaoperation.x-mcp-tool-description(string): Descrição personalizada da ferramentaoperation.x-mcp-tool-enabled(boolean): Habilita/desabilita uma operação específica (habilitada por padrão)
Recursos do MCP
Apenas o transporte STDIO é suportado atualmente.
Ferramentas
Operações ("endpoints") da sua especificação OpenAPI são traduzidas para ferramentas do MCP
- Todos os parâmetros de caminho/consulta/corpo JSON são expostos (usando seu esquema JSON)
- A resposta é retornada como está
- Por padrão, o nome da ferramenta é calculado usando primeiro a extensão
operation.x-mcp-tool-name, depois o operation.operationId e depois{httpMethod}_{escaped_path}- A estratégia de nomenclatura de ferramentas pode ser definida através da opção
--tool-naming-strategy. - ⚠️As ferramentas são descartadas se seus nomes não corresponderem a
^[a-zA-Z0-9_-]{1,64}$
- A estratégia de nomenclatura de ferramentas pode ser definida através da opção
- As descrições das ferramentas são extraídas da seguinte forma:
operation.x-mcp-tool-description??operation.description??path.description
Chamada de ferramenta e host
Quando uma ferramenta é chamada, o servidor MCP chamará o endpoint subjacente. Para determinar qual host chamar, uma combinação de parâmetros é usada:
- a opção
--host-override - a URL do primeiro servidor da sua especificação, se for uma URL absoluta
- o host do OpenAPI remoto fornecido
- caso contrário, um erro é lançado
Por exemplo, executando openapi-to-mcp https://petstore3.swagger.io/api/v3/openapi.json:
- https://petstore3.swagger.io/api/v3/openapi.json define um servidor, mas sua URL é relativa (/api/v3)
- então o host da própria URL da especificação é usado: https://petstore3.swagger.io e o caminho relativo do servidor é anexado a ele
Autorização
Token bearer
Um token pode ser fornecido como opção --bearer-token. Ele será fornecido a todas as chamadas como o cabeçalho Authorization: Bearer {token}.
Ele também será fornecido ao buscar uma especificação remota.
OAuth2
ClientCredentials, RefreshToken e Password são suportados.
Se sua especificação OpenAPI declarar securitySchemes para esses fluxos, o tokenUrl correspondente será usado.
Como publicar
Crie uma nova tag/release 🤷