# MCP Servers

Use this resource to manage MCP (Model Context Protocol) servers programmatically.

# Quick reference

Type Resource Description
GET /api/mcp/mcp_servers List MCP servers.
POST /api/mcp/mcp_servers Create an MCP server.
GET /api/mcp/mcp_servers/:handle Retrieve MCP server details.
PUT /api/mcp/mcp_servers/:handle Update an MCP server.
DELETE /api/mcp/mcp_servers/:handle Delete an MCP server.
POST /api/mcp/mcp_servers/:handle/token_renew Renew MCP server authentication token.
POST /api/mcp/mcp_servers/:handle/assign_tools Assign tools to an MCP server.
POST /api/mcp/mcp_servers/:handle/assign_user_groups Assign user groups to an MCP server.
POST /api/mcp/mcp_servers/:handle/remove_user_groups Remove user groups from an MCP server.
PUT /api/mcp/mcp_servers/:handle/update_folder Move an MCP server to a different folder.
GET /api/mcp/mcp_servers/:mcp_server_handle/server_policies Retrieve the server policy configuration.
PUT /api/mcp/mcp_servers/:mcp_server_handle/server_policies Update the server policy configuration.
GET /api/mcp/mcp_servers/:mcp_server_handle/tools List tools for an MCP server.
PUT /api/mcp/mcp_servers/:mcp_server_handle/tools/:id Update the tool description for an MCP.
DELETE /api/mcp/mcp_servers/:mcp_server_handle/tools/:id Delete a tool.
GET /api/mcp/user_groups List identity provider user groups.

# List MCP servers

Returns a list of MCP servers in the workspace.

GET /api/mcp/mcp_servers

# Query parameters

Name Type Description
project_id number
optional
Filter by project ID.
folder_id number
optional
Filter by folder ID.
authentication_method string
optional
Filter by authentication method. Accepted values: token, workato_idp.
page number
optional
Page number. Defaults to 1.
per_page number
optional
Number of items per page. Maximum is 50.

# Sample request

curl  -X GET 'https://www.workato.com/api/mcp/mcp_servers?folder_id=27180380' \
      -H 'Authorization: Bearer <api_token>'

# Sample response

{
    "data": [
        {
            "id": 1001,
            "name": "Sales Tools MCP Server",
            "description": "Provides CRM and deal management tools for AI clients",
            "folder_id": 27180380,
            "project_id": 13595198,
            "authentication_method": "token",
            "tools_count": 5
        },
        {
            "id": 1002,
            "name": "HR Automation Server",
            "description": "HR onboarding and employee management tools",
            "folder_id": 27180380,
            "project_id": 13595198,
            "authentication_method": "workato_idp",
            "tools_count": 3
        }
    ],
    "count": 2,
    "page": 1,
    "per_page": 50
}

# Create an MCP server

Creates a new MCP server in the workspace.

POST /api/mcp/mcp_servers

# Payload

Name Type Description
name string
required
Server name.
folder_id number
required
Folder ID for the MCP server.
description string
optional
Server description.
asset_id number
optional
API collection ID. Omit to create a project asset server.
tools array of objects
optional
Tools to assign to the server at creation. Each object requires trigger_application (string) and id (string). id is a number when used with workato_recipe_function and workato_api_platform tools. id is a string handle when used with workato_genie tools.

# Sample request

curl  -X POST https://www.workato.com/api/mcp/mcp_servers \
      -H 'Authorization: Bearer <api_token>' \
      -H 'Content-Type: application/json' \
      -d '{
            "name": "Sales Tools MCP Server",
            "description": "Provides CRM and deal management tools for AI clients",
            "folder_id": 27180380,
            "tools": [
              {
                "trigger_application": "workato_api_platform",
                "id": "98231"
              }
            ]
          }'

# Sample response

{
    "data": {
        "id": 1001,
        "name": "Sales Tools MCP Server",
        "description": "Provides CRM and deal management tools for AI clients",
        "asset_type": "api_collection",
        "logo_url": "https://www.workato.com/images/mcp-server-logo.png",
        "tools_count": 1,
        "mcp_url": "https://www.workato.com/mcp/servers/sales-tools-mcp-server?token=abc123xyz",
        "auth_type": "token",
        "idp_user_group_ids": [],
        "api_collection": null,
        "created_at": "2025-10-15T13:41:05.207-07:00",
        "updated_at": "2025-10-15T13:41:05.207-07:00"
    }
}

