Showing posts with label MCP. Show all posts
Showing posts with label MCP. Show all posts

Tuesday, August 11, 2026

Action Fabric & MCP on ServiceNow: Integration Layer for AI Agents (Chapter 5)

Action Fabric & MCP on ServiceNow: Integration Layer for AI Agents

This is Chapter 5 in a series walking through ServiceNow's AI stack from the ground up. Chapter 4 covered agents — goal-driven systems that decide their own sequence of tool calls. This chapter covers the layer underneath that: how those tools actually get exposed and called in the first place. That's Action Fabric and MCP (Model Context Protocol), and it's the layer where an agent stops being a conceptual diagram and starts being something with real, executable access to your instance.

This chapter ends with a real hands-on finding from testing a community MCP server against a PDI — not a hypothetical risk, but something that actually happened during testing.

1. MCP vs. REST — the Same Integration, Built Two Ways

The clearest way to understand MCP is to see the same integration task built the traditional way and the MCP way, side by side.

Task: let an external AI tool look up and update incident records.

Built as a traditional REST integration:

GET  /api/now/table/incident?sysparm_query=number=INC0010001
PATCH /api/now/table/incident/{sys_id}
      Body: { "state": "6", "close_notes": "Resolved via automation" }

Here, the external system needs to know the table API shape, the correct sys_id lookup pattern, and the exact field names and value mappings (state 6 = Resolved) in advance. Every capability it has is whatever the integrating developer explicitly wired up and documented. An AI model consuming this would need those specifics fed into its context as documentation or examples every time.

Built as an MCP server:

Tool: get_incident(number: string) → returns incident record
Tool: resolve_incident(number: string, notes: string) → sets state to
      Resolved and applies notes

Description exposed to the model: "resolve_incident: Marks the given
incident as Resolved with the provided close notes. Use this only after
confirming the underlying issue is fixed."

The MCP server does the translation work — the model never sees a raw table API or a state code. It sees a named, described action and calls it with plain arguments. This is the actual value proposition: MCP standardizes how a model discovers and invokes capabilities, so the same model can work against ServiceNow, a ticketing tool, and a monitoring platform through the same protocol shape, rather than needing bespoke integration knowledge baked into its prompt for each one.

What to actually learn: MCP isn't a replacement for REST underneath — most MCP servers call REST APIs internally, this one included. What MCP replaces is the need to hand-document and hand-feed API specifics into a model's context every time. The tradeoff, covered next, is that the server now decides on the model's behalf what's "safe" to expose as a callable action — and that decision can be wrong.

2. How Action Fabric Exposes Capabilities

Action Fabric is ServiceNow's own layer for defining what capabilities are callable by agents and external tools — conceptually similar to the MCP tool definitions above, but native to the platform and integrated with its role and ACL model rather than sitting outside it.

Example — one action defined and called:

  • Define the action's inputs and outputs explicitly — for a "resolve incident" action, that's an incident number in, a success/failure status and updated record out. No open-ended access to arbitrary tables.
  • Attach the action to a scoped role, the same discipline from Chapter 1 and Chapter 4 — the account executing this action should have exactly enough access to resolve incidents, not general write access to the incident table.
  • Write the action's description for the consuming agent, not for a developer reading the code — this is the same lesson from Chapter 4's tool-scoping discussion, because Action Fabric actions and Agent Studio tools are ultimately the same kind of artifact wearing different names.
  • Test the action being called with an invalid or already-resolved incident number before trusting it inside an agent's tool set — the failure behavior here becomes the agent's problem to reason about once it's live.

What to actually learn: Action Fabric and MCP are solving the same underlying problem — giving a model a well-defined, well-scoped action instead of raw API access — from two different directions. Action Fabric is ServiceNow-native and governed by the platform's own role model; MCP is protocol-level and platform-agnostic, meant to work the same way regardless of what system sits behind it.

3. Hands-On Caution: a Real Finding From Testing an MCP Server Against a PDI

Everything above is the theory. Here's what actually happened testing a community MCP server — nowaikit — connecting Claude Code to a ServiceNow PDI inside GitHub Codespaces.

Finding 1 — write operations executed without confirmation prompts. Section 2 above described a well-designed action model as one where the exposed action's description and scope are deliberate, tested guardrails. In this hands-on test, that guardrail was missing at the point that matters most: when the connected AI tool issued a write operation against the PDI, it went through directly, with no confirmation step in between the model's decision and the actual change landing on the instance. This is precisely the failure mode Chapter 4 warned about in the abstract — an agent composing its own action sequence is only as safe as the friction (or lack of it) between "the model decided to do this" and "this actually happened." A missing confirmation step removes that friction entirely.

