Skip to main content
Glama
JLKmach

ServiceNow MCP Server

by JLKmach

publish_article

Publish a knowledge article in ServiceNow by setting its workflow state to make it available to users.

Instructions

Publish a knowledge article

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
article_idYesID of the article to publish
workflow_stateNoThe workflow state to setpublished
workflow_versionNoThe workflow version to use

Implementation Reference

  • The main handler function that executes the publish_article tool logic by sending a PATCH request to the ServiceNow kb_knowledge table to update the workflow_state.
    def publish_article( config: ServerConfig, auth_manager: AuthManager, params: PublishArticleParams, ) -> ArticleResponse: """ Publish a knowledge article. Args: config: Server configuration. auth_manager: Authentication manager. params: Parameters for publishing the article. Returns: Response with the published article details. """ api_url = f"{config.api_url}/table/kb_knowledge/{params.article_id}" # Build request data data = { "workflow_state": params.workflow_state, } if params.workflow_version: data["workflow_version"] = params.workflow_version # Make request try: response = requests.patch( api_url, json=data, headers=auth_manager.get_headers(), timeout=config.timeout, ) response.raise_for_status() result = response.json().get("result", {}) return ArticleResponse( success=True, message="Article published successfully", article_id=params.article_id, article_title=result.get("short_description"), workflow_state=result.get("workflow_state"), ) except requests.RequestException as e: logger.error(f"Failed to publish article: {e}") return ArticleResponse( success=False, message=f"Failed to publish article: {str(e)}", )
  • Pydantic BaseModel defining the input parameters for the publish_article tool.
    class PublishArticleParams(BaseModel): """Parameters for publishing a knowledge article.""" article_id: str = Field(..., description="ID of the article to publish") workflow_state: Optional[str] = Field("published", description="The workflow state to set") workflow_version: Optional[str] = Field(None, description="The workflow version to use")
  • The entry in get_tool_definitions() that registers the publish_article tool with its handler function alias, input schema, return type hint, description, and serialization method for the MCP server.
    "publish_article": ( publish_article_tool, PublishArticleParams, str, # Expects JSON string "Publish a knowledge article", "json_dict", # Tool returns Pydantic model ),
  • Export of the publish_article function in tools/__init__.py for easy import.
    publish_article,

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