- Post History
- Subscribe to RSS Feed
- Mark as New
- Mark as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
an hour ago - edited 7m ago
A practical guide for ServiceNow professionals who want to understand what MCP is, why it matters, and how to build with it today
By Vyoma Gajjar | Senior Principal AI Architect, CEG Autonomous Implementations CoE
Start here if you have no idea what MCP is
Imagine you need to use 20 different tools at work: ServiceNow for incidents, Microsoft Teams for chat, GitHub for code, SAP for ERP, Jira for project tracking. Each tool has its own login, its own API, its own way of talking to other systems.
Now imagine you hire an AI assistant. That assistant is brilliant at reasoning, but it cannot actually do anything. It cannot look up an incident. It cannot post in Teams. It cannot read your GitHub repo. Nobody built the connectors.
That is the problem MCP solves.
Model Context Protocol (MCP) is an open standard that gives AI models a universal way to connect to external tools and data.
Think of it like USB-C for AI. Before USB-C, every phone had a different charger. Before MCP, every AI model needed a different connector for every tool.
Why should a ServiceNow professional care?
Because ServiceNow is one of the enterprise systems that AI agents need to talk to most. And ServiceNow has already built native MCP support into the Zurich release.
Here is what changes:
❌ BEFORE MCP: Every AI vendor needs its own custom connector to your instance. Ten AI clients means ten separate integrations to build, authenticate, and maintain.
✅ AFTER MCP: You stand up one MCP server for your ServiceNow instance. Any AI client (Claude, ChatGPT, Cursor, Copilot) can discover your tools, understand what they do, and call them. One server, every client. Add a new tool, every connected client sees it automatically.
What MCP is NOT
| Misconception | Reality |
|---|---|
| "MCP replaces REST APIs" | MCP sits on top of REST. Your server calls ServiceNow Table API under the hood. MCP standardizes how AI agents discover and call those APIs. |
| "MCP is IntegrationHub" | IntegrationHub orchestrates workflows between systems. MCP gives AI agents a standardized way to invoke tools. Different problems, can work together. |
| "MCP is a chatbot framework" | MCP does not handle conversation flow or UI. It handles the connection layer between the AI model and the tools it needs. |
| "MCP is proprietary to Anthropic" | Created by Anthropic, donated to the Linux Foundation in December 2025. Governed by the Agentic AI Foundation, co-founded by Anthropic, Block, and OpenAI, with support from Google, Microsoft, AWS, Cloudflare, and Bloomberg. |
How MCP actually works
MCP has three components:
- Host is the AI application your user interacts with (Claude, ChatGPT, Cursor, a custom app). It contains the LLM and manages connections.
- Client lives inside the host. Each client maintains a dedicated, 1:1 connection to a single MCP server. One host can run many clients, each talking to a different server.
- Server is what you build. It exposes your ServiceNow capabilities to the AI. Servers do not run AI models. They serve context.
The connection uses either stdio (local) or Streamable HTTP (remote, replaces the earlier SSE transport). Security is built in: OAuth 2.1 with PKCE, least-privilege permissions, and human-in-the-loop consent.
The three primitives
| Primitive | What it does | ServiceNow example |
|---|---|---|
| Resources | Read-only data (like GET). Can also be subscribed to for live updates. | Fetch an incident record, retrieve a KB article |
| Tools | Take action (like POST). Can trigger human-in-the-loop approval before executing sensitive actions. | Create a P1 incident, modify a CMDB CI, migrate an update set |
| Prompts | Guide model reasoning with reusable templates | Triage prompt: check problems, check CIs, recommend assignment group |
What ServiceNow is doing with MCP
The Zurich release brings native MCP support. ServiceNow is now both a consumer (connecting to external tools) and a provider (exposing capabilities to external AI agents).
| Capability | What it does |
|---|---|
| MCP Server Console | Native admin interface in AI Agent Studio. Create servers, attach Now Assist Skills as tools, manage auth, publish. |
| AI Agent Fabric | MCP client support. Now Assist AI Agents connect to external MCP servers for best-of-breed tools. |
| A2A Protocol | Now Assist agents collaborate with external agents from other vendors (like Google Vertex). Federated token auth is supported. |
| AI Control Tower | Governance, policy enforcement, observability, and audit trails across all agents. |
The 3-layer agentic stack
Layer 1: MCP connects agents to tools, databases, and APIs.
Created by Anthropic (Nov 2024). 97M+ monthly SDK downloads as of Dec 2025.
Layer 2: A2A (Agent-to-Agent) lets agents discover, delegate to, and collaborate with other agents.
Created by Google (Apr 2025). 100+ enterprise supporters including ServiceNow.
Layer 3: WebMCP enables interactive UI components rendered directly in chat.
Chrome 146 Canary reportedly shipped built-in support (Feb 2026, per industry analysis).
All three governed by the Agentic AI Foundation (Linux Foundation), co-founded by Anthropic, Block, and OpenAI, with support from Google, Microsoft, AWS, Cloudflare, and Bloomberg.
Build your own MCP server: three paths
Path A: Standalone Python (FastMCP)
Best for: custom tools, any ServiceNow version, any LLM client. Requires Python 3.10+.
Install:
pip install fastmcp
Write server.py
import os
from fastmcp import FastMCP
# If using the MCP SDK bundled version instead:
# from mcp.server.fastmcp import FastMCP
SN_URL = os.environ["SN_URL"] # https://your-instance.service-now.com
USER = os.environ["SN_USER"] # your username
PASS = os.environ["SN_PASS"] # your password
mcp = FastMCP("ServiceNow Tools")
@mcp.tool()
def get_incident(number: str) -> str:
"""Fetch incident from ServiceNow by number"""
import requests
url = f"{SN_URL}/api/now/table/incident"
r = requests.get(url,
params={"sysparm_query": f"number={number}",
"sysparm_limit": "1"},
auth=(USER, PASS))
return r.json()["result"][0]
Set environment variables and run
export SN_URL=https://your-instance.service-now.com export SN_USER=admin export SN_PASS=your-password fastmcp run server.py # Starts on http://localhost:8000/mcp
Connect a client:
This requires Claude Code (npm install -g @anthropic-ai/claude-code). For Claude Desktop, add the server in claude_desktop_config.json instead.
claude mcp add my-sn-server -- fastmcp run server.py
Debug
fastmcp dev launches your server with hot-reload. To open the visual MCP Inspector, run npx @modelcontextprotocol/inspector in a separate terminal and connect to your running server.
The three decorators: @mcp.tool() for actions, @mcp.resource() for read-only data, @mcp.prompt() for guided workflows.
fastmcp dev server.py
Path B: Zurich MCP Server Console (Native)
Best for: Zurich+ instances with Now Assist SKU. Governed and auditable out of the box.
Prerequisites: Zurich (Patch 4+), Now Assist SKU, sn_mcp_server plugin.
Steps:
- Open the MCP Server Console. A quickstart server is already available out of the box.
- Create a new server (or use the quickstart) and set authentication. OAuth is currently the only option. OAuth 2.1 is on the roadmap.
- Add Now Assist Skills as tools. Skills must already be built and published via Now Assist Skill Kit (NASK). You cannot create tools from scratch in the MCP Server Console.
- Publish. External clients can now discover and call your tools.
What the MCP Server Console gives you that DIY does not: AI Control Tower governance, built-in observability, consumption metering, managed OAuth, automatic tool discovery, session management, enterprise audit trail.
Good to know: The MCP Server Console exposes Now Assist Skills as tools. Custom scripts and flows are not directly exposed, but there is a workaround: add your script or flow as a tool inside a Skill, then expose that Skill via MCP. Flows, Knowledge Graph, and Scripted REST APIs as first-class tool types are on the roadmap.
Path C: Community Open-Source (Fastest Start)
Best for: PoC, older ServiceNow versions, or when you need custom table access.
# No install needed. uvx downloads and runs it automatically. claude mcp add servicenow -- uvx mcp-server-servicenow \ --instance-url https://your-pdi.service-now.com \ --auth-type basic --username admin --password your-password
One command. 18 tools out of the box: table CRUD, CMDB ops, system tools, update set management. Built on FastMCP 3.0 + Streamable HTTP + OAuth 2.1.
Note for SSO users: If your instance enforces SSO and disables basic auth (most production instances do), basic credentials will not work. Register an OAuth application in System OAuth > Application Registry and use: --auth-type oauth --client-id YOUR_ID --client-secret YOUR_SECRET --token-url https://your-instance.service-now.com/oauth_token.do. For dev/test only, a local service account with basic auth is acceptable. Do not use basic auth against production.
Which path should you pick?
| Your situation | Pick this |
|---|---|
| On Zurich+ with Now Assist | Path B for governance and audit |
| Older version or no entitlement | Path C for instant start, Path A for full control |
| Need custom table access | Path A or C for direct access, or Path B by wrapping scripts/flows inside a Skill |
| SSO-enforced production instance | Path A or C with OAuth (register app in System OAuth > Application Registry) |
| Want to use any LLM | All three work with any MCP client |
Testing and debugging
MCP Inspector is the official visual debugging tool.
# Terminal 1: start server with hot-reload fastmcp dev server.py # Terminal 2: launch visual inspector npx @modelcontextprotocol/inspector
In Claude Code, check your connection:
claude mcp add my-server -- fastmcp run server.py /mcp
Ask: "List the 5 most recent incidents." If it returns data, you are connected.
Common issues
| Problem | Fix |
|---|---|
| Stdout corruption | Never print() in stdio servers. Use print(..., file=sys.stderr) or logging.info() |
| Tools not showing | Check server URL, tools attached + active, auth scope includes tool discovery |
| Session expiry (SN native) | Known issue: sessions expire after limited time. Check sn_mcp_client_server_session_mapping table |
| SSO-enforced instance, basic auth fails | Basic auth is disabled when SSO is active. Register an OAuth app in System OAuth > Application Registry and use OAuth client credentials. Or create a local service account for dev/test only. |
| PDI hibernating | Wake it at developer.servicenow.com. Click your instance > Wake Up. Takes about 2 minutes. |
Security
Your MCP server is an API. Treat it with the same security rigor you would apply to any public-facing REST endpoint. The fact that an AI is calling it makes security more important, not less.
Authentication: OAuth 2.1 with PKCE for all remote servers (full OAuth 2.1 support is on the roadmap for the SN native MCP Server Console; OAuth is currently supported). Short-lived access tokens, recommended 15 to 60 minutes. Never log tokens or expose them to the UI or LLM. Use ServiceNow ACLs for per-user permissions.
Operational safety: Start read-only. Add write ops only with approval workflows. Log every tool call. Rate limit to prevent runaway agent loops. Write semantic tool descriptions because vague descriptions cause hallucination risk.
Resources
| Resource | Where |
|---|---|
| Official MCP docs | modelcontextprotocol.io |
| FastMCP 3.0 | gofastmcp.com |
| Python SDK | github.com/modelcontextprotocol/python-sdk |
| Pre-built SN server (18 tools) | github.com/jschuller/mcp-server-servicenow |
| MCP Inspector | npx @modelcontextprotocol/inspector |
| Project scaffold | uvx create-mcp-server |
| SN MCP Community FAQ | ServiceNow Community: MCP and A2A FAQs |
Three takeaways
1. The era of bespoke REST connectors is ending. MCP standardizes what used to take months into days. Over 1,000 pre-built servers available today.
2. Your new mandate is Context Engineering. The systematic design of the semantic information you provide to AI models. How you describe your tools matters as much as what they do.
3. The skills we build today become MCP-exposed tools tomorrow.
Fastest path to a working demo: Get a free PDI at developer.servicenow.com. Run claude mcp add servicenow -- uvx mcp-server-servicenow --instance-url https://your-pdi.service-now.com --auth-type basic --username admin --password your-password. Ask Claude to list your incidents. You are live.
Sources: MCP Specification (2025-11-25), Anthropic AAIF announcement (Dec 2025), Official MCP 2026 Roadmap (Mar 9, 2026), ServiceNow Community MCP Server Console docs (Jan 2026), ServiceNow Community MCP/A2A FAQ (Zurich Patch 4), FastMCP 3.0 release (Jan 19, 2026), MCP Python SDK, MCP security research (Apr 2025), Red Hat MCP security guide (Mar 2026). Full fact-check report available on request.
This article is part of a series from the AI Center of Excellence (CoE) team at ServiceNow. We work directly with enterprise customers to close the gap between AI licensing and realized value. If your team is navigating activation, reach out or drop a comment below with your biggest blocker. We read every one.
- 119 Views
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi @Vyoma - Thanks for this wonderful article and I am going through this. Infact, have some question, will mail you
