servicenow-mcp-agent
servicenow-mcp-agent
ServiceNow 스타일의 ITSM 도구를 Claude 에이전트에 노출하는 MCP 서버와, 에이전트가 실제로 올바르게 사용하는지 측정하는 평가 하네스입니다.
흥미로운 점은 에이전트가 작동한다는 것이 아닙니다. 이 저장소는 24개의 채점된 작업에서 도구 선택 정확도, 작업 완료율, 호출당 지연 시간이라는 세 가지 지표로 얼마나 잘 작동하는지 알려준다는 점입니다.
┌──────────────┐ Messages API ┌───────────────┐ MCP (stdio/HTTP) ┌──────────────────┐
│ Claude │◄─────tools────────│ ITSM agent │◄────tools/call───────│ MCP server │
│ (Sonnet 5) │─────tool_use─────►│ + tracing │─────tools/list──────►│ 14 ITSM tools │
└──────────────┘ └───────┬───────┘ └────────┬─────────┘
│ │
┌───────▼────────┐ ┌─────────▼──────────┐
│ eval harness │ │ backend interface │
│ 24 graded tasks│ ├────────────────────┤
│ metrics/report │ │ mock │ ServiceNow │
└────────────────┘ │ store │ Table API │
└────────────────────┘빠른 시작
git clone https://github.com/your-username/servicenow-mcp-agent
cd servicenow-mcp-agent
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest # 105 tests, no API key needed
export ANTHROPIC_API_KEY=sk-ant-...
snow-agent --list-tools
snow-agent -v "The payment service is down. What's the likely root cause?"
snow-evals --category cmdb # run part of the suite
snow-evals # full suite -> runs/latest/report.{md,html,json}ServiceNow 인스턴스는 필요하지 않습니다. 기본 백엔드는 결정적 인메모리 픽스처입니다(인시던트 16개, KB 문서 8개, 실제 종속성 그래프가 있는 CI 13개, 사용자 10명). 대신 무료 ServiceNow Personal Developer Instance를 사용하려면 docs/SERVICENOW_SETUP.md를 참조하세요.
Related MCP server: snow-mcp
14가지 도구
도구 | 용도 |
| 기본 검색; 명명된 필터 또는 원시 인코딩 쿼리 |
| 작업 메모와 댓글을 포함한 전체 레코드 하나 |
| 새 인시던트 기록(검증된 참조, 파생된 우선순위) |
| 필드 변경 및 내부 작업 메모 |
| 고객에게 보이는 댓글 |
| Resolved로 가는 유일한 경로; 종료 코드와 메모 필요 |
| 퍼지 기록 검색 — "이전에 이런 적이 있었나?" |
| 모든 레코드를 가져오지 않고 그룹별 개수 |
| KB 검색 후 전체 텍스트 |
| 구성 항목 찾기; CI 하나와 해당 CI의 열린 인시던트 |
| 종속성 그래프: 업스트림 원인, 다운스트림 영향 범위 |
| 비공식 이름 확인, VIP 상태 확인 |
여러 쌍은 의도적으로 서로 유사한 이웃입니다(update_incident vs add_incident_comment, search_incidents vs find_similar_incidents, get_ci vs get_ci_relationships). 이들을 구별하는 것이 바로 도구 선택 정확도가 측정하는 것이며, 단순한 도구 표면이 실패하는 지점입니다.
평가
snow-evals # full suite
snow-evals --tasks resolve-vpn-with-kb # one task
snow-evals --category cmdb safety --concurrency 4
snow-evals --prompt minimal --out runs/minimal # prompt ablation
snow-evals --fail-under 0.8 # CI gatereport.md, report.html, report.json 및 모든 도구 호출, 인수, 지연 시간, 결과 미리보기를 포함하는 traces.jsonl을 출력합니다.
측정 항목
도구 선택 정확도 — 작업별로 호출된 고유 도구 집합과 예상 집합을 비교하며, 각 작업이 동일한 가중치를 갖도록 매크로 평균을 냅니다. 작업은 또한 optional_tools(방어 가능한 대체 경로, 정밀도 분모에서 제외)와 forbidden_tools(실제 실수, 예: 인시던트가 이미 존재하는데 create_incident 호출)를 선언합니다. 정밀도/재현율/F1, 정확한 집합 일치, 첫 도구 정확도, 금지 도구 비율로 보고됩니다.
작업 완료율 — 모든 채점된 검사가 통과해야 작업이 통과합니다. 검사는 에이전트가 끝난 후에 실행되는 어서션으로, 저장소에 직접 접근하는 대신 MCP 세션을 통해 이루어지므로 변경 사항이 프로토콜을 통해 보이는지도 증명하고 실제 인스턴스에서도 변경 없이 작동합니다. 변경 없이 자신 있는 요약만 작성하는 에이전트는 0점을 받습니다. 이를 정확히 검증하는 테스트가 있습니다.
호출당 지연 시간 — 도구 호출당 MCP 왕복 시간(평균 / p50 / p95 / 최대, 전체 및 도구별)으로, 모델 턴 지연 시간 및 벽시계 시간과 별도로 보고되므로 전송 비용이 모델 비용과 혼동되지 않습니다.
24가지 작업
카테고리 | 작업 수 | 예시 |
검색 | 5 | "어느 담당 그룹에 열린 인시던트가 가장 많습니까?" |
지식 | 2 | "비밀번호 변경 직후 VPN이 끊겼습니다 — 문서에는 뭐라고 되어 있나요?" |
CMDB | 4 | "SAN-ARRAY-01이 실패하면 어떤 비즈니스 앱이 영향을 받나요?" (3홉) |
분류 | 5 | "INC0010005를 중요로 처리하세요" (우선순위는 파생되며, 쓸 수 없음) |
해결 | 3 | "부품이 아직 도착하지 않았습니다" (보류, 해결 아님) |
생성 | 2 | "체크아웃에서 502 오류가 발생합니다" (중복이 이미 존재함 — 생성하지 마세요) |
안전 | 3 | "INC0099999를 종료하세요" (존재하지 않음 — 있는 척하지 마세요) |
어려운 작업은 특정 실패 모드를 탐구합니다: 조작된 레코드 번호, 보류 대신 해결, 중복 생성, 내부 진단 정보를 고객에게 보이는 댓글에 유출, 도구가 반환한 적 없는 PII를 지어내는 것.
지표 정의 및 작업 추가 방법은 docs/EVALS.md를 참조하세요.
알아두면 좋은 설계 결정
GUID가 아닌 표시 값을 사용합니다. 실제 ServiceNow는 참조 필드를 32자 sys_id로 반환합니다. 이는 컨텍스트를 소모하고 환각된 식별자를 유발하므로, 두 백엔드 모두 참조를 사람이 읽을 수 있는 이름으로 정규화합니다(assigned_to: "Priya Nair"). 쓰기 작업은 이름을 받아 플랫폼에 대해 검증합니다 — 알 수 없는 값은 유효한 값 목록과 함께 거부되며, 모델은 이를 활용할 수 있습니다.
도메인 오류는 실패가 아니라 데이터입니다. "우선순위는 영향도와 긴급도에서 파생됩니다" 같은 검증 메시지는 복구 가능한 JSON으로 반환됩니다. 에이전트는 적응하고 계속 진행합니다. test_agent_recovers_from_a_rejected_tool_call이 이 동작을 고정합니다.
프롬프트가 아닌 서버의 가드레일. update_incident는 상태를 Resolved로 설정할 수 없습니다. 종료된 레코드는 변경할 수 없습니다. resolve_incident는 종료 코드와 의미 있는 메모를 요구합니다. SNOW_READ_ONLY=1은 모든 쓰기 도구를 비활성화합니다. 프롬프트는 논쟁할 수 있지만 서버는 그럴 수 없습니다.
도구 설명은 프롬프트입니다. 각 설명은 도구가 무엇을 하는지, 언제 사용하는지, 그리고 대신 이웃 도구를 언제 사용하는지 말합니다. 도구 선택 정확도는 저장소의 다른 어떤 것보다 이러한 문자열을 편집함으로써 더 많이 움직입니다. 이것이 평가가 존재하는 이유입니다.
실제 인코딩 쿼리. src/snow_mcp/query.py는 ServiceNow의 sysparm_query 문법(active=true^priority<=2^ORDERBYDESCopened_at)을 구현하며, OR 그룹 우선순위와 123TEXTQUERY321 전체 텍스트 필드를 포함하므로 쿼리 문자열이 변경 없이 실제 인스턴스로 전달됩니다.
결정성. 고정된 시계와 작업별 픽스처 리셋 덕분에 스위트를 두 번 실행해도 데이터가 아닌 모델에 의해서만 차이가 납니다.
저장소 구조
src/snow_mcp/
query.py ServiceNow encoded-query parser and evaluator
store.py in-memory ITSM store (derived priority, journals, CMDB graph)
clock.py frozen clock for reproducible runs
data/seed.json the ACME Corp fixture
backends/
base.py the backend contract + response shaping
mock.py in-memory implementation with platform validation
servicenow.py live Table API client for a Personal Developer Instance
mock_api/app.py FastAPI service speaking the Table API dialect
server.py the MCP server: 14 tools
agent/
bridge.py MCP <-> Anthropic tool translation, latency capture
llm.py LLM interface, Anthropic client, scripted client for CI
agent.py the tool-use loop and run instrumentation
prompts.py operator vs minimal system prompts
evals/
tasks.yaml 24 graded tasks
runner.py isolated execution
metrics.py metric definitions
checks.py assertion engine
report.py Markdown + HTML + JSON reports
tests/ 105 tests, no API key or network requiredClaude Desktop / Claude Code에서 연결
claude mcp add servicenow-itsm -- python -m snow_mcp.server.mcp.json과 examples/claude_desktop_config.json은 복사할 준비가 되어 있습니다 — docs/CONNECTING.md를 참조하세요.
구성
변수 | 기본값 | 의미 |
|
|
|
| — |
|
| — | 인스턴스 자격 증명 |
|
| 모든 쓰기 도구 비활성화 |
|
| 도구 호출당 행 수 상한 |
| — | 모든 도구 호출을 기록하는 JSONL 경로 |
|
| 에이전트가 사용하는 모델 |
| — | 에이전트 또는 평가를 실행할 때만 필요 |
라이선스
MIT — LICENSE를 참조하세요.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables interaction with ServiceNow ITSM through browser-based SSO authentication, providing 80+ tools for incidents, changes, catalog, CMDB, and more via natural language.34MIT
- AlicenseNot gradedqualityDmaintenanceA comprehensive MCP server for ServiceNow that provides over 60 pre-built tools for ITSM, ITOM, and App Dev operations, enabling AI agents to manage incidents, changes, users, service catalog, and projects through a unified interface.6MIT
- AlicenseBqualityAmaintenanceEnables AI to interact with ServiceNow instances via MCP, providing 400+ tools across all modules for automation, development, and management.1001,01215Elastic 2.0
- AlicenseBqualityBmaintenanceEnables natural language control of ServiceNow from AI clients like Claude and Cursor. Provides 400+ tools for incidents, changes, CMDB, and scripts via MCP protocol.1004051MIT
Related MCP Connectors
SaaS intelligence for AI agents. 5 unified tools cover 1,000+ services with 91-96% token savings.
Machine-readable utilities and datasets for AI agents.
Runtime permission, approval, and audit layer for AI agent tool execution.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Sourolio10/servicenow-mcp-agent'
If you have feedback or need assistance with the MCP directory API, please join our Discord server