Finding 2 — a hidden local dependency. nowaikit's slash-commands required a local Ollama instance running separately from Claude Code itself. This is a practical, easy-to-miss setup gap: the MCP server's advertised capabilities weren't fully available through Claude Code alone, and the dependency wasn't obvious until testing the slash-commands specifically. Worth calling out because it's exactly the kind of gap that "reading the documentation" doesn't always surface — it surfaces from actually running the thing.

What to actually learn: before connecting any community MCP server to an instance that matters — even a PDI — test write operations specifically and deliberately, with data you can afford to lose, and confirm whether a confirmation/approval step exists before the server can execute a change. Don't assume it does just because a well-designed system in principle would have one. And separately, budget testing time for a server's full advertised feature set, including anything gated behind local tooling that isn't part of the core install.

Checkpoint Before Moving to Chapter 6

You should be able to: explain what MCP standardizes versus what it doesn't, using the get_incident/resolve_incident example rather than protocol jargon; define an Action Fabric action with a properly scoped role and a description written for the consuming agent, not a developer; and — most importantly — know to test any new MCP server's write behavior explicitly before trusting it near real data, because "it should have a confirmation step" is a design assumption, not a verified fact. Chapter 6 takes this same skepticism and applies it at the governance level — data residency, licensing, audit trails, and the infrastructure underneath all of it.

Next in this series: Chapter 6 — Governance & Platform Impact, including a data-residency decision tree and how AI-generated changes actually show up in the audit log.

Sunday, August 02, 2026

ServiceNow + AI: A Beginner's Learning Path (From Now Assist to Agent Studio and MCP)

ServiceNow + AI

Every few weeks someone asks a version of the same question: "I know ITSM, I know the platform — where do I even start with the AI stuff?" Fair question. ServiceNow's AI surface area has grown fast — Now Assist, Now Assist for Creator, Agent Studio, Otto, Build Agent, Action Fabric, MCP — and none of it comes with a map.

This guide lays out the sequence worth following, staged so each layer builds on the one before it — including where beginners typically go wrong by skipping straight to the parts that are trending.

1. Platform Fundamentals: Build the Base First

Skip this at your own risk. Every AI feature described below depends on it, and grounding quality for AI features is only ever as good as the underlying platform data.

What to Learn

  • Data model & CMDB basics — tables, records, relationships.
  • Flow Designer / Workflow basics — most Now Assist and agentic features hook into flows somewhere.
  • ACLs and roles — AI agents inherit the platform's permission model, so understand it before an agent starts acting on your behalf.
  • Basic scripting (GlideRecord, GlideAjax) — not mastery, just enough to read what a script include or business rule is actually doing.

Checkpoint: you should be able to navigate Studio, read a flow end-to-end, and explain what a table relationship means without looking it up. Roughly 2–3 weeks for someone new to the platform.

2. Now Assist as a Consumer: Learn What It Feels Like First

Now Assist is ServiceNow's packaged Gen AI layer — the "use it" layer, before the "build it" layer.

What to Learn

  • What Skill Kits are, and how Now Assist is licensed and enabled per module (ITSM, CSM, HR, and so on).
  • Core features: case/incident summarization, resolution notes generation, Virtual Agent conversational AI.
  • Where it sits in existing workflows — it augments the case lifecycle, it doesn't replace it.
  • If you have PDI access, try it hands-on — summarize a test incident and see what the output actually looks like.

Checkpoint: you can describe, in plain language, what a business user experiences when Now Assist is turned on for their module. Roughly 1–2 weeks.

3. Now Assist for Creator: Start Building With AI, Not Just Using It

This is the low-code building layer — where developers start using AI to build, not just consuming AI-generated output.

What to Learn

  • Text-to-Flow — generating flow logic from a natural language description.
  • Text-to-Code — generating script includes or business rules from a prompt.
  • Generative actions inside Flow Designer.
  • Where generated output still needs human review — treat it like a junior developer's first draft, not a finished artifact.

Checkpoint: build one small flow or script using a Creator AI feature, then review and correct its output yourself before deploying anywhere real. Roughly 2–3 weeks.

4. Agentic AI: Otto, Agent Studio, and Build Agent

This is the newer, architecturally different layer, and it's where most beginner confusion actually happens — slow down here rather than rushing through it.

What to Learn

  • What "AI Agent" actually means in ServiceNow's framework — goal-driven, tool-using, distinct from a scripted chatbot.
  • Agent Studio — orchestrating multiple agents, defining the tools and actions an agent is allowed to call.
  • Build Agent — developer-assist agents built around spec-to-code type workflows.
  • Otto — where it fits into the broader agentic positioning; worth tracking closely since this is actively evolving.

Checkpoint: you can explain the conceptual difference between "a flow with an AI step in it" and "an agent with tools and a goal." Roughly 3–4 weeks.

5. Action Fabric & MCP: The Integration Layer Underneath the Agents

