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 CHANGED
@@ -3,7 +3,7 @@
3
3
  # Part of Happy Technologies composable service ecosystem
4
4
 
5
5
  # Stage 1: Dependencies
6
- FROM node:22-alpine AS dependencies
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:22-alpine AS production
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.json config/servicenow-instances.json
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.json config/servicenow-instances.json
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.json config/servicenow-instances.json
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.7",
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": "./src/stdio-server.js"
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.25.3",
24
- "axios": "^1.13.4",
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.0.2"
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
- // Connect server to transport and start SSE
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
- await transport.handlePostMessage(req, res);
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
- }