ServiceNow MCP Demo — Incident Assistant
An end-to-end Model Context Protocol demo that connects Claude to ServiceNow Incident Management.
README
ServiceNow MCP Demo — Incident Assistant
An end-to-end Model Context Protocol demo that connects Claude to ServiceNow Incident Management. Built to showcase MCP fundamentals (servers, clients, tools, resources, stdio transport, agent loops) applied to a real ITSM workflow.
Architecture
┌─────────────────────────────┐ ┌──────────────────────────┐ ┌────────────────┐
│ Web Client (Streamlit) │ MCP │ MCP Server (FastMCP) │ REST │ ServiceNow │
│ - MCP host + client │◄──────►│ - create_incident │◄──────►│ Table API │
│ - Claude agent loop │ stdio │ - get_incident │ │ (or mock mode)│
│ - Incident cards in UI │JSON-RPC│ - list_recent_incidents │ │ │
│ │ │ - update_incident_state │ │ │
│ │ │ - resource: priority │ │ │
│ │ │ matrix reference │ │ │
└─────────────────────────────┘ └──────────────────────────┘ └────────────────┘
Flow for "my laptop won't boot, open a ticket":
- The web client sends your message to Claude along with the tool schemas it discovered from the MCP server at startup (
tools/list). - Claude decides to call
create_incidentwith inferred urgency/impact/category. - The client forwards the call over MCP (
tools/call); the server hits the ServiceNow Table API (or the in-memory mock). - The result flows back; Claude confirms the incident number; the UI renders an incident card.
Quick start
# 1. Create a virtual environment
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# 2. Install dependencies
pip install -r requirements.txt
# 3. Configure
cp .env.example .env # then edit: add your ANTHROPIC_API_KEY
# leave SERVICENOW_MODE=mock for a no-setup demo
# 4. Run the web client (it launches the MCP server automatically)
streamlit run client/app.py
Open http://localhost:8501 and try:
- "My laptop won't boot and I have a client demo in an hour — open a ticket."
- "Show me the 5 most recent incidents."
- "Move INC0010001 to In Progress with a work note that the tech is en route."
Live ServiceNow mode
- Request a free Personal Developer Instance (PDI) at https://developer.servicenow.com (takes ~2 minutes).
- In
.env, setSERVICENOW_MODE=liveand fill inSERVICENOW_INSTANCE,SERVICENOW_USER,SERVICENOW_PASSWORD. - Restart the app. Created incidents will appear in your PDI under Incident > All — great for showing the ticket in the real ServiceNow UI during the demo.
PDIs hibernate after inactivity. Wake yours up ~15 minutes before your interview, and keep
mockmode as a fallback.
Testing the server standalone (no UI)
The MCP Inspector is the fastest way to prove the server works on its own:
npx @modelcontextprotocol/inspector python server/servicenow_server.py
You can also add the server to Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"servicenow": {
"command": "python",
"args": ["/absolute/path/to/server/servicenow_server.py"]
}
}
}
Project layout
servicenow-mcp-demo/
├── server/servicenow_server.py # FastMCP server: 4 tools + 1 resource, mock/live backends
├── client/app.py # Streamlit web app: MCP client + Claude agent loop
├── requirements.txt
├── .env.example
├── PROJECT_PLAN.md # Phase-by-phase build plan and status
└── DEMO_SCRIPT.md # 5-minute recorded-demo script
MCP concepts demonstrated
- Server built with FastMCP: tools with typed parameters and docstring-driven schemas
- Resource (
servicenow://reference/priority-matrix) — read-only context, distinct from tools - stdio transport — client launches the server subprocess and speaks JSON-RPC
- Capability discovery — the client never hardcodes tools; it calls
tools/list - Agent loop — multi-round tool use with Claude until a final text answer
- Separation of concerns — the same server works with this web client, Claude Desktop, or MCP Inspector, unchanged
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.