This is the plumbing layer connecting ServiceNow's agents to external tools and models.

What to Learn

  • Conceptual understanding of Model Context Protocol (MCP) — how it differs from a traditional REST integration.
  • How Action Fabric exposes ServiceNow capabilities as callable actions.
  • If going hands-on with community MCP servers connecting external AI tools to a PDI: go in with eyes open about write operations executing without confirmation prompts, and any local dependencies certain slash-commands may require.

Checkpoint: explain, to a non-technical stakeholder, what MCP actually does — in one sentence. Roughly 2–3 weeks.

6. Governance & Platform Impact: The Part Beginners Skip

Often skipped by beginners — shouldn't be, especially in enterprise or multi-instance environments. This one runs in parallel to everything above rather than as a final step.

What to Learn

  • Data residency — where AI processing actually happens (your tenant vs. shared infrastructure).
  • License and consumption model impact of enabling AI features across modules.
  • How generative outputs interact with existing approval and audit trails.
  • Infrastructure dependencies underneath it all — platform performance under growing AI workload is a real constraint, not a footnote.

Checkpoint: be the person in the room who asks "where does this data actually go?" before rollout, not after.

Suggested Pacing

Total: roughly 10–15 weeks for someone working through this alongside a day job, assuming a few hours of PDI time each week.

Stage Time Prerequisite
1. Platform Fundamentals 2–3 weeks None
2. Now Assist (Consumer) 1–2 weeks Stage 1
3. Now Assist for Creator 2–3 weeks Stage 2
4. Agentic AI (Otto / Agent Studio / Build Agent) 3–4 weeks Stage 3
5. Action Fabric / MCP 2–3 weeks Stage 4
6. Governance Ongoing Parallel to all stages

Final Thoughts

The biggest mistake beginners make is jumping straight to Agent Studio or MCP because that's what's trending, without the fundamentals underneath. It creates confusion about what's actually happening on the platform versus what's marketing language.

Build the base first. The AI layer makes a lot more sense once you can see what it's standing on — and the governance questions in the final stage aren't really beginner topics either, in the same way that picking the right integration pattern isn't. They're the questions that only start to matter once you're operating this at real scale, not just standing up your first agent in a PDI.

Wednesday, July 29, 2026

Connecting Claude to ServiceNow: A Hands-On MCP Build Log

Connecting Claude to ServiceNow

My last post walked through what ServiceNow Otto and EmployeeWorks actually are, conceptually. This one is different — no keynote summaries, no vendor framing. I connected a real AI client to a real ServiceNow PDI over MCP (Model Context Protocol) and just tried things. Some of it worked cleanly. One assumption I'd made going in turned out to be wrong. That gap between "what the docs imply" and "what actually happens" is the whole point of this post.

If you're a developer sitting where I was — comfortable with ServiceNow, new to MCP — this is the walkthrough I wish I'd had.

A framing note before you read on: what follows is not a test of Otto or EmployeeWorks. Those are ServiceNow's own products, tied to specific releases and licensing, and not something you can spin up on a free PDI. What I actually connected was a third-party, community-built MCP server (nowaikit) talking to my instance over ServiceNow's REST APIs — no Action Fabric, no AI Control Tower, none of ServiceNow's own governance in the loop. Why bother, then? Because the shape of the interaction — an external AI agent asking questions and taking actions against ServiceNow data — is the same shape Action Fabric is built to govern. This post is a look at what that pattern does without any governance wrapper around it, as a baseline for comparing against the real, native version later.

1. The Setup: Isolated, Not on My Local Machine

I didn't want to install anything globally on my work laptop for a first test, so I ran the whole thing inside a GitHub Codespace — a disposable, browser-based Linux container. Nothing here ever touched my local environment.

