servicenow-mcp-server 2.1.7 → 2.1.9
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/Dockerfile +6 -2
- package/README.md +1 -1
- package/docs/CLAUDE_DESKTOP_SETUP.md +1 -1
- package/docs/DOCKER_DEPLOYMENT.md +1 -1
- package/package.json +8 -7
- package/src/server.js +4 -4
- package/.claude/settings.local.json +0 -98
- package/CLAUDE.md +0 -777
- package/scripts/background_script_2025-09-29T20-19-35-101Z.js +0 -23
- package/scripts/link_ui_policy_actions_2025-09-29T20-17-15-218Z.js +0 -90
- package/scripts/set_update_set_Integration_Governance_Framework_2025-09-29T19-47-06-790Z.js +0 -30
- package/scripts/set_update_set_Integration_Governance_Framework_2025-09-29T19-59-33-152Z.js +0 -30
- package/scripts/set_update_set_current_2025-09-29T20-16-59-675Z.js +0 -24
- package/scripts/test_sys_dictionary_403.js +0 -85
- package/setup/setup-report.json +0 -5313
package/Dockerfile
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
# Part of Happy Technologies composable service ecosystem
|
|
4
4
|
|
|
5
5
|
# Stage 1: Dependencies
|
|
6
|
-
FROM node:
|
|
6
|
+
FROM node:24-alpine AS dependencies
|
|
7
7
|
|
|
8
8
|
WORKDIR /app
|
|
9
9
|
|
|
@@ -15,7 +15,7 @@ RUN npm install && \
|
|
|
15
15
|
npm cache clean --force
|
|
16
16
|
|
|
17
17
|
# Stage 2: Production
|
|
18
|
-
FROM node:
|
|
18
|
+
FROM node:24-alpine AS production
|
|
19
19
|
|
|
20
20
|
# Set working directory
|
|
21
21
|
WORKDIR /app
|
|
@@ -33,6 +33,10 @@ RUN npm install --package-lock-only --omit=dev && \
|
|
|
33
33
|
npm ci --omit=dev && \
|
|
34
34
|
npm cache clean --force
|
|
35
35
|
|
|
36
|
+
# Runtime doesn't need package managers; remove them to reduce attack surface
|
|
37
|
+
RUN rm -rf /usr/local/lib/node_modules/npm && \
|
|
38
|
+
rm -f /usr/local/bin/npm /usr/local/bin/npx
|
|
39
|
+
|
|
36
40
|
# Copy application source
|
|
37
41
|
COPY src/ ./src/
|
|
38
42
|
COPY config/ ./config/
|
package/README.md
CHANGED
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
**Option A: Multi-Instance Setup (Recommended)**
|
|
73
73
|
```bash
|
|
74
74
|
# Create config file
|
|
75
|
-
cp config/servicenow-instances.example
|
|
75
|
+
cp config/servicenow-instances.json.example config/servicenow-instances.json
|
|
76
76
|
|
|
77
77
|
# Edit with your instances
|
|
78
78
|
nano config/servicenow-instances.json
|
|
@@ -130,7 +130,7 @@ To enable this, use the JSON config file instead of ENV variables:
|
|
|
130
130
|
|
|
131
131
|
```bash
|
|
132
132
|
# Copy example config
|
|
133
|
-
cp config/servicenow-instances.example
|
|
133
|
+
cp config/servicenow-instances.json.example config/servicenow-instances.json
|
|
134
134
|
|
|
135
135
|
# Edit with your instances
|
|
136
136
|
nano config/servicenow-instances.json
|
|
@@ -55,7 +55,7 @@ For multi-instance support, mount your config file:
|
|
|
55
55
|
|
|
56
56
|
```bash
|
|
57
57
|
# Create config file
|
|
58
|
-
cp config/servicenow-instances.example
|
|
58
|
+
cp config/servicenow-instances.json.example config/servicenow-instances.json
|
|
59
59
|
# Edit with your instances
|
|
60
60
|
|
|
61
61
|
# Run with mounted config
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "servicenow-mcp-server",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.9",
|
|
4
4
|
"description": "Multi-instance ServiceNow MCP server with 40+ tools, natural language search, and local script development",
|
|
5
5
|
"main": "src/server.js",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"mcpName": "io.github.nickzitzer/servicenow-nodejs",
|
|
8
8
|
"bin": {
|
|
9
|
-
"servicenow-mcp-server": "
|
|
9
|
+
"servicenow-mcp-server": "src/stdio-server.js"
|
|
10
10
|
},
|
|
11
11
|
"scripts": {
|
|
12
12
|
"dev": "nodemon src/server.js",
|
|
@@ -17,11 +17,12 @@
|
|
|
17
17
|
"test": "NODE_OPTIONS=--experimental-vm-modules jest",
|
|
18
18
|
"test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch",
|
|
19
19
|
"test:coverage": "NODE_OPTIONS=--experimental-vm-modules jest --coverage",
|
|
20
|
-
"test:verbose": "NODE_OPTIONS=--experimental-vm-modules jest --verbose"
|
|
20
|
+
"test:verbose": "NODE_OPTIONS=--experimental-vm-modules jest --verbose",
|
|
21
|
+
"release": "./scripts/release.sh"
|
|
21
22
|
},
|
|
22
23
|
"dependencies": {
|
|
23
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
24
|
-
"axios": "^1.13.
|
|
24
|
+
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
25
|
+
"axios": "^1.13.6",
|
|
25
26
|
"chokidar": "^4.0.3",
|
|
26
27
|
"dotenv": "^16.6.1",
|
|
27
28
|
"express": "^4.22.1",
|
|
@@ -30,13 +31,13 @@
|
|
|
30
31
|
"devDependencies": {
|
|
31
32
|
"@types/jest": "^30.0.0",
|
|
32
33
|
"jest": "^30.2.0",
|
|
33
|
-
"nodemon": "^3.
|
|
34
|
+
"nodemon": "^3.1.14"
|
|
34
35
|
},
|
|
35
36
|
"author": "Happy Technologies LLC",
|
|
36
37
|
"license": "MIT",
|
|
37
38
|
"repository": {
|
|
38
39
|
"type": "git",
|
|
39
|
-
"url": "https://github.com/Happy-Technologies-LLC/mcp-servicenow-nodejs.git"
|
|
40
|
+
"url": "git+https://github.com/Happy-Technologies-LLC/mcp-servicenow-nodejs.git"
|
|
40
41
|
},
|
|
41
42
|
"bugs": {
|
|
42
43
|
"url": "https://github.com/Happy-Technologies-LLC/mcp-servicenow-nodejs/issues"
|
package/src/server.js
CHANGED
|
@@ -96,9 +96,8 @@ app.get('/mcp', async (req, res) => {
|
|
|
96
96
|
sessions[transport.sessionId] = { server, transport, keepaliveInterval };
|
|
97
97
|
console.log(`🔗 New session established: ${transport.sessionId}`);
|
|
98
98
|
|
|
99
|
-
//
|
|
99
|
+
// connect() starts the transport automatically in current MCP SDK
|
|
100
100
|
await server.connect(transport);
|
|
101
|
-
await transport.start();
|
|
102
101
|
|
|
103
102
|
} catch (error) {
|
|
104
103
|
console.error('❌ Error establishing SSE connection:', error);
|
|
@@ -122,7 +121,8 @@ app.post('/mcp', async (req, res) => {
|
|
|
122
121
|
}
|
|
123
122
|
|
|
124
123
|
const { transport } = sessions[sessionId];
|
|
125
|
-
|
|
124
|
+
// express.json() already consumed the stream, so pass parsed body
|
|
125
|
+
await transport.handlePostMessage(req, res, req.body);
|
|
126
126
|
|
|
127
127
|
} catch (error) {
|
|
128
128
|
console.error('❌ Error handling POST message:', error);
|
|
@@ -163,4 +163,4 @@ app.listen(PORT, () => {
|
|
|
163
163
|
console.log('🐛 Debug mode enabled');
|
|
164
164
|
console.log(`🔗 Active ServiceNow instance: ${defaultInstance.name} - ${defaultInstance.url}`);
|
|
165
165
|
}
|
|
166
|
-
});
|
|
166
|
+
});
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"permissions": {
|
|
3
|
-
"allow": [
|
|
4
|
-
"Read(//Users/nczitzer/WebstormProjects/**)",
|
|
5
|
-
"WebFetch(domain:medium.com)",
|
|
6
|
-
"WebSearch",
|
|
7
|
-
"Read(//Users/nczitzer/Downloads/**)",
|
|
8
|
-
"Bash(find:*)",
|
|
9
|
-
"Bash(node:*)",
|
|
10
|
-
"Bash(npm:*)",
|
|
11
|
-
"Bash(timeout 10s npm run dev)",
|
|
12
|
-
"Bash(curl:*)",
|
|
13
|
-
"Bash(lsof:*)",
|
|
14
|
-
"Bash(xargs kill:*)",
|
|
15
|
-
"Bash(grep:*)",
|
|
16
|
-
"Bash(echo:*)",
|
|
17
|
-
"Bash(tee:*)",
|
|
18
|
-
"Read(//Users/nczitzer/Library/Application Support/Claude/**)",
|
|
19
|
-
"Bash(timeout:*)",
|
|
20
|
-
"Bash(gtimeout:*)",
|
|
21
|
-
"Read(//Users/nczitzer/**)",
|
|
22
|
-
"Bash(mkdir:*)",
|
|
23
|
-
"Bash(pkill:*)",
|
|
24
|
-
"Bash(cp:*)",
|
|
25
|
-
"Bash(env PORT=3003 node src/server.js)",
|
|
26
|
-
"SlashCommand(/claude-flow-help)",
|
|
27
|
-
"Bash(open:*)",
|
|
28
|
-
"Bash(claude mcp:*)",
|
|
29
|
-
"Bash(kill:*)",
|
|
30
|
-
"mcp__servicenow-nodejs__SN-List-Incidents",
|
|
31
|
-
"mcp__servicenow-nodejs__SN-List-SysUsers",
|
|
32
|
-
"mcp__servicenow-nodejs__SN-List-CmdbCis",
|
|
33
|
-
"mcp__servicenow-nodejs__SN-Create-Incident",
|
|
34
|
-
"mcp__servicenow-nodejs__SN-List-SysUserGroups",
|
|
35
|
-
"mcp__servicenow-nodejs__SN-List-ChangeRequests",
|
|
36
|
-
"mcp__servicenow-nodejs__SN-Get-Incident",
|
|
37
|
-
"mcp__servicenow-nodejs__SN-Query-Table",
|
|
38
|
-
"mcp__servicenow-nodejs__SN-List-Problems",
|
|
39
|
-
"Bash(chmod:*)",
|
|
40
|
-
"WebFetch(domain:www.servicenow.com)",
|
|
41
|
-
"mcp__servicenow-nodejs__SN-Create-Record",
|
|
42
|
-
"mcp__servicenow-nodejs__SN-Update-Record",
|
|
43
|
-
"mcp__servicenow-nodejs__SN-Execute-Background-Script",
|
|
44
|
-
"mcp__servicenow-nodejs__SN-List-Update-Sets",
|
|
45
|
-
"mcp__servicenow-nodejs__SN-Set-Update-Set",
|
|
46
|
-
"mcp__servicenow-nodejs__SN-Get-Record",
|
|
47
|
-
"WebFetch(domain:docs.servicenow.com)",
|
|
48
|
-
"WebFetch(domain:community.servicenow.com)",
|
|
49
|
-
"mcp__servicenow-nodejs__SN-Get-Table-Schema",
|
|
50
|
-
"mcp__servicenow-nodejs__SN-Discover-Table-Schema",
|
|
51
|
-
"mcp__servicenow-nodejs__SN-Get-Current-Update-Set",
|
|
52
|
-
"Read(//private/tmp/**)",
|
|
53
|
-
"Bash(tree:*)",
|
|
54
|
-
"Bash(cat:*)",
|
|
55
|
-
"WebFetch(domain:github.com)",
|
|
56
|
-
"WebFetch(domain:raw.githubusercontent.com)",
|
|
57
|
-
"WebFetch(domain:api.github.com)",
|
|
58
|
-
"WebFetch(domain:www.npmjs.com)",
|
|
59
|
-
"Bash(git add:*)",
|
|
60
|
-
"Bash(git commit:*)",
|
|
61
|
-
"Bash(git push:*)",
|
|
62
|
-
"Bash(git config:*)",
|
|
63
|
-
"Bash(git remote set-url:*)",
|
|
64
|
-
"Bash(git mv:*)",
|
|
65
|
-
"WebFetch(domain:happy-tech.biz)",
|
|
66
|
-
"Bash(brew install:*)",
|
|
67
|
-
"Bash(mcp-publisher init:*)",
|
|
68
|
-
"Bash(mcp-publisher login:*)",
|
|
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:*)",
|
|
79
|
-
"Bash(nc:*)",
|
|
80
|
-
"Bash(mv:*)",
|
|
81
|
-
"mcp__servicenow__SN-Create-Record",
|
|
82
|
-
"Bash(ps:*)",
|
|
83
|
-
"Bash(gh repo view:*)",
|
|
84
|
-
"Bash(docker stop:*)",
|
|
85
|
-
"Bash(docker rm:*)",
|
|
86
|
-
"Bash(docker logs:*)",
|
|
87
|
-
"Bash(docker buildx:*)",
|
|
88
|
-
"Bash(docker manifest inspect:*)",
|
|
89
|
-
"Bash(git stash:*)",
|
|
90
|
-
"Bash(git pull:*)",
|
|
91
|
-
"Bash(git rebase:*)",
|
|
92
|
-
"Bash(git fetch:*)",
|
|
93
|
-
"Bash(git reset:*)"
|
|
94
|
-
],
|
|
95
|
-
"deny": [],
|
|
96
|
-
"ask": []
|
|
97
|
-
}
|
|
98
|
-
}
|