Workato · Arazzo Workflow

Workato Secure MCP Server Access

Version 1.0.0

Apply security policies and grant a user group access to an MCP server.

1 workflow 1 source API 1 provider
View Spec View on GitHub AgenticAPI ManagementAutomationB2BEmbedded iPaaSEnterpriseIntegrationiPaaSOrchestrationWorkflowArazzoWorkflows

Provider

workato

Workflows

secure-mcp-server-access
Set policies and assign a user group to an MCP server.
Confirms an MCP server, finds a user group, applies security policies, and assigns the group to the server.
4 steps inputs: handle, ipAllowlist, requestsPerMinute outputs: appliedRateLimit, serverName, userGroups
1
getServer
getMcpServer
Confirm the MCP server exists before changing its policies.
2
findUserGroup
listMcpUserGroups
List available user groups and select the first one to grant access.
3
updatePolicies
updateMcpServerPolicies
Apply rate-limit and IP-allowlist security policies to the server.
4
grantAccess
assignUserGroupsToMcpServer
Grant the selected user group access to the MCP server.

Source API Descriptions

Arazzo Workflow Specification

workato-secure-mcp-server-access-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Workato Secure MCP Server Access
  summary: Apply security policies and grant a user group access to an MCP server.
  description: >-
    Locks down a Model Context Protocol server. The workflow confirms the MCP
    server exists, looks up an available identity provider user group, updates
    the server's security policies with rate limits and IP controls, and grants
    the user group access. Every step spells out its request inline so the flow
    can be read and executed without opening the underlying OpenAPI description.
  version: 1.0.0
sourceDescriptions:
- name: mcpServerApi
  url: ../openapi/workato-mcp-server-openapi.yml
  type: openapi
workflows:
- workflowId: secure-mcp-server-access
  summary: Set policies and assign a user group to an MCP server.
  description: >-
    Confirms an MCP server, finds a user group, applies security policies, and
    assigns the group to the server.
  inputs:
    type: object
    required:
    - handle
    - requestsPerMinute
    properties:
      handle:
        type: string
        description: The handle (slug) of the MCP server to secure.
      requestsPerMinute:
        type: integer
        description: Maximum number of requests allowed per minute.
      ipAllowlist:
        type: array
        description: List of IP addresses or CIDR ranges allowed to access the server.
        items:
          type: string
  steps:
  - stepId: getServer
    description: Confirm the MCP server exists before changing its policies.
    operationId: getMcpServer
    parameters:
    - name: handle
      in: path
      value: $inputs.handle
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      serverName: $response.body#/name
  - stepId: findUserGroup
    description: List available user groups and select the first one to grant access.
    operationId: listMcpUserGroups
    parameters:
    - name: per_page
      in: query
      value: 100
    successCriteria:
    - condition: $statusCode == 200
    - context: $response.body
      condition: $.items.length > 0
      type: jsonpath
    outputs:
      userGroupId: $response.body#/items/0/id
  - stepId: updatePolicies
    description: Apply rate-limit and IP-allowlist security policies to the server.
    operationId: updateMcpServerPolicies
    parameters:
    - name: mcp_server_handle
      in: path
      value: $inputs.handle
    requestBody:
      contentType: application/json
      payload:
        rate_limit:
          requests_per_minute: $inputs.requestsPerMinute
        ip_allowlist: $inputs.ipAllowlist
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      appliedRateLimit: $response.body#/rate_limit
  - stepId: grantAccess
    description: Grant the selected user group access to the MCP server.
    operationId: assignUserGroupsToMcpServer
    parameters:
    - name: handle
      in: path
      value: $inputs.handle
    requestBody:
      contentType: application/json
      payload:
        user_group_ids:
        - $steps.findUserGroup.outputs.userGroupId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      userGroups: $response.body#/items
  outputs:
    serverName: $steps.getServer.outputs.serverName
    appliedRateLimit: $steps.updatePolicies.outputs.appliedRateLimit
    userGroups: $steps.grantAccess.outputs.userGroups