Skip to main content
Glama
JLKmach

ServiceNow MCP Server

by JLKmach

create_workflow

Create new workflows in ServiceNow to automate business processes and manage tasks efficiently.

Instructions

Create a new workflow in ServiceNow

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesName of the workflow
descriptionNoDescription of the workflow
tableNoTable the workflow applies to
activeNoWhether the workflow is active
attributesNoAdditional attributes for the workflow

Implementation Reference

  • The main handler function that implements the create_workflow tool logic, making a POST request to ServiceNow API to create a workflow.
    def create_workflow( auth_manager: AuthManager, server_config: ServerConfig, params: Dict[str, Any], ) -> Dict[str, Any]: """ Create a new workflow in ServiceNow. Args: auth_manager: Authentication manager server_config: Server configuration params: Parameters for creating a workflow Returns: Dict[str, Any]: Created workflow details """ # Unwrap parameters if needed params = _unwrap_params(params, CreateWorkflowParams) # Get the correct auth_manager and server_config try: auth_manager, server_config = _get_auth_and_config(auth_manager, server_config) except ValueError as e: logger.error(f"Error getting auth and config: {e}") return {"error": str(e)} # Validate required parameters if not params.get("name"): return {"error": "Workflow name is required"} # Prepare data for the API request data = { "name": params["name"], } if params.get("description"): data["description"] = params["description"] if params.get("table"): data["table"] = params["table"] if params.get("active") is not None: data["active"] = str(params["active"]).lower() if params.get("attributes"): # Add any additional attributes data.update(params["attributes"]) # Make the API request try: headers = auth_manager.get_headers() url = f"{server_config.instance_url}/api/now/table/wf_workflow" response = requests.post(url, headers=headers, json=data) response.raise_for_status() result = response.json() return { "workflow": result.get("result", {}), "message": "Workflow created successfully", } except requests.RequestException as e: logger.error(f"Error creating workflow: {e}") return {"error": str(e)} except Exception as e: logger.error(f"Unexpected error creating workflow: {e}") return {"error": str(e)}
  • Pydantic model defining the input parameters and validation schema for the create_workflow tool.
    class CreateWorkflowParams(BaseModel): """Parameters for creating a new workflow.""" name: str = Field(..., description="Name of the workflow") description: Optional[str] = Field(None, description="Description of the workflow") table: Optional[str] = Field(None, description="Table the workflow applies to") active: Optional[bool] = Field(True, description="Whether the workflow is active") attributes: Optional[Dict[str, Any]] = Field(None, description="Additional attributes for the workflow")
  • MCP tool registration in get_tool_definitions, mapping the tool name to its handler, schema, description, and serialization details.
    "create_workflow": ( create_workflow_tool, CreateWorkflowParams, str, # Expects JSON string "Create a new workflow in ServiceNow", "json_dict", # Tool returns Pydantic model ),
  • Import and exposure of create_workflow function in the tools package __init__, making it available for import.
    from servicenow_mcp.tools.workflow_tools import ( activate_workflow, add_workflow_activity, create_workflow, deactivate_workflow, delete_workflow_activity, get_workflow_activities, get_workflow_details, list_workflow_versions, list_workflows, reorder_workflow_activities, update_workflow, update_workflow_activity, )
  • Import alias for the create_workflow handler used in tool registration.
    create_workflow as create_workflow_tool,

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/JLKmach/servicenow-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server