The stack, in order

  • A free Personal Developer Instance (PDI) from developer.servicenow.com — pre-loaded with demo incidents, CMDB CIs, and users.
  • A GitHub Codespace as the sandbox (note: Codespaces won't launch against a completely empty repo — commit at least a README first, or tick "Add a README" at repo creation).
  • Claude Code, installed inside the Codespace as the AI client (npm install -g @anthropic-ai/claude-code).
  • nowaikit, a community MCP server for ServiceNow (npm install -g nowaikit, then npx nowaikit setup), which auto-detected Claude Code and wrote the connection config for me.

The only real hiccup: the setup wizard hung for a bit right after I entered the instance name, with no prompt for credentials yet. Turned out my PDI hadn't been accessed in a while and needed a moment to wake from hibernation — worth checking if you hit the same pause.

2. First Contact: What's Actually Exposed

Once connected, I asked Claude Code directly what tools it had available for ServiceNow. I expected a handful of simple read operations — get incident, list incidents, that kind of thing. What came back was different: 27 capabilities, grouped into five categories — Scan & Monitor, Review & Audit, Build & Generate, Operations, and Documentation. Slash-commands like /scan-cmdb, /review-acls, and /build-flow — this tool is leaning toward developer and governance tooling, not just a conversational query layer.

And separately — the tool also handled plain natural-language questions outside that named list. Asking "list my 5 most recent incidents" returned real data cleanly, with no slash-command needed. Two distinct capability layers stacked in the same tool, which isn't obvious until you actually poke at it.

3. Where the Slash-Commands Broke — Honestly

I tried /scan-cmdb next, expecting an AI-generated CMDB health report. It failed with two distinct errors:

  • "No instance specified and no default instance configured. Run nowaikit setup first." — odd, since setup had already run successfully for the natural-language path.
  • "Ollama not available."

That second one is the more architecturally interesting finding: the slash-commands aren't just querying data, they're running their own local AI reasoning step to generate the report — and they expect a local Ollama model for that, entirely separate from the Claude Code session already running. So even inside an active AI chat, this tool doesn't reuse that model for its own scan logic; it wants its own.

What impressed me here wasn't the scan succeeding — it didn't. It's that Claude Code, when the built-in scan failed, fell back to pulling the raw CMDB data directly from the instance and gave me an honest partial answer (CI records present, relationship records present, a few sample CI names) instead of pretending the scan had completed. Worth noting as a good behavior, not a given one.

4. The Write Test — Where My Assumption Was Wrong

Going into this, I expected community MCP tools to default to read-only, requiring an explicit opt-in flag before any write reached the instance. That's a reasonable design default, and it's what several tools in this space advertise. So I asked, in plain language: "Create a test incident."

It just did it. No confirmation prompt. No "are you sure." No opt-in flag to enable first. The response came back as:

Created a test incident in ServiceNow — number INC0010001, short description "Test incident created by Copilot".

Two things stood out immediately. First, the write executed instantly, no gate at all — a meaningfully different safety posture than I'd assumed going in, and worth correcting plainly rather than glossing over. Second, and almost funnier: the short description read "Test incident created by Copilot" — not Claude, not nowaikit. Almost certainly a hardcoded default string left over in the tool's template from wherever it was originally built or copied from, rather than content actually generated from my request. A small detail, but a telling one: the write executed a canned template rather than reasoning about what to write.

5. Why This Matters More Than It Looks Like It Does

It's easy to read the above as "a demo tool did a demo thing on a demo instance, who cares." But it's worth being precise about what this does and doesn't demonstrate. It's not a flaw in Otto, EmployeeWorks, or Action Fabric — none of those were involved here. What it does demonstrate is exactly the baseline risk ServiceNow's own AI Control Tower materials describe as the reason that governance layer exists: an ungoverned agent operating with more autonomy than intended, no confirmation step, and — this is the part worth sitting with — no clearly attributable audit trail. If the "opened by" field on that incident shows a generic admin user rather than something identifying the AI agent that created it, that's the exact gap a governed setup is designed to close.

That's the actual test I want to run next: the same kind of request, but through ServiceNow's native MCP Server Console with real AI Control Tower governance attached — the genuine Action Fabric experience, not a community stand-in for it. My prediction, to be tested rather than assumed: a governed write should require an explicit permission grant, log the agent identity distinctly from the human operator, and show up in an auditable trail — none of which this community setup gave me by default.

6. If You Want to Try This Yourself

None of this requires a production instance, a ServiceNow AI license, or much time — a free PDI and an afternoon is genuinely enough. A few things worth doing differently than I did, based on what surprised me:

Lessons for your own testing

  • Use a disposable environment (Codespace, Gitpod, or similar) for a first test rather than a global local install, especially on a managed work laptop.
  • Don't assume "read-only by default" for any community MCP tool — verify it yourself, on a PDI, before trusting it near anything that matters.
  • Be deliberate with instruction-style phrasing ("create," "update," "delete") until you've mapped out what actually executes without confirmation.
  • Treat slash-command failures as information, not dead ends — the fallback behavior often tells you more about the tool's real architecture than a clean success would.

Final Thoughts

The gap between reading about MCP and actually connecting an AI agent to a live ServiceNow instance is smaller than I expected — a free PDI and an afternoon gets you a working setup, no ServiceNow product required. But the gap between "it works" and "it's safe to point at production" is exactly as real as the governance conversation around Otto and Action Fabric suggested it would be — this was the ungoverned baseline, not the real thing.

The wrong assumption I walked in with — that a community tool would default to read-only — is exactly the kind of thing you only find by actually running the test, not by reading a README. That's really the point of this whole series: understanding what Otto and Action Fabric are is one skill; knowing what happens when the guardrails aren't there is a different one, and it's the one that actually protects a production instance. The next post picks up from here: the same test, run through ServiceNow's actual governed Action Fabric setup, to see how much of what I found today gets caught.