servicenow-mcp-server 2.1.1 → 2.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.local.json +10 -1
- package/.dockerignore +52 -0
- package/Dockerfile +55 -0
- package/README.md +14 -0
- package/SUBMISSION_GUIDE.md +322 -0
- package/assets/logo-400x400.png +0 -0
- package/docker-compose.yml +30 -0
- package/docs/DOCKER_DEPLOYMENT.md +332 -0
- package/package.json +1 -1
|
@@ -66,7 +66,16 @@
|
|
|
66
66
|
"Bash(brew install:*)",
|
|
67
67
|
"Bash(mcp-publisher init:*)",
|
|
68
68
|
"Bash(mcp-publisher login:*)",
|
|
69
|
-
"Bash(mcp-publisher publish:*)"
|
|
69
|
+
"Bash(mcp-publisher publish:*)",
|
|
70
|
+
"Bash(docker build:*)",
|
|
71
|
+
"Bash(docker login:*)",
|
|
72
|
+
"Bash(docker tag:*)",
|
|
73
|
+
"Bash(docker push:*)",
|
|
74
|
+
"Bash(magick:*)",
|
|
75
|
+
"Bash(docker info:*)",
|
|
76
|
+
"Bash(docker scout:*)",
|
|
77
|
+
"Bash(docker run:*)",
|
|
78
|
+
"Bash(git restore:*)"
|
|
70
79
|
],
|
|
71
80
|
"deny": [],
|
|
72
81
|
"ask": []
|
package/.dockerignore
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Node modules (will be installed in container)
|
|
2
|
+
node_modules/
|
|
3
|
+
npm-debug.log
|
|
4
|
+
# Keep package-lock.json for reproducible builds
|
|
5
|
+
# package-lock.json
|
|
6
|
+
|
|
7
|
+
# Development files
|
|
8
|
+
.env
|
|
9
|
+
.env.*
|
|
10
|
+
.env.backup
|
|
11
|
+
.DS_Store
|
|
12
|
+
*.log
|
|
13
|
+
|
|
14
|
+
# Git
|
|
15
|
+
.git/
|
|
16
|
+
.gitignore
|
|
17
|
+
.github/
|
|
18
|
+
|
|
19
|
+
# MCP Registry tokens
|
|
20
|
+
.mcpregistry_*
|
|
21
|
+
|
|
22
|
+
# Config with credentials
|
|
23
|
+
config/servicenow-instances.json
|
|
24
|
+
|
|
25
|
+
# Tests
|
|
26
|
+
tests/
|
|
27
|
+
coverage/
|
|
28
|
+
*.test.js
|
|
29
|
+
__tests__/
|
|
30
|
+
|
|
31
|
+
# Development tools
|
|
32
|
+
.vscode/
|
|
33
|
+
.idea/
|
|
34
|
+
*.swp
|
|
35
|
+
*.swo
|
|
36
|
+
|
|
37
|
+
# Documentation (keep essential only)
|
|
38
|
+
docs/research/
|
|
39
|
+
|
|
40
|
+
# Examples and scripts
|
|
41
|
+
examples/
|
|
42
|
+
scripts/extract-table-metadata.js
|
|
43
|
+
scripts/background_script_*.js
|
|
44
|
+
scripts/link_ui_policy_actions_*.js
|
|
45
|
+
scripts/set_update_set_*.js
|
|
46
|
+
scripts/test_*.js
|
|
47
|
+
|
|
48
|
+
# Setup files
|
|
49
|
+
setup/
|
|
50
|
+
|
|
51
|
+
# IDE
|
|
52
|
+
.claude/
|
package/Dockerfile
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# ServiceNow MCP Server - Docker Image
|
|
2
|
+
# Author: nczitzer
|
|
3
|
+
# Part of Happy Technologies composable service ecosystem
|
|
4
|
+
|
|
5
|
+
# Stage 1: Dependencies
|
|
6
|
+
FROM node:22-alpine AS dependencies
|
|
7
|
+
|
|
8
|
+
WORKDIR /app
|
|
9
|
+
|
|
10
|
+
# Copy package files
|
|
11
|
+
COPY package*.json ./
|
|
12
|
+
|
|
13
|
+
# Install all dependencies (including dev for build)
|
|
14
|
+
RUN npm install && \
|
|
15
|
+
npm cache clean --force
|
|
16
|
+
|
|
17
|
+
# Stage 2: Production
|
|
18
|
+
FROM node:22-alpine AS production
|
|
19
|
+
|
|
20
|
+
# Set working directory
|
|
21
|
+
WORKDIR /app
|
|
22
|
+
|
|
23
|
+
# Security: Update Alpine packages to patch vulnerabilities
|
|
24
|
+
RUN apk update && \
|
|
25
|
+
apk upgrade --no-cache && \
|
|
26
|
+
rm -rf /var/cache/apk/*
|
|
27
|
+
|
|
28
|
+
# Copy package.json only (not package-lock to avoid dev dependency references)
|
|
29
|
+
COPY package.json ./
|
|
30
|
+
|
|
31
|
+
# Install only production dependencies and generate clean lockfile
|
|
32
|
+
RUN npm install --package-lock-only --omit=dev && \
|
|
33
|
+
npm ci --omit=dev && \
|
|
34
|
+
npm cache clean --force
|
|
35
|
+
|
|
36
|
+
# Copy application source
|
|
37
|
+
COPY src/ ./src/
|
|
38
|
+
COPY config/ ./config/
|
|
39
|
+
COPY docs/ ./docs/
|
|
40
|
+
COPY LICENSE ./
|
|
41
|
+
COPY README.md ./
|
|
42
|
+
|
|
43
|
+
# Create directory for config
|
|
44
|
+
RUN mkdir -p /app/config
|
|
45
|
+
|
|
46
|
+
# Expose HTTP server port (for SSE transport)
|
|
47
|
+
EXPOSE 3000
|
|
48
|
+
|
|
49
|
+
# Health check
|
|
50
|
+
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
|
|
51
|
+
CMD node -e "require('http').get('http://localhost:3000/health', (r) => {process.exit(r.statusCode === 200 ? 0 : 1)})"
|
|
52
|
+
|
|
53
|
+
# Default to HTTP server (SSE transport)
|
|
54
|
+
# Use stdio-server.js for Claude Desktop integration
|
|
55
|
+
CMD ["node", "src/server.js"]
|
package/README.md
CHANGED
|
@@ -549,6 +549,20 @@ DEBUG=true npm run dev
|
|
|
549
549
|
- **Tables Supported:** 160+ ServiceNow tables via generic tools
|
|
550
550
|
- **Batch Operations:** 43+ parallel calls tested successfully
|
|
551
551
|
|
|
552
|
+
## 🙏 Acknowledgments
|
|
553
|
+
|
|
554
|
+
This project was inspired by and built upon ideas from the [Echelon AI Labs ServiceNow MCP Server](https://github.com/echelon-ai-labs/servicenow-mcp). We're grateful for their pioneering work in bringing Model Context Protocol capabilities to ServiceNow, which provided valuable insights and inspiration for developing this multi-instance, metadata-driven implementation.
|
|
555
|
+
|
|
556
|
+
**Key innovations we've added:**
|
|
557
|
+
- Multi-instance support with dynamic routing
|
|
558
|
+
- 40+ tools with natural language search
|
|
559
|
+
- Local script development with Git integration
|
|
560
|
+
- Automated background script execution via sys_trigger
|
|
561
|
+
- Dynamic schema discovery across 160+ tables
|
|
562
|
+
- Convenience tools for common ITSM operations
|
|
563
|
+
|
|
564
|
+
We encourage the community to explore both implementations and contribute to advancing ServiceNow automation through MCP.
|
|
565
|
+
|
|
552
566
|
## 📄 License
|
|
553
567
|
|
|
554
568
|
This project is licensed under the **MIT License** - see the [LICENSE](LICENSE) file for details.
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
# MCP Server Directory Submissions
|
|
2
|
+
|
|
3
|
+
This guide tracks submissions to major MCP directories for the ServiceNow MCP Server.
|
|
4
|
+
|
|
5
|
+
## ✅ Already Published
|
|
6
|
+
|
|
7
|
+
### 1. Official MCP Registry
|
|
8
|
+
- **Status:** ✅ Published
|
|
9
|
+
- **URL:** https://registry.modelcontextprotocol.io/servers/io.github.nickzitzer/servicenow-nodejs
|
|
10
|
+
- **Version:** 2.1.1
|
|
11
|
+
- **Date:** 2025-10-17
|
|
12
|
+
|
|
13
|
+
### 2. npm Registry
|
|
14
|
+
- **Status:** ✅ Published
|
|
15
|
+
- **URL:** https://www.npmjs.com/package/servicenow-mcp-server
|
|
16
|
+
- **Version:** 2.1.1
|
|
17
|
+
|
|
18
|
+
### 3. Docker Hub
|
|
19
|
+
- **Status:** ✅ Published
|
|
20
|
+
- **URL:** https://hub.docker.com/r/nczitzer/mcp-servicenow-nodejs
|
|
21
|
+
- **Tags:** 2.1.1, latest
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 📋 Pending Submissions
|
|
26
|
+
|
|
27
|
+
### 1. Official Anthropic Server List (GitHub)
|
|
28
|
+
**Repository:** https://github.com/modelcontextprotocol/servers
|
|
29
|
+
|
|
30
|
+
**Submission Method:** Pull Request
|
|
31
|
+
|
|
32
|
+
**Steps:**
|
|
33
|
+
1. Fork the repository
|
|
34
|
+
2. Read CONTRIBUTING.md: https://github.com/modelcontextprotocol/servers/blob/main/CONTRIBUTING.md
|
|
35
|
+
3. Add server to appropriate category (alphabetically)
|
|
36
|
+
4. Submit PR with server details
|
|
37
|
+
|
|
38
|
+
**Server Entry Format:**
|
|
39
|
+
```markdown
|
|
40
|
+
### ServiceNow MCP Server
|
|
41
|
+
Multi-instance ServiceNow MCP server with 40+ tools, natural language search, and local script development.
|
|
42
|
+
|
|
43
|
+
- **Author:** nczitzer (Happy Technologies LLC)
|
|
44
|
+
- **Repository:** https://github.com/Happy-Technologies-LLC/mcp-servicenow-nodejs
|
|
45
|
+
- **npm:** https://www.npmjs.com/package/servicenow-mcp-server
|
|
46
|
+
- **Docker:** https://hub.docker.com/r/nczitzer/mcp-servicenow-nodejs
|
|
47
|
+
- **MCP Registry:** https://registry.modelcontextprotocol.io/servers/io.github.nickzitzer/servicenow-nodejs
|
|
48
|
+
- **Features:**
|
|
49
|
+
- 40+ MCP tools for ServiceNow operations
|
|
50
|
+
- Multi-instance support
|
|
51
|
+
- Natural language query interface
|
|
52
|
+
- Local script development with Git integration
|
|
53
|
+
- Update set management
|
|
54
|
+
- Background script execution
|
|
55
|
+
- 160+ ServiceNow tables supported
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**Status:** 🟡 Ready to submit
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
### 2. Cline's MCP Marketplace
|
|
63
|
+
**Repository:** https://github.com/cline/mcp-marketplace
|
|
64
|
+
|
|
65
|
+
**Submission Method:** GitHub Issue
|
|
66
|
+
|
|
67
|
+
**Steps:**
|
|
68
|
+
1. Go to: https://github.com/cline/mcp-marketplace/issues/new
|
|
69
|
+
2. Create issue with:
|
|
70
|
+
- **GitHub Repo URL:** https://github.com/Happy-Technologies-LLC/mcp-servicenow-nodejs
|
|
71
|
+
- **Logo Image:** 400×400 PNG (use assets/logo.svg converted to PNG)
|
|
72
|
+
3. Wait for review (typically a couple days)
|
|
73
|
+
|
|
74
|
+
**Logo Preparation:**
|
|
75
|
+
```bash
|
|
76
|
+
# Convert SVG to PNG (400x400)
|
|
77
|
+
# Use ImageMagick or online converter
|
|
78
|
+
convert assets/logo.svg -resize 400x400 assets/logo-400x400.png
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**Status:** 🟡 Ready to submit (need PNG logo)
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
### 3. Smithery
|
|
86
|
+
**Website:** https://smithery.ai/
|
|
87
|
+
|
|
88
|
+
**Submission Method:** Via website or GitHub
|
|
89
|
+
|
|
90
|
+
**Steps:**
|
|
91
|
+
1. Visit https://smithery.ai/
|
|
92
|
+
2. Look for "Submit Server" or "Add Server" option
|
|
93
|
+
3. Provide server details:
|
|
94
|
+
- npm package: servicenow-mcp-server
|
|
95
|
+
- GitHub: https://github.com/Happy-Technologies-LLC/mcp-servicenow-nodejs
|
|
96
|
+
- Description: Multi-instance ServiceNow MCP server with 40+ tools
|
|
97
|
+
|
|
98
|
+
**Alternative:** Check https://github.com/smithery-ai for submission guidelines
|
|
99
|
+
|
|
100
|
+
**Status:** 🔴 Need to find submission form
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
### 4. MCPHub.io
|
|
105
|
+
**Website:** https://mcphub.io/
|
|
106
|
+
|
|
107
|
+
**Submission Method:** Website form or automated discovery
|
|
108
|
+
|
|
109
|
+
**Details:**
|
|
110
|
+
- MCPHub indexes MCP servers from npm and GitHub
|
|
111
|
+
- May auto-discover from npm registry
|
|
112
|
+
- Check website for manual submission option
|
|
113
|
+
|
|
114
|
+
**Steps:**
|
|
115
|
+
1. Visit https://mcphub.io/
|
|
116
|
+
2. Search for "servicenow-mcp-server" to see if auto-indexed
|
|
117
|
+
3. If not found, look for submission form
|
|
118
|
+
|
|
119
|
+
**Status:** 🟡 Check if auto-indexed
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
### 5. mcp.run
|
|
124
|
+
**Website:** https://cloudmcp.run/
|
|
125
|
+
|
|
126
|
+
**Details:**
|
|
127
|
+
- Registry and control plane for MCP servers
|
|
128
|
+
- Integrates with official MCP registry
|
|
129
|
+
- May auto-discover from registry.modelcontextprotocol.io
|
|
130
|
+
|
|
131
|
+
**Steps:**
|
|
132
|
+
1. Check if already listed (since we're on official registry)
|
|
133
|
+
2. If not, contact via website
|
|
134
|
+
|
|
135
|
+
**Status:** 🟡 Check if auto-indexed
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
### 6. PulseMCP
|
|
140
|
+
**Website:** Community newsletter/hub
|
|
141
|
+
|
|
142
|
+
**Submission Method:** Newsletter submission or community post
|
|
143
|
+
|
|
144
|
+
**Steps:**
|
|
145
|
+
1. Find PulseMCP submission form or contact
|
|
146
|
+
2. Submit server announcement
|
|
147
|
+
3. Include:
|
|
148
|
+
- Project name
|
|
149
|
+
- Description
|
|
150
|
+
- Key features
|
|
151
|
+
- Links (GitHub, npm, Docker, MCP Registry)
|
|
152
|
+
|
|
153
|
+
**Status:** 🔴 Need to find submission process
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
### 7. mcpserverdirectory.com
|
|
158
|
+
**Website:** https://mcpserverdirectory.com
|
|
159
|
+
|
|
160
|
+
**Submission Method:** Website form
|
|
161
|
+
|
|
162
|
+
**Steps:**
|
|
163
|
+
1. Visit website
|
|
164
|
+
2. Find "Submit Server" or similar
|
|
165
|
+
3. Fill out form with server details
|
|
166
|
+
|
|
167
|
+
**Status:** 🔴 Need to access website
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
### 8. mcpnodes.com
|
|
172
|
+
**Website:** https://mcpnodes.com
|
|
173
|
+
|
|
174
|
+
**Submission Method:** Website form
|
|
175
|
+
|
|
176
|
+
**Steps:**
|
|
177
|
+
1. Visit website
|
|
178
|
+
2. Find submission form
|
|
179
|
+
3. Submit server details
|
|
180
|
+
|
|
181
|
+
**Status:** 🔴 Need to access website
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
### 9. OpenTools
|
|
186
|
+
**Website:** Open registry for MCP servers
|
|
187
|
+
|
|
188
|
+
**Submission Method:** TBD
|
|
189
|
+
|
|
190
|
+
**Status:** 🔴 Need to find website/submission process
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## 📦 Server Details for Submissions
|
|
195
|
+
|
|
196
|
+
Use this standardized information for all submissions:
|
|
197
|
+
|
|
198
|
+
**Name:** ServiceNow MCP Server
|
|
199
|
+
|
|
200
|
+
**Short Description:** Multi-instance ServiceNow MCP server with 40+ tools and intelligent schema discovery
|
|
201
|
+
|
|
202
|
+
**Long Description:**
|
|
203
|
+
A revolutionary metadata-driven ServiceNow MCP server supporting multiple ServiceNow instances simultaneously with automatic schema discovery and optimized tool generation. Features 40+ MCP tools, natural language search, local script development with Git integration, and comprehensive ITSM operations.
|
|
204
|
+
|
|
205
|
+
**Author:** nczitzer / Happy Technologies LLC
|
|
206
|
+
|
|
207
|
+
**License:** MIT
|
|
208
|
+
|
|
209
|
+
**Category:** ITSM, Enterprise, Automation, ServiceNow
|
|
210
|
+
|
|
211
|
+
**Tags:** servicenow, itsm, mcp, automation, enterprise, multi-instance, workflow, cmdb, service-catalog
|
|
212
|
+
|
|
213
|
+
**Links:**
|
|
214
|
+
- GitHub: https://github.com/Happy-Technologies-LLC/mcp-servicenow-nodejs
|
|
215
|
+
- npm: https://www.npmjs.com/package/servicenow-mcp-server
|
|
216
|
+
- Docker Hub: https://hub.docker.com/r/nczitzer/mcp-servicenow-nodejs
|
|
217
|
+
- MCP Registry: https://registry.modelcontextprotocol.io/servers/io.github.nickzitzer/servicenow-nodejs
|
|
218
|
+
- Documentation: https://github.com/Happy-Technologies-LLC/mcp-servicenow-nodejs#readme
|
|
219
|
+
|
|
220
|
+
**Key Features:**
|
|
221
|
+
- 40+ MCP tools for ServiceNow operations
|
|
222
|
+
- Multi-instance support (connect to dev, test, prod simultaneously)
|
|
223
|
+
- Natural language query interface (query ServiceNow in plain English)
|
|
224
|
+
- Local script development with Git integration and watch mode
|
|
225
|
+
- Automated background script execution
|
|
226
|
+
- Update set management with batch operations
|
|
227
|
+
- 160+ ServiceNow tables supported via generic tools
|
|
228
|
+
- Convenience tools for common ITSM operations
|
|
229
|
+
- Docker support for easy deployment
|
|
230
|
+
- Comprehensive documentation and examples
|
|
231
|
+
|
|
232
|
+
**Installation:**
|
|
233
|
+
```bash
|
|
234
|
+
# npm
|
|
235
|
+
npm install -g servicenow-mcp-server
|
|
236
|
+
|
|
237
|
+
# Docker
|
|
238
|
+
docker pull nczitzer/mcp-servicenow-nodejs:latest
|
|
239
|
+
|
|
240
|
+
# Via MCP Registry
|
|
241
|
+
# Use Claude Desktop MCP browser
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
**Quick Start:**
|
|
245
|
+
```bash
|
|
246
|
+
# Run with environment variables
|
|
247
|
+
export SERVICENOW_INSTANCE_URL=https://dev.service-now.com
|
|
248
|
+
export SERVICENOW_USERNAME=admin
|
|
249
|
+
export SERVICENOW_PASSWORD=password
|
|
250
|
+
servicenow-mcp-server
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
**Logo:**
|
|
254
|
+
- SVG: assets/logo.svg (teal/ServiceNow colors)
|
|
255
|
+
- PNG (400x400): assets/logo-400x400.png (needs conversion)
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
|
|
259
|
+
## 🎯 Action Items
|
|
260
|
+
|
|
261
|
+
### Immediate Actions:
|
|
262
|
+
1. ✅ Convert logo SVG to 400x400 PNG for Cline marketplace
|
|
263
|
+
2. 🔲 Submit PR to modelcontextprotocol/servers
|
|
264
|
+
3. 🔲 Submit issue to Cline's mcp-marketplace
|
|
265
|
+
4. 🔲 Check if auto-indexed on MCPHub.io and mcp.run
|
|
266
|
+
5. 🔲 Find Smithery submission process
|
|
267
|
+
|
|
268
|
+
### Research Needed:
|
|
269
|
+
- PulseMCP submission process
|
|
270
|
+
- mcpserverdirectory.com access
|
|
271
|
+
- mcpnodes.com submission form
|
|
272
|
+
- OpenTools platform details
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
## 📝 Submission Checklist Template
|
|
277
|
+
|
|
278
|
+
For each directory:
|
|
279
|
+
- [ ] Found submission process
|
|
280
|
+
- [ ] Prepared required materials (logo, description, etc.)
|
|
281
|
+
- [ ] Submitted application
|
|
282
|
+
- [ ] Received confirmation
|
|
283
|
+
- [ ] Server listed/approved
|
|
284
|
+
- [ ] Added listing URL to this document
|
|
285
|
+
|
|
286
|
+
---
|
|
287
|
+
|
|
288
|
+
## 📊 Submission Status Summary
|
|
289
|
+
|
|
290
|
+
| Directory | Status | Date Submitted | Date Approved | Listing URL |
|
|
291
|
+
|-----------|--------|----------------|---------------|-------------|
|
|
292
|
+
| Official MCP Registry | ✅ Live | 2025-10-17 | 2025-10-17 | https://registry.modelcontextprotocol.io/servers/io.github.nickzitzer/servicenow-nodejs |
|
|
293
|
+
| npm Registry | ✅ Live | 2025-10-17 | 2025-10-17 | https://www.npmjs.com/package/servicenow-mcp-server |
|
|
294
|
+
| Docker Hub | ✅ Live | 2025-10-17 | 2025-10-17 | https://hub.docker.com/r/nczitzer/mcp-servicenow-nodejs |
|
|
295
|
+
| Anthropic Servers (GitHub) | 🟡 Ready | - | - | - |
|
|
296
|
+
| Cline Marketplace | 🟡 Ready | - | - | - |
|
|
297
|
+
| MCPHub.io | 🟡 Check | - | - | - |
|
|
298
|
+
| mcp.run | 🟡 Check | - | - | - |
|
|
299
|
+
| Smithery | 🔴 Research | - | - | - |
|
|
300
|
+
| PulseMCP | 🔴 Research | - | - | - |
|
|
301
|
+
| mcpserverdirectory.com | 🔴 Research | - | - | - |
|
|
302
|
+
| mcpnodes.com | 🔴 Research | - | - | - |
|
|
303
|
+
| OpenTools | 🔴 Research | - | - | - |
|
|
304
|
+
|
|
305
|
+
**Legend:**
|
|
306
|
+
- ✅ Live - Published and available
|
|
307
|
+
- 🟡 Ready - Ready to submit, action needed
|
|
308
|
+
- 🟡 Check - May be auto-indexed, needs verification
|
|
309
|
+
- 🔴 Research - Need to find submission process
|
|
310
|
+
|
|
311
|
+
---
|
|
312
|
+
|
|
313
|
+
## 🔗 Useful Links
|
|
314
|
+
|
|
315
|
+
- MCP Specification: https://spec.modelcontextprotocol.io/
|
|
316
|
+
- MCP SDK: https://www.npmjs.com/package/@modelcontextprotocol/sdk
|
|
317
|
+
- Project Repository: https://github.com/Happy-Technologies-LLC/mcp-servicenow-nodejs
|
|
318
|
+
- Happy Technologies: https://happy-tech.biz
|
|
319
|
+
|
|
320
|
+
---
|
|
321
|
+
|
|
322
|
+
*Last Updated: 2025-10-17*
|
|
Binary file
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
version: '3.8'
|
|
2
|
+
|
|
3
|
+
services:
|
|
4
|
+
servicenow-mcp-server:
|
|
5
|
+
image: nczitzer/mcp-servicenow-nodejs:latest
|
|
6
|
+
build:
|
|
7
|
+
context: .
|
|
8
|
+
dockerfile: Dockerfile
|
|
9
|
+
container_name: servicenow-mcp-server
|
|
10
|
+
ports:
|
|
11
|
+
- "3000:3000"
|
|
12
|
+
environment:
|
|
13
|
+
# Single instance mode (legacy .env support)
|
|
14
|
+
- SERVICENOW_INSTANCE_URL=${SERVICENOW_INSTANCE_URL}
|
|
15
|
+
- SERVICENOW_USERNAME=${SERVICENOW_USERNAME}
|
|
16
|
+
- SERVICENOW_PASSWORD=${SERVICENOW_PASSWORD}
|
|
17
|
+
- SERVICENOW_AUTH_TYPE=${SERVICENOW_AUTH_TYPE:-basic}
|
|
18
|
+
|
|
19
|
+
# Multi-instance mode (specify instance name)
|
|
20
|
+
- SERVICENOW_INSTANCE=${SERVICENOW_INSTANCE}
|
|
21
|
+
volumes:
|
|
22
|
+
# Mount config file for multi-instance support
|
|
23
|
+
- ./config/servicenow-instances.json:/app/config/servicenow-instances.json:ro
|
|
24
|
+
restart: unless-stopped
|
|
25
|
+
healthcheck:
|
|
26
|
+
test: ["CMD", "node", "-e", "require('http').get('http://localhost:3000/health', (r) => {process.exit(r.statusCode === 200 ? 0 : 1)})"]
|
|
27
|
+
interval: 30s
|
|
28
|
+
timeout: 3s
|
|
29
|
+
retries: 3
|
|
30
|
+
start_period: 5s
|
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
# Docker Deployment Guide
|
|
2
|
+
|
|
3
|
+
Deploy ServiceNow MCP Server using Docker for easy, consistent, and portable deployment.
|
|
4
|
+
|
|
5
|
+
## 🚀 Quick Start
|
|
6
|
+
|
|
7
|
+
### Option 1: Docker Hub (Recommended)
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# Pull the latest image
|
|
11
|
+
docker pull nczitzer/mcp-servicenow-nodejs:latest
|
|
12
|
+
|
|
13
|
+
# Run with environment variables (single instance)
|
|
14
|
+
docker run -d \
|
|
15
|
+
-p 3000:3000 \
|
|
16
|
+
-e SERVICENOW_INSTANCE_URL=https://dev123456.service-now.com \
|
|
17
|
+
-e SERVICENOW_USERNAME=admin \
|
|
18
|
+
-e SERVICENOW_PASSWORD=your-password \
|
|
19
|
+
--name servicenow-mcp-server \
|
|
20
|
+
nczitzer/mcp-servicenow-nodejs:latest
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Option 2: Docker Compose
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
# Create .env file
|
|
27
|
+
cat > .env <<EOF
|
|
28
|
+
SERVICENOW_INSTANCE_URL=https://dev123456.service-now.com
|
|
29
|
+
SERVICENOW_USERNAME=admin
|
|
30
|
+
SERVICENOW_PASSWORD=your-password
|
|
31
|
+
SERVICENOW_AUTH_TYPE=basic
|
|
32
|
+
EOF
|
|
33
|
+
|
|
34
|
+
# Start with docker-compose
|
|
35
|
+
docker-compose up -d
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Option 3: Build Locally
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
# Build the image
|
|
42
|
+
docker build -t servicenow-mcp-server .
|
|
43
|
+
|
|
44
|
+
# Run the container
|
|
45
|
+
docker run -d -p 3000:3000 \
|
|
46
|
+
-e SERVICENOW_INSTANCE_URL=https://dev123456.service-now.com \
|
|
47
|
+
-e SERVICENOW_USERNAME=admin \
|
|
48
|
+
-e SERVICENOW_PASSWORD=your-password \
|
|
49
|
+
servicenow-mcp-server
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## 🌐 Multi-Instance Configuration
|
|
53
|
+
|
|
54
|
+
For multi-instance support, mount your config file:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
# Create config file
|
|
58
|
+
cp config/servicenow-instances.example.json config/servicenow-instances.json
|
|
59
|
+
# Edit with your instances
|
|
60
|
+
|
|
61
|
+
# Run with mounted config
|
|
62
|
+
docker run -d \
|
|
63
|
+
-p 3000:3000 \
|
|
64
|
+
-v $(pwd)/config/servicenow-instances.json:/app/config/servicenow-instances.json:ro \
|
|
65
|
+
--name servicenow-mcp-server \
|
|
66
|
+
nczitzer/mcp-servicenow-nodejs:latest
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Or use docker-compose:
|
|
70
|
+
|
|
71
|
+
```yaml
|
|
72
|
+
services:
|
|
73
|
+
servicenow-mcp-server:
|
|
74
|
+
image: nczitzer/mcp-servicenow-nodejs:latest
|
|
75
|
+
ports:
|
|
76
|
+
- "3000:3000"
|
|
77
|
+
volumes:
|
|
78
|
+
- ./config/servicenow-instances.json:/app/config/servicenow-instances.json:ro
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## 🔍 Health Check
|
|
82
|
+
|
|
83
|
+
The container includes a health check endpoint:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
# Check container health
|
|
87
|
+
docker ps
|
|
88
|
+
|
|
89
|
+
# Test health endpoint
|
|
90
|
+
curl http://localhost:3000/health
|
|
91
|
+
|
|
92
|
+
# Check logs
|
|
93
|
+
docker logs servicenow-mcp-server
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## 🛠️ Environment Variables
|
|
97
|
+
|
|
98
|
+
### Single Instance Mode
|
|
99
|
+
|
|
100
|
+
| Variable | Required | Default | Description |
|
|
101
|
+
|----------|----------|---------|-------------|
|
|
102
|
+
| `SERVICENOW_INSTANCE_URL` | Yes | - | ServiceNow instance URL |
|
|
103
|
+
| `SERVICENOW_USERNAME` | Yes | - | ServiceNow username |
|
|
104
|
+
| `SERVICENOW_PASSWORD` | Yes | - | ServiceNow password |
|
|
105
|
+
| `SERVICENOW_AUTH_TYPE` | No | `basic` | Authentication type |
|
|
106
|
+
|
|
107
|
+
### Multi-Instance Mode
|
|
108
|
+
|
|
109
|
+
| Variable | Required | Default | Description |
|
|
110
|
+
|----------|----------|---------|-------------|
|
|
111
|
+
| `SERVICENOW_INSTANCE` | No | `default` | Instance name from config file |
|
|
112
|
+
|
|
113
|
+
## 📊 Resource Requirements
|
|
114
|
+
|
|
115
|
+
**Minimum:**
|
|
116
|
+
- CPU: 0.5 cores
|
|
117
|
+
- Memory: 256MB
|
|
118
|
+
- Disk: 500MB
|
|
119
|
+
|
|
120
|
+
**Recommended:**
|
|
121
|
+
- CPU: 1 core
|
|
122
|
+
- Memory: 512MB
|
|
123
|
+
- Disk: 1GB
|
|
124
|
+
|
|
125
|
+
## 🔒 Security Best Practices
|
|
126
|
+
|
|
127
|
+
### 1. Use Docker Secrets (Production)
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
# Create secrets
|
|
131
|
+
echo "your-password" | docker secret create servicenow_password -
|
|
132
|
+
|
|
133
|
+
# Run with secrets
|
|
134
|
+
docker service create \
|
|
135
|
+
--name servicenow-mcp-server \
|
|
136
|
+
--secret servicenow_password \
|
|
137
|
+
-e SERVICENOW_INSTANCE_URL=https://prod.service-now.com \
|
|
138
|
+
-e SERVICENOW_USERNAME=admin \
|
|
139
|
+
nczitzer/mcp-servicenow-nodejs:latest
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### 2. Use Read-Only Config Mount
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
docker run -d \
|
|
146
|
+
-v $(pwd)/config/servicenow-instances.json:/app/config/servicenow-instances.json:ro \
|
|
147
|
+
nczitzer/mcp-servicenow-nodejs:latest
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### 3. Network Isolation
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
# Create isolated network
|
|
154
|
+
docker network create mcp-network
|
|
155
|
+
|
|
156
|
+
# Run in isolated network
|
|
157
|
+
docker run -d \
|
|
158
|
+
--network mcp-network \
|
|
159
|
+
-p 3000:3000 \
|
|
160
|
+
nczitzer/mcp-servicenow-nodejs:latest
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## 🔄 Updates & Maintenance
|
|
164
|
+
|
|
165
|
+
### Update to Latest Version
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
# Pull latest image
|
|
169
|
+
docker pull nczitzer/mcp-servicenow-nodejs:latest
|
|
170
|
+
|
|
171
|
+
# Stop and remove old container
|
|
172
|
+
docker stop servicenow-mcp-server
|
|
173
|
+
docker rm servicenow-mcp-server
|
|
174
|
+
|
|
175
|
+
# Start new container
|
|
176
|
+
docker run -d -p 3000:3000 \
|
|
177
|
+
-e SERVICENOW_INSTANCE_URL=... \
|
|
178
|
+
--name servicenow-mcp-server \
|
|
179
|
+
nczitzer/mcp-servicenow-nodejs:latest
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### View Logs
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
# Follow logs
|
|
186
|
+
docker logs -f servicenow-mcp-server
|
|
187
|
+
|
|
188
|
+
# Last 100 lines
|
|
189
|
+
docker logs --tail 100 servicenow-mcp-server
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### Restart Container
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
docker restart servicenow-mcp-server
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
## 🚀 Production Deployment
|
|
199
|
+
|
|
200
|
+
### Kubernetes (k8s)
|
|
201
|
+
|
|
202
|
+
```yaml
|
|
203
|
+
apiVersion: apps/v1
|
|
204
|
+
kind: Deployment
|
|
205
|
+
metadata:
|
|
206
|
+
name: servicenow-mcp-server
|
|
207
|
+
spec:
|
|
208
|
+
replicas: 3
|
|
209
|
+
selector:
|
|
210
|
+
matchLabels:
|
|
211
|
+
app: servicenow-mcp-server
|
|
212
|
+
template:
|
|
213
|
+
metadata:
|
|
214
|
+
labels:
|
|
215
|
+
app: servicenow-mcp-server
|
|
216
|
+
spec:
|
|
217
|
+
containers:
|
|
218
|
+
- name: servicenow-mcp-server
|
|
219
|
+
image: nczitzer/mcp-servicenow-nodejs:latest
|
|
220
|
+
ports:
|
|
221
|
+
- containerPort: 3000
|
|
222
|
+
env:
|
|
223
|
+
- name: SERVICENOW_INSTANCE_URL
|
|
224
|
+
valueFrom:
|
|
225
|
+
secretKeyRef:
|
|
226
|
+
name: servicenow-credentials
|
|
227
|
+
key: instance-url
|
|
228
|
+
- name: SERVICENOW_USERNAME
|
|
229
|
+
valueFrom:
|
|
230
|
+
secretKeyRef:
|
|
231
|
+
name: servicenow-credentials
|
|
232
|
+
key: username
|
|
233
|
+
- name: SERVICENOW_PASSWORD
|
|
234
|
+
valueFrom:
|
|
235
|
+
secretKeyRef:
|
|
236
|
+
name: servicenow-credentials
|
|
237
|
+
key: password
|
|
238
|
+
resources:
|
|
239
|
+
requests:
|
|
240
|
+
memory: "256Mi"
|
|
241
|
+
cpu: "250m"
|
|
242
|
+
limits:
|
|
243
|
+
memory: "512Mi"
|
|
244
|
+
cpu: "500m"
|
|
245
|
+
livenessProbe:
|
|
246
|
+
httpGet:
|
|
247
|
+
path: /health
|
|
248
|
+
port: 3000
|
|
249
|
+
initialDelaySeconds: 10
|
|
250
|
+
periodSeconds: 30
|
|
251
|
+
---
|
|
252
|
+
apiVersion: v1
|
|
253
|
+
kind: Service
|
|
254
|
+
metadata:
|
|
255
|
+
name: servicenow-mcp-server
|
|
256
|
+
spec:
|
|
257
|
+
selector:
|
|
258
|
+
app: servicenow-mcp-server
|
|
259
|
+
ports:
|
|
260
|
+
- port: 80
|
|
261
|
+
targetPort: 3000
|
|
262
|
+
type: LoadBalancer
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
### Docker Swarm
|
|
266
|
+
|
|
267
|
+
```bash
|
|
268
|
+
# Initialize swarm
|
|
269
|
+
docker swarm init
|
|
270
|
+
|
|
271
|
+
# Deploy stack
|
|
272
|
+
docker stack deploy -c docker-compose.yml servicenow-mcp
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
## 🐛 Troubleshooting
|
|
276
|
+
|
|
277
|
+
### Container Won't Start
|
|
278
|
+
|
|
279
|
+
```bash
|
|
280
|
+
# Check logs
|
|
281
|
+
docker logs servicenow-mcp-server
|
|
282
|
+
|
|
283
|
+
# Check environment variables
|
|
284
|
+
docker exec servicenow-mcp-server env
|
|
285
|
+
|
|
286
|
+
# Run interactively
|
|
287
|
+
docker run -it --rm \
|
|
288
|
+
-e SERVICENOW_INSTANCE_URL=... \
|
|
289
|
+
nczitzer/mcp-servicenow-nodejs:latest \
|
|
290
|
+
sh
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
### Health Check Failing
|
|
294
|
+
|
|
295
|
+
```bash
|
|
296
|
+
# Test health endpoint manually
|
|
297
|
+
docker exec servicenow-mcp-server curl http://localhost:3000/health
|
|
298
|
+
|
|
299
|
+
# Check if server is running
|
|
300
|
+
docker exec servicenow-mcp-server ps aux
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
### Connection Issues
|
|
304
|
+
|
|
305
|
+
```bash
|
|
306
|
+
# Verify port mapping
|
|
307
|
+
docker port servicenow-mcp-server
|
|
308
|
+
|
|
309
|
+
# Test from host
|
|
310
|
+
curl http://localhost:3000/health
|
|
311
|
+
|
|
312
|
+
# Test from inside container
|
|
313
|
+
docker exec servicenow-mcp-server curl http://localhost:3000/health
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
## 📦 Available Tags
|
|
317
|
+
|
|
318
|
+
- `latest` - Latest stable release
|
|
319
|
+
- `2.1.1` - Specific version
|
|
320
|
+
- `2.1` - Minor version (auto-updates patch releases)
|
|
321
|
+
- `2` - Major version (auto-updates minor/patch releases)
|
|
322
|
+
|
|
323
|
+
## 🔗 Links
|
|
324
|
+
|
|
325
|
+
- **Docker Hub:** https://hub.docker.com/r/nczitzer/mcp-servicenow-nodejs
|
|
326
|
+
- **GitHub:** https://github.com/Happy-Technologies-LLC/mcp-servicenow-nodejs
|
|
327
|
+
- **npm:** https://www.npmjs.com/package/servicenow-mcp-server
|
|
328
|
+
- **MCP Registry:** https://registry.modelcontextprotocol.io/servers/io.github.nickzitzer/servicenow-nodejs
|
|
329
|
+
|
|
330
|
+
## 📄 License
|
|
331
|
+
|
|
332
|
+
MIT License - Copyright © 2025 Happy Technologies LLC
|
package/package.json
CHANGED