MCP FOR ITSM
MCP ITSM 集成
针对 IT 服务管理 (ITSM) 工具的模型上下文协议 (MCP) 实现,旨在与 Smithery 配合使用。
概述
该项目为 LLM 提供了一个统一的接口,使其能够使用模型上下文协议 (MCP) 与多个 ITSM 系统(ServiceNow、Jira、Zendesk、Ivanti Neurons for ITSM 和 Cherwell)进行交互。这种集成无需 LLM 学习每个 ITSM 系统的不同 API,而是提供了一套适用于所有系统的标准化工具。

Related MCP server: ARC-1
MCP 服务器信息
这是一个符合 MCP 标准的服务器,实现了模型上下文协议 (MCP) 规范。它为大型语言模型提供了一个标准化接口,使其能够通过一套统一的工具与多个 ITSM 系统进行交互。
MCP兼容性
协议版本:MCP 1.0
工具格式:符合 JSON Schema
运行时:Node.js
传输:HTTP 和 stdio
身份验证:API 密钥
MCP 服务器使用情况
该服务器可直接与任何兼容 MCP 的客户端一起使用,包括:
MCP Inspector CLI 工具
通过 MCP 集成的 Claude
任何具有 MCP 支持的 LLM
要在本地检查服务器:
npx @modelcontextprotocol/inspector node index.js特征
统一接口:所有 ITSM 系统中一致的工具定义
智能路由:自动将请求路由到适当的 ITSM 系统
上下文管理:在交互过程中维护上下文
符合 MCP 规范:遵循模型上下文协议规范
Smithery 集成:旨在与 Smithery 无缝协作
先决条件
Node.js(v14 或更高版本)
Smithery 命令行界面
访问 ITSM 系统(ServiceNow、Jira、Zendesk、Ivanti Neurons for ITSM、Cherwell)
安装
克隆存储库:
git clone https://github.com/yourusername/mcp-itsm.git cd mcp-itsm安装依赖项:
npm install配置您的 ITSM 凭据(请参阅配置部分)
部署至 Smithery:
smithery deploy
配置
ITSM 凭证
使用您的 ITSM 凭据创建一个.env文件:
# ServiceNow
SERVICENOW_INSTANCE=your-instance
SERVICENOW_USERNAME=your-username
SERVICENOW_PASSWORD=your-password
# Jira
JIRA_URL=https://your-instance.atlassian.net
JIRA_USERNAME=your-username
JIRA_API_TOKEN=your-api-token
# Zendesk
ZENDESK_URL=https://your-instance.zendesk.com
ZENDESK_EMAIL=your-email
ZENDESK_API_TOKEN=your-api-token
# Ivanti Neurons for ITSM
IVANTI_URL=https://your-instance.ivanti.com
IVANTI_CLIENT_ID=your-client-id
IVANTI_CLIENT_SECRET=your-client-secret
IVANTI_TENANT_ID=your-tenant-id
# Cherwell
CHERWELL_URL=https://your-instance.cherwell.com
CHERWELL_CLIENT_ID=your-client-id
CHERWELL_AUTH_MODE=internal
CHERWELL_USERNAME=your-username
CHERWELL_PASSWORD=your-passwordSmithery 配置
smithery.yaml文件配置了如何将你的工具部署到 Smithery:
name: mcp-itsm
description: MCP ITSM Tools for ticket management across multiple systems
version: 1.0.0
tools: ./tools.json
command: node index.js可用工具
此集成提供了以下工具:
create_ticket :在任何 ITSM 系统中创建新票据
get_ticket :检索票证详细信息
update_ticket :更新现有票证
list_tickets :列出带有过滤选项的票证
分配票证给用户
add_comment :向票证添加评论
search_knowledge_base :在知识库中搜索相关文章
请参阅tools.json了解完整的工具定义。
用法
一旦部署到 Smithery,LLM 就可以使用这些工具与您的 ITSM 系统进行交互。以下是 LLM 如何创建工单的示例:
User: "I need to report a bug in our accounting software"
LLM: (Makes a tool call)
{
"type": "tool_call",
"data": {
"name": "create_ticket",
"parameters": {
"title": "Bug in accounting software",
"description": "User reported an issue with the accounting software",
"priority": "medium",
"system": "jira"
}
}
}
Response:
{
"type": "tool_response",
"data": {
"name": "create_ticket",
"content": {
"id": "ACCT-123",
"status": "open",
"url": "https://your-instance.atlassian.net/browse/ACCT-123"
}
}
}调试
该项目包括几个调试工具:
debug_smithery_mcp.bat:诊断 Smithery 的 MCP 特定问题force_redeploy_smithery.bat:强制使用 MCP 配置重新部署test_tools.js:本地测试 MCP 工具调用
文档
MCP 集成:模型上下文协议实现的细节
MCP 快速参考:MCP 概念的快速参考指南
ITSM 系统参考:有关每个受支持的 ITSM 系统的详细信息
OpenAI 到 MCP 的转换:从 OpenAI 函数调用到 MCP 的转换指南
图表
MCP ITSM架构:集成的整体架构
系统碎片化:ITSM系统碎片化的挑战
LLM 推理:LLM 如何选择合适的 ITSM 系统
优势比较:传统方法与 MCP 方法的比较
Smithery 集成:MCP 如何与 Smithery 集成
贡献
欢迎贡献代码!欢迎提交 Pull 请求。
执照
该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅 LICENSE 文件。
资源
Available Tools
7 toolsadd_commentA
Add a comment (public or internal) to an existing ticket
| Name | Required | Description | Default |
|---|---|---|---|
| ticket_id | Yes | ID of the ticket to comment on | |
| comment | Yes | Comment text | |
| internal | No | True = internal note not visible to end users | |
| system | No | ITSM system to use | jira |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=false, destructiveHint=false) are consistent with a write operation. Description adds the 'public or internal' nuance already present in schema parameter. No additional behavioral traits (e.g., auth requirements, side effects) are disclosed, but annotations cover basic safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded, zero fluff. Every word contributes to conveying purpose. Appropriate length for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but description does not hint at return values or response format. For a comment addition tool, the agent might expect to know if the comment ID is returned. Lacks this context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are fully documented. Description adds no extra meaning beyond summarizing the 'internal' parameter. Baseline score of 3 is appropriate as schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Add', resource 'comment', and context 'to an existing ticket'. Distinguishes between public and internal comments. Sibling tools (create_ticket, update_ticket) are distinct, so purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies usage for adding comments to existing tickets but does not explicitly state when not to use this tool (e.g., for creating tickets) or mention alternatives like update_ticket. Guidance is inferred rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assign_ticketAIdempotent
Assign a ticket to a specific user
| Name | Required | Description | Default |
|---|---|---|---|
| ticket_id | Yes | ID of the ticket to assign | |
| user_id | Yes | Username or ID of the user to assign to | |
| system | No | ITSM system to use | jira |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-readOnly, non-destructive, idempotent. Description adds 'assign' but no further behavioral details (e.g., reassignment effects, notifications). Minimal additional value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no wasted words, front-loads the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple assign action, but lacks usage guidance and return value indication. With annotations present, no major gaps but not rich.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all parameters with descriptions (100% coverage). Description does not add extra meaning beyond summarizing the action.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action ('assign'), the resource ('a ticket'), and the target ('to a specific user'). Distinguishes from sibling tools like create_ticket, get_ticket, update_ticket.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, no prerequisites mentioned (e.g., ticket existence, user permissions), and no when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_ticketB
Create a new support ticket in the appropriate ITSM system
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Title of the ticket | |
| description | Yes | Detailed description of the issue | |
| priority | No | Priority level | medium |
| system | No | ITSM system to use | jira |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide basic hints (non-readOnly, non-destructive), but the description adds no behavioral context beyond creation. It does not disclose side effects like notifications, system validation, or error behavior, which are not covered by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence. It is well-structured and gets to the point without unnecessary details, though it could be slightly expanded for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with 4 parameters and no output schema. The description provides enough to understand the basic action but lacks details on return values, system selection logic, or potential errors. It is minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with descriptions for all parameters. The description adds no additional meaning beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it creates a new support ticket in an ITSM system, with a specific verb and resource. It effectively distinguishes from sibling tools like 'get_ticket' or 'update_ticket' by focusing on creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives like 'add_comment' or 'assign_ticket'. It implicitly suggests it's for creating new tickets, but offers no exclusions or context for when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ticketARead-onlyIdempotent
Retrieve full details of an existing ticket by ID
| Name | Required | Description | Default |
|---|---|---|---|
| ticket_id | Yes | ID of the ticket to retrieve (e.g. JIRA-1000) | |
| system | No | ITSM system to use | jira |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations fully cover safety profile (readOnly, idempotent). Description adds only 'Retrieve full details', consistent with annotations, no additional behavioral context beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no wasted words, front-loaded with the key action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with two parameters and no output schema, description adequately states purpose. Could mention that result includes full ticket details, but not necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage with descriptions for both parameters. Description does not add further meaning; the schema already explains ticket_id and system.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Retrieve' and resource 'full details of an existing ticket by ID', clearly distinguishing from siblings like list_tickets (list multiple) or update_ticket (modify).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear that tool is for retrieving a single ticket by ID, but lacks explicit 'when not to use' or comparison to alternatives like list_tickets for browsing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ticketsARead-onlyIdempotent
List tickets with optional filtering by status, assignee, or system
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter by status | |
| assigned_to | No | Filter by assignee username | |
| limit | No | Max number of tickets to return | |
| system | No | ITSM system to use | jira |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds no new behavioral details (e.g., pagination, sorting, API limits) beyond what the schema and annotations imply, so it provides moderate added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single 10-word sentence that efficiently conveys the tool's purpose and key filters. No extraneous information, and the core action is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (list operation with 4 optional parameters, no output schema), the description covers the basics but omits usage guidelines and details about return format or pagination, leaving some gaps for an agent to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning all parameters are documented in the schema. The description merely restates the filter options without adding new semantic context, meeting the baseline but not exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'list tickets' with optional filters by status, assignee, or system, providing a specific verb and resource that clearly differentiates from sibling tools which involve creation or modification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like search_knowledge_base, nor any mention of prerequisites or exclusions. The description only lists optional filters without context on when each is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_knowledge_baseARead-onlyIdempotent
Search the knowledge base for articles related to an issue
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query — keywords, error messages, or topic | |
| limit | No | Max articles to return | |
| system | No | ITSM system to use | jira |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds no further behavioral details beyond the search action, such as authentication needs or result format. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It could be slightly expanded to include when to use, but it is appropriately front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of the tool (search with query, limit, system), the description is sufficient. No output schema exists, but the tool's behavior is straightforward and well-covered by annotations and schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters have descriptive schema documentation (100% coverage). The description does not add meaning beyond what the schema already provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'search' and the resource 'knowledge base' with a specific goal: finding articles related to an issue. It distinguishes itself from sibling tools, which are all ticket-related actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when articles about an issue are needed, but does not explicitly state when to use or not use this tool, nor does it mention alternative tools or context for exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_ticketB
Update the status, priority, or add a comment to an existing ticket
| Name | Required | Description | Default |
|---|---|---|---|
| ticket_id | Yes | ID of the ticket to update | |
| status | No | New status | |
| priority | No | Priority level | medium |
| comment | No | Comment to add to the ticket | |
| system | No | ITSM system to use | jira |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide minimal behavioral info. Description only says 'update', missing details on authentication, rate limits, or side effects. Bare minimum disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded, efficient. Minor awkwardness with 'or' list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate given 5 parameters explained in schema, no output schema. Lacks explanation of updating multiple fields simultaneously, but overall covers main purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. Description adds list of updatable fields but uses 'or' which could imply exclusivity, slightly misleading. No significant extra meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it updates status, priority, or adds a comment to an existing ticket, distinguishing it from siblings like create_ticket and assign_ticket.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage through listing updatable fields, but no explicit guidance on when to use versus add_comment or assign_ticket, nor prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
v2.0.0- First observed
add_comment - First observed
assign_ticket - First observed
create_ticket - First observed
get_ticket - First observed
list_tickets - First observed
search_knowledge_base - First observed
update_ticket
TDQS
Scored across 7 tools
Most tools have distinct purposes, but add_comment and update_ticket both allow adding comments, creating ambiguity. The other tools are clearly separated.
All tools follow a consistent verb_noun snake_case pattern (e.g., create_ticket, list_tickets, search_knowledge_base), making it easy to infer functionality.
Seven tools cover the essential ticket lifecycle and knowledge base search without being excessive, fitting well for an ITSM server.
The tool set covers create, read, update, assignment, and knowledge search, but lacks a delete or archive operation, which may be needed in some workflows.
Maintenance
Related MCP Connectors
MCP server for Support & Service Management
MCP-Native LLM Orchestration Agent
MCP Server for agents to onboard, pay, and provision services autonomously with InFlow
Related MCP Servers
- AlicenseBqualityFmaintenanceMCP server created for Freshservice, allowing AI models to interact with Freshservice modules5937MIT
- MIT
- AlicenseNot gradedqualityCmaintenanceMCP server enabling interaction with ServiceNow API for managing incidents, CMDB, change management, and other ServiceNow operations via natural language.19MIT
- AlicenseCqualityBmaintenanceEnables natural language control of ServiceNow from AI clients like Claude and Cursor. Provides 400+ tools for incidents, changes, CMDB, and scripts via MCP protocol.1001,131 npm2MIT