An Azure service that provides a hybrid, multi-cloud management platform for APIs.
Hello @Sutton, Will
Yes, this is now supported directly in Bicep. The important part is to use API Management API version 2025-09-01-preview or later, because that is where the MCP resource model is exposed for ARM/Bicep.
If you already have an MCP-compatible backend and simply want APIM to proxy/govern it, define it as an APIM API with type: 'mcp', point serviceUrl to the backend, and configure the MCP transport. For Streamable HTTP, the shape is essentially:
resource apim 'Microsoft.ApiManagement/service@2025-09-01-preview' existing = {
name: apimName
}
resource mcpServer 'Microsoft.ApiManagement/service/apis@2025-09-01-preview' = {
parent: apim
name: 'my-mcp'
properties: {
type: 'mcp'
displayName: 'My MCP Server'
path: 'my-mcp'
protocols: [
'https'
]
serviceUrl: 'https://my-backend.example.com'
subscriptionRequired: true
mcpProperties: {
transportType: 'streamable'
endpoints: [
{
name: 'message'
uriTemplate: '/mcp'
}
]
}
}
}
There are two Bicep scenarios: exposing an existing MCP server as a passthrough server, and turning an existing REST API in APIM into an MCP server whose operations become tools.
If your backend is already MCP-native, use the passthrough pattern above. If it is a normal REST API, use the REST API-backed MCP pattern instead and create tool resources mapped to the APIM operations.
You can then attach normal APIM policies such as JWT validation, rate limits, IP filtering, and bind the MCP API to a product just like other APIM APIs.
The best current reference: Manage MCP servers programmatically in API Management
That page now includes complete Bicep templates for both REST-backed and passthrough MCP servers, so use those rather than trying to reproduce the portal-generated configuration manually.
Help make this community better for everyone: if this answer resolved your issue, please accept it or upvote it. If not, share more details in a comment so we can continue the discussion and find the right solution.