# Get MCP server details

Retrieves details for a specific MCP server.

GET /api/mcp/mcp_servers/:handle

# URL parameters

Name Type Description
handle string
required
MCP server handle.

# Sample request

curl  -X GET 'https://www.workato.com/api/mcp/mcp_servers/sales-tools-mcp-server' \
      -H 'Authorization: Bearer <api_token>'

# Sample response

{
    "data": {
        "id": 1001,
        "name": "Sales Tools MCP Server",
        "description": "Provides CRM and deal management tools for AI clients",
        "asset_type": "api_collection",
        "logo_url": "https://www.workato.com/images/mcp-server-logo.png",
        "tools_count": 5,
        "mcp_url": "https://www.workato.com/mcp/servers/sales-tools-mcp-server?token=abc123xyz",
        "auth_type": "token",
        "idp_user_group_ids": [],
        "api_collection": null,
        "created_at": "2025-10-15T13:41:05.207-07:00",
        "updated_at": "2025-10-16T09:22:11.100-07:00"
    }
}

# Update an MCP server

Updates an existing MCP server.

PUT /api/mcp/mcp_servers/:handle

# URL parameters

Name Type Description
handle string
required
MCP server handle.

# Payload

Name Type Description
name string
optional
Server name.
description string
optional
Server description.
auth_type string
optional
Authentication type. Accepted values: token, workato_idp.
idp_user_group_ids array of strings
optional
Identity provider user group IDs that have access to the server. Only applicable when auth_type is workato_idp.
folder_id number
optional
Target folder ID to move the server.

# Sample request

curl  -X PUT 'https://www.workato.com/api/mcp/mcp_servers/sales-tools-mcp-server' \
      -H 'Authorization: Bearer <api_token>' \
      -H 'Content-Type: application/json' \
      -d '{
            "name": "Sales & CRM Tools MCP Server",
            "description": "Provides CRM, deal management, and pipeline tools for AI clients",
            "auth_type": "token"
          }'

# Sample response

{
    "data": {
        "id": 1001,
        "name": "Sales & CRM Tools MCP Server",
        "description": "Provides CRM, deal management, and pipeline tools for AI clients",
        "asset_type": "api_collection",
        "logo_url": "https://www.workato.com/images/mcp-server-logo.png",
        "tools_count": 5,
        "mcp_url": "https://www.workato.com/mcp/servers/sales-tools-mcp-server?token=abc123xyz",
        "auth_type": "token",
        "idp_user_group_ids": [],
        "api_collection": null,
        "created_at": "2025-10-15T13:41:05.207-07:00",
        "updated_at": "2025-10-17T11:05:33.812-07:00"
    }
}

# Delete an MCP server

Deletes an MCP server.

DELETE /api/mcp/mcp_servers/:handle

# URL parameters

Name Type Description
handle string
required
MCP server handle.

# Sample request

curl  -X DELETE 'https://www.workato.com/api/mcp/mcp_servers/sales-tools-mcp-server' \
      -H 'Authorization: Bearer <api_token>'

# Sample response

Returns 204 No Content on success.

# Renew MCP server authentication token

Generates a new authentication token for an MCP server and invalidates the previous token. Use this endpoint to rotate credentials after a security event or as part of a regular credential rotation policy.

POST /api/mcp/mcp_servers/:handle/token_renew

# URL parameters

Name Type Description
handle string
required
MCP server handle.

# Sample request

curl  -X POST 'https://www.workato.com/api/mcp/mcp_servers/sales-tools-mcp-server/token_renew' \
      -H 'Authorization: Bearer <api_token>'

# Sample response

Returns the updated MCP server object with the new mcp_url containing the refreshed token.

{
    "data": {
        "id": 1001,
        "name": "Sales & CRM Tools MCP Server",
        "description": "Provides CRM, deal management, and pipeline tools for AI clients",
        "asset_type": "api_collection",
        "logo_url": "https://www.workato.com/images/mcp-server-logo.png",
        "tools_count": 5,
        "mcp_url": "https://www.workato.com/mcp/servers/sales-tools-mcp-server?token=newtoken789",
        "auth_type": "token",
        "idp_user_group_ids": [],
        "api_collection": null,
        "created_at": "2025-10-15T13:41:05.207-07:00",
        "updated_at": "2025-10-18T08:00:00.000-07:00"
    }
}

# Assign tools to an MCP server

Assigns one or more tools to an MCP server. Tools already assigned to the server aren't duplicated.

POST /api/mcp/mcp_servers/:handle/assign_tools

# URL parameters

Name Type Description
handle string
required
MCP server handle.

# Payload

Name Type Description
tools array of objects
required
Tools to assign. Each object requires trigger_application (string) and id (string).

# Sample request

curl  -X POST 'https://www.workato.com/api/mcp/mcp_servers/sales-tools-mcp-server/assign_tools' \
      -H 'Authorization: Bearer <api_token>' \
      -H 'Content-Type: application/json' \
      -d '{
            "tools": [
              {
                "trigger_application": "workato_api_platform",
                "id": "98232"
              },
              {
                "trigger_application": "workato_genie",
                "id": "my-genie-handle"
              }
            ]
          }'

# Sample response

Returns the updated MCP server object.

{
    "data": {
        "id": 1001,
        "name": "Sales & CRM Tools MCP Server",
        "description": "Provides CRM, deal management, and pipeline tools for AI clients",
        "asset_type": "api_collection",
        "logo_url": "https://www.workato.com/images/mcp-server-logo.png",
        "tools_count": 7,
        "mcp_url": "https://www.workato.com/mcp/servers/sales-tools-mcp-server?token=newtoken789",
        "auth_type": "token",
        "idp_user_group_ids": [],
        "api_collection": null,
        "created_at": "2025-10-15T13:41:05.207-07:00",
        "updated_at": "2025-10-18T09:15:22.000-07:00"
    }
}

# Assign user groups to an MCP server

Assigns identity provider user groups to an MCP server. Only applicable when the server's auth_type is workato_idp.

POST /api/mcp/mcp_servers/:handle/assign_user_groups

# URL parameters

Name Type Description
handle string
required
MCP server handle.

# Payload

Name Type Description
idp_user_group_ids array of strings
required
IDs of the user groups to add.

# Sample request

curl  -X POST 'https://www.workato.com/api/mcp/mcp_servers/hr-automation-server/assign_user_groups' \
      -H 'Authorization: Bearer <api_token>' \
      -H 'Content-Type: application/json' \
      -d '{
            "idp_user_group_ids": ["group-abc123", "group-def456"]
          }'

# Sample response

Returns the updated MCP server object with the assigned user group IDs reflected in idp_user_group_ids.

{
    "data": {
        "id": 1002,
        "name": "HR Automation Server",
        "description": "HR onboarding and employee management tools",
        "asset_type": "project_asset",
        "logo_url": "https://www.workato.com/images/mcp-server-logo.png",
        "tools_count": 3,
        "mcp_url": "https://www.workato.com/mcp/servers/hr-automation-server?token=hrtoken456",
        "auth_type": "workato_idp",
        "idp_user_group_ids": ["group-abc123", "group-def456"],
        "api_collection": null,
        "created_at": "2025-10-15T10:00:00.000-07:00",
        "updated_at": "2025-10-18T10:30:00.000-07:00"
    }
}

# Remove user groups from an MCP server

Removes identity provider user groups from an MCP server.

POST /api/mcp/mcp_servers/:handle/remove_user_groups

# URL parameters

Name Type Description
handle string
required
MCP server handle.

# Payload

Name Type Description
idp_user_group_ids array of strings
required
IDs of the user groups to remove.

# Sample request

curl  -X POST 'https://www.workato.com/api/mcp/mcp_servers/hr-automation-server/remove_user_groups' \
      -H 'Authorization: Bearer <api_token>' \
      -H 'Content-Type: application/json' \
      -d '{
            "idp_user_group_ids": ["group-abc123"]
          }'

# Sample response

Returns the updated MCP server object with the specified groups removed from idp_user_group_ids.

{
    "data": {
        "id": 1002,
        "name": "HR Automation Server",
        "description": "HR onboarding and employee management tools",
        "asset_type": "project_asset",
        "logo_url": "https://www.workato.com/images/mcp-server-logo.png",
        "tools_count": 3,
        "mcp_url": "https://www.workato.com/mcp/servers/hr-automation-server?token=hrtoken456",
        "auth_type": "workato_idp",
        "idp_user_group_ids": ["group-def456"],
        "api_collection": null,
        "created_at": "2025-10-15T10:00:00.000-07:00",
        "updated_at": "2025-10-18T11:00:00.000-07:00"
    }
}

# Move MCP server to a different folder

Moves an MCP server to a specified folder.

PUT /api/mcp/mcp_servers/:handle/update_folder

# URL parameters

Name Type Description
handle string
required
MCP server handle.

# Payload

Name Type Description
folder_id number
required
Target folder ID.

# Sample request

curl  -X PUT 'https://www.workato.com/api/mcp/mcp_servers/hr-automation-server/update_folder' \
      -H 'Authorization: Bearer <api_token>' \
      -H 'Content-Type: application/json' \
      -d '{
            "folder_id": 27180399
          }'

# Sample response

Returns the updated MCP server object with the new folder_id reflected in created_at and updated_at timestamps.

{
    "data": {
        "id": 1002,
        "name": "HR Automation Server",
        "description": "HR onboarding and employee management tools",
        "asset_type": "project_asset",
        "logo_url": "https://www.workato.com/images/mcp-server-logo.png",
        "tools_count": 3,
        "mcp_url": "https://www.workato.com/mcp/servers/hr-automation-server?token=hrtoken456",
        "auth_type": "workato_idp",
        "idp_user_group_ids": ["group-def456"],
        "api_collection": null,
        "created_at": "2025-10-15T10:00:00.000-07:00",
        "updated_at": "2025-10-18T12:00:00.000-07:00"
    }
}

# Get server policy configuration

Retrieves the security policy configuration for an MCP server, including rate limits, quota limits, Classless Inter-Domain Routing (CIDR), and IP addresses.

GET /api/mcp/mcp_servers/:mcp_server_handle/server_policies

# URL parameters

Name Type Description
mcp_server_handle string
required
MCP server handle.

# Sample request

curl  -X GET 'https://www.workato.com/api/mcp/mcp_servers/sales-tools-mcp-server/server_policies' \
      -H 'Authorization: Bearer <api_token>'

# Sample response

{
    "id": 501,
    "mcp_server_id": 1001,
    "rate_limits": {
        "per_minute": 60
    },
    "quota_limits": {
        "per_day": 10000
    },
    "ip_allow_list": ["203.0.113.0/24"],
    "ip_deny_list": [],
    "created_at": "2025-10-15T13:41:05.207-07:00",
    "updated_at": "2025-10-16T09:22:11.100-07:00"
}

# Update server policy configuration

Updates the security policy configuration, including IP for an MCP server.

PUT /api/mcp/mcp_servers/:mcp_server_handle/server_policies

# URL parameters

Name Type Description
mcp_server_handle string
required
MCP server handle.

# Payload

Name Type Description
mcp_server_policy object
required
Policy configuration object.
mcp_server_policy[rate_limits] object
optional
Rate limit configurations.
mcp_server_policy[quota_limits] object
optional
Quota limit configurations.
mcp_server_policy[ip_allow_list] array of strings
optional
IP addresses or CIDR ranges to allow.
mcp_server_policy[ip_deny_list] array of strings
optional
IP addresses or CIDR ranges to deny.

# Sample request

curl  -X PUT 'https://www.workato.com/api/mcp/mcp_servers/sales-tools-mcp-server/server_policies' \
      -H 'Authorization: Bearer <api_token>' \
      -H 'Content-Type: application/json' \
      -d '{
            "mcp_server_policy": {
              "rate_limits": { "per_minute": 30 },
              "quota_limits": { "per_day": 5000 },
              "ip_allow_list": ["203.0.113.0/24", "198.51.100.42"],
              "ip_deny_list": []
            }
          }'

# Sample response

{
    "id": 501,
    "mcp_server_id": 1001,
    "rate_limits": {
        "per_minute": 30
    },
    "quota_limits": {
        "per_day": 5000
    },
    "ip_allow_list": ["203.0.113.0/24", "198.51.100.42"],
    "ip_deny_list": [],
    "created_at": "2025-10-15T13:41:05.207-07:00",
    "updated_at": "2025-10-18T14:00:00.000-07:00"
}

# List tools for an MCP server

Returns a paginated list of tools assigned to an MCP server.

GET /api/mcp/mcp_servers/:mcp_server_handle/tools

# URL parameters

Name Type Description
mcp_server_handle string
required
MCP server handle.

# Query parameters

Name Type Description
vua_required boolean
optional
Filter by whether Verified User Access (VUA) is required.
search string
optional
Search term to filter tools by name.
page number
optional
Page number. Defaults to 1.
per_page number
optional
Number of items per page. Defaults to 100. Maximum is 100.

# Sample request

curl  -X GET 'https://www.workato.com/api/mcp/mcp_servers/sales-tools-mcp-server/tools' \
      -H 'Authorization: Bearer <api_token>'

# Sample response

{
    "data": [
        {
            "id": 3001,
            "name": "Create Salesforce Lead",
            "description": "Creates a new lead record in Salesforce CRM",
            "trigger_application": "workato_api_platform",
            "action_applications": ["salesforce"],
            "flow_id": 66870001,
            "vua_required": false
        },
        {
            "id": 3002,
            "name": "Send Deal Notification",
            "description": "Sends a Slack notification when a deal stage changes",
            "trigger_application": "workato_recipe_function",
            "action_applications": ["slack"],
            "flow_id": 66870002,
            "vua_required": true
        }
    ],
    "count": 2,
    "page": 1,
    "per_page": 100
}

# Update tool description

Updates the description of a tool within an MCP server. This modifies the description shown to AI clients without affecting the underlying recipe or API endpoint.

PUT /api/mcp/mcp_servers/:mcp_server_handle/tools/:id

# URL parameters

Name Type Description
mcp_server_handle string
required
MCP server handle.
id number
required
Tool ID.

# Payload

Name Type Description
description string
optional
New description for the tool.

# Sample request

curl  -X PUT 'https://www.workato.com/api/mcp/mcp_servers/sales-tools-mcp-server/tools/3001' \
      -H 'Authorization: Bearer <api_token>' \
      -H 'Content-Type: application/json' \
      -d '{
            "description": "Creates a new lead record in Salesforce CRM with name, email, and company details"
          }'

# Sample response

{
    "id": 3001,
    "name": "Create Salesforce Lead",
    "description": "Creates a new lead record in Salesforce CRM with name, email, and company details",
    "trigger_application": "workato_api_platform",
    "action_applications": ["salesforce"],
    "flow_id": 66870001,
    "vua_required": false
}

# Delete a tool

Removes a tool from an MCP server.

API ENDPOINTS CAN'T BE DELETED

Only tools backed by recipe functions or genies can be deleted. Attempting to delete an API endpoint tool returns a 400 Bad Request error.

DELETE /api/mcp/mcp_servers/:mcp_server_handle/tools/:id

# URL parameters

Name Type Description
mcp_server_handle string
required
MCP server handle.
id number
required
Tool ID.

# Sample request

curl  -X DELETE 'https://www.workato.com/api/mcp/mcp_servers/sales-tools-mcp-server/tools/3002' \
      -H 'Authorization: Bearer <api_token>'

# Sample response

Returns 204 No Content on success.

# List identity provider user groups

Returns a paginated list of identity provider user groups available in the workspace. Use the group IDs from this response when assigning access to MCP servers that use workato_idp authentication.

GET /api/mcp/user_groups

# Query parameters

Name Type Description
page number
optional
Page number. Defaults to 1.
per_page number
optional
Number of items per page. Defaults to 100. Maximum is 100.

# Sample request

curl  -X GET 'https://www.workato.com/api/mcp/user_groups' \
      -H 'Authorization: Bearer <api_token>'

# Sample response

{
    "data": [
        {
            "id": "group-abc123",
            "name": "Sales Team",
            "users_count": 24,
            "created_at": "2025-01-10T08:00:00.000Z",
            "updated_at": "2025-09-15T12:30:00.000Z"
        },
        {
            "id": "group-def456",
            "name": "HR Admins",
            "users_count": 6,
            "created_at": "2025-01-10T08:00:00.000Z",
            "updated_at": "2025-08-20T10:00:00.000Z"
        }
    ],
    "count": 2,
    "page": 1,
    "per_page": 100
}


Last updated: 3/3/2026, 6:54:13 PM