@uteamup/mcp-server 2.3.0-beta.9 → 2.4.0-beta.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/CHANGELOG.md +39 -0
- package/README.md +49 -65
- package/index.js +4 -2
- package/openapi-actions.json +1 -1
- package/package.json +2 -2
- package/server.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,45 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [2.4.0-beta.9](https://github.com/UteamUP/uteamup-mcp/compare/2.3.0-beta.9...2.4.0-beta.9) (2026-10-21)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* package OpenAI marketplace integration with UteamUP branding ([026ad6f](https://github.com/UteamUP/uteamup-mcp/commit/026ad6f207e007f0085aecc73162d3ded97dc9ad))
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### Bug Fixes
|
|
17
|
+
|
|
18
|
+
* **auth:** bind the proxy's OAuth token to the MCP endpoint ([a5b0f4a](https://github.com/UteamUP/uteamup-mcp/commit/a5b0f4a116579098dc60f67861d14eb1d3fdbfd8))
|
|
19
|
+
* avoid redundant Claude documentation asset review ([5818f0e](https://github.com/UteamUP/uteamup-mcp/commit/5818f0e86c93fed7b703f5775f3a053f83ed595f))
|
|
20
|
+
* complete Claude listing links and data handling disclosures ([e3b2b78](https://github.com/UteamUP/uteamup-mcp/commit/e3b2b789def1f8067b0a1f35644d984a43572996))
|
|
21
|
+
* correct Glama maintainer identity ([dc9f5a5](https://github.com/UteamUP/uteamup-mcp/commit/dc9f5a57ad01d5f3ca2736f5c9493e40cb195191))
|
|
22
|
+
* correct Grok marketplace contact ([48cad67](https://github.com/UteamUP/uteamup-mcp/commit/48cad677694d10260501613f2bd2a61d807fcd23))
|
|
23
|
+
* package Claude plugin with locked dependencies and explicit configuration ([92a2e40](https://github.com/UteamUP/uteamup-mcp/commit/92a2e405acf395553826e0c7b08913a9aed4b1a9))
|
|
24
|
+
* prepare MCP manifests for marketplace validation ([1b555a6](https://github.com/UteamUP/uteamup-mcp/commit/1b555a66cd8ae9fe390cf127ce349499d2f3ded9))
|
|
25
|
+
* update fast-copy to patched version ([0fd7cd8](https://github.com/UteamUP/uteamup-mcp/commit/0fd7cd8ece27446bbb5a118da5b981094d2010a9))
|
|
26
|
+
* update release workflow conditions and add test for MCP registry publication ([44180fd](https://github.com/UteamUP/uteamup-mcp/commit/44180fd7f859340f6752dd1b07119d45df0703ad))
|
|
27
|
+
* use UteamUP publisher contact for Claude submissions ([acd457f](https://github.com/UteamUP/uteamup-mcp/commit/acd457f7a2a114a77f2b55a63b2eaf7be019078d))
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
### Documentation
|
|
31
|
+
|
|
32
|
+
* correct Claude troubleshooting and read-only access guidance ([aba9dfe](https://github.com/UteamUP/uteamup-mcp/commit/aba9dfebbb98dd5dc877fc26eba9df201278d0df))
|
|
33
|
+
* correct marketplace setup links and production connection guidance ([91c4945](https://github.com/UteamUP/uteamup-mcp/commit/91c4945f561f3c26da8dd3f0da5c4be7883cbe94))
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
### Tests
|
|
37
|
+
|
|
38
|
+
* cover floorplan scan draft tools ([f251595](https://github.com/UteamUP/uteamup-mcp/commit/f251595c54d35320e8ef9c3cd42f3139f831666f))
|
|
39
|
+
* **model3d:** cover the 3D model and scene items MCP tools ([5ef7c9e](https://github.com/UteamUP/uteamup-mcp/commit/5ef7c9ec8ae58ec3d5e980b9b59d063935366eed))
|
|
40
|
+
* **model3d:** cover the uteamup_model3d_catalogue_* tools ([2d7eb15](https://github.com/UteamUP/uteamup-mcp/commit/2d7eb153eb38430b6c5de7300b7cd9e3b14392d7))
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
### CI/CD
|
|
44
|
+
|
|
45
|
+
* publish @uteamup/mcp-server to npm on every release ([85cf397](https://github.com/UteamUP/uteamup-mcp/commit/85cf39706266f54aacdc3e8e5a9869b66080cbf8))
|
|
46
|
+
|
|
8
47
|
## [2.3.0-beta.9](https://github.com/UteamUP/uteamup-mcp/compare/2.2.0-beta.9...2.3.0-beta.9) (2026-10-19)
|
|
9
48
|
|
|
10
49
|
|
package/README.md
CHANGED
|
@@ -13,22 +13,21 @@
|
|
|
13
13
|
## Links
|
|
14
14
|
|
|
15
15
|
- **📦 [npm Package](https://www.npmjs.com/package/@uteamup/mcp-server)** - Install with `npx -y @uteamup/mcp-server`
|
|
16
|
-
- **📖 [Documentation](https://
|
|
17
|
-
- **🐛 [Issues](https://github.com/uteamup
|
|
18
|
-
- **💬 [Support](mailto:
|
|
16
|
+
- **📖 [Documentation](https://github.com/UteamUP/uteamup-mcp#readme)** - Full MCP integration guide
|
|
17
|
+
- **🐛 [Issues](https://github.com/UteamUP/uteamup-mcp/issues)** - Report bugs and request features
|
|
18
|
+
- **💬 [Support](mailto:gisli@uteamup.com)** - Get help
|
|
19
19
|
|
|
20
20
|
## What is this?
|
|
21
21
|
|
|
22
22
|
This package enables AI assistants like Claude Desktop and Claude Code to connect to your UteamUP CMMS system using the Model Context Protocol (MCP). It handles OAuth 2.0 authentication automatically, so you can manage work orders, assets, inventory, and more through natural conversation.
|
|
23
23
|
|
|
24
|
-
### Read-only access for Grok, Grok Bot and ChatGPT
|
|
24
|
+
### Read-only access for Claude, Grok, Grok Bot and ChatGPT
|
|
25
25
|
|
|
26
|
-
Use the
|
|
26
|
+
Use the production HTTPS endpoint:
|
|
27
27
|
|
|
28
28
|
| Environment | MCP server URL |
|
|
29
29
|
|---|---|
|
|
30
30
|
| Production | `https://api.uteamup.com/mcp/read-only` |
|
|
31
|
-
| Development | `https://devback.uteamup.com/mcp/read-only` |
|
|
32
31
|
|
|
33
32
|
**Sign in with your UteamUP account (recommended).** A tenant administrator (`Tenant.Update`)
|
|
34
33
|
first turns on **Allow members to connect AI assistants** in the company's **API Keys** tab.
|
|
@@ -42,6 +41,8 @@ Then each member connects their own assistant; no API key or secret is involved:
|
|
|
42
41
|
Setup → Plugins card; each teammate signs in the first time they use it.
|
|
43
42
|
- **ChatGPT:** add a custom MCP server with the endpoint and choose OAuth; ChatGPT registers
|
|
44
43
|
itself and you approve on the same consent page.
|
|
44
|
+
- **Claude:** add a custom connector with the endpoint, choose **Sign in now** and
|
|
45
|
+
**Register automatically**, then approve on the UteamUP consent page.
|
|
45
46
|
|
|
46
47
|
The assistant uses the member's own permissions in the chosen company, and only the read
|
|
47
48
|
tools below. Access tokens last 60 minutes and refresh tokens rotate on every use. A member
|
|
@@ -75,11 +76,10 @@ and [Grok connectors](https://docs.x.ai/grok/connectors).
|
|
|
75
76
|
|
|
76
77
|
**Key Features:**
|
|
77
78
|
- ✅ Automatic OAuth 2.0 + PKCE authentication
|
|
78
|
-
- ✅ Token caching
|
|
79
|
+
- ✅ Token caching with automatic refresh
|
|
79
80
|
- ✅ Works with Claude Desktop, Claude Code, and any MCP-compatible client
|
|
80
81
|
- ✅ Zero configuration - just provide API credentials
|
|
81
82
|
- ✅ Comprehensive error messages
|
|
82
|
-
- ✅ Development mode support (self-signed certificates)
|
|
83
83
|
- ✅ Server-Sent Events (SSE) response parsing
|
|
84
84
|
- ✅ Proper JSON-RPC 2.0 notification handling
|
|
85
85
|
- ✅ **NEW:** Structured logging with Pino (JSON/text formats)
|
|
@@ -87,9 +87,10 @@ and [Grok connectors](https://docs.x.ai/grok/connectors).
|
|
|
87
87
|
- ✅ **NEW:** Performance monitoring and metrics
|
|
88
88
|
- ✅ **NEW:** Retry logic with exponential backoff
|
|
89
89
|
- ✅ **NEW:** CLI utilities (--help, --version, --validate-config, --test-auth)
|
|
90
|
-
- ✅
|
|
90
|
+
- ✅ Comprehensive test suite
|
|
91
91
|
|
|
92
|
-
**
|
|
92
|
+
**Release status:** Beta. The npm badge above shows the published version;
|
|
93
|
+
see [CHANGELOG.md](CHANGELOG.md) for release details.
|
|
93
94
|
|
|
94
95
|
**Example Conversation:**
|
|
95
96
|
```
|
|
@@ -147,8 +148,11 @@ npm install -g @uteamup/mcp-server
|
|
|
147
148
|
|
|
148
149
|
### 2. Configure Claude Desktop
|
|
149
150
|
|
|
150
|
-
**
|
|
151
|
-
|
|
151
|
+
In Claude Desktop, open **Settings → Developer → Edit Config**.
|
|
152
|
+
The configuration file is located at:
|
|
153
|
+
|
|
154
|
+
- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
155
|
+
- **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
|
|
152
156
|
|
|
153
157
|
Add this configuration:
|
|
154
158
|
|
|
@@ -167,22 +171,8 @@ Add this configuration:
|
|
|
167
171
|
}
|
|
168
172
|
```
|
|
169
173
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
{
|
|
173
|
-
"mcpServers": {
|
|
174
|
-
"uteamup-dev": {
|
|
175
|
-
"command": "npx",
|
|
176
|
-
"args": ["-y", "@uteamup/mcp-server"],
|
|
177
|
-
"env": {
|
|
178
|
-
"UTEAMUP_API_KEY": "your-api-key",
|
|
179
|
-
"UTEAMUP_SECRET": "your-secret",
|
|
180
|
-
"UTEAMUP_API_BASE_URL": "https://devback.uteamup.com"
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
```
|
|
174
|
+
All UteamUP MCP connections use `https://api.uteamup.com`. Use a restricted key
|
|
175
|
+
from a demo workspace when validating an integration.
|
|
186
176
|
|
|
187
177
|
### 3. Restart Claude Desktop
|
|
188
178
|
|
|
@@ -227,16 +217,14 @@ That's it! 🎉
|
|
|
227
217
|
| `UTEAMUP_TOKEN_CACHE_DIR` | Persistent token cache directory | - |
|
|
228
218
|
| `UTEAMUP_TOKEN_REFRESH_MARGIN` | Token refresh margin in seconds | `300` |
|
|
229
219
|
|
|
230
|
-
### API Base
|
|
220
|
+
### API Base URL
|
|
231
221
|
|
|
232
222
|
The configured base URL must be a bare HTTPS origin. Credentials, paths, query
|
|
233
223
|
parameters, fragments, and plain HTTP endpoints are rejected.
|
|
234
224
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
| **Development** | `https://devback.uteamup.com` | Testing against dev backend |
|
|
239
|
-
| **Local** | `https://localhost:5002` | Local development with self-signed cert |
|
|
225
|
+
Always use `https://api.uteamup.com`, including when running the Node proxy
|
|
226
|
+
locally. The full MCP endpoint is `/mcp`; the read-only endpoint is
|
|
227
|
+
`/mcp/read-only`.
|
|
240
228
|
|
|
241
229
|
### Permissions
|
|
242
230
|
|
|
@@ -260,7 +248,7 @@ Your AI assistant's permissions are controlled by the **role assigned to your AP
|
|
|
260
248
|
**Cause:** `UTEAMUP_API_KEY` or `UTEAMUP_SECRET` not set in MCP configuration.
|
|
261
249
|
|
|
262
250
|
**Solution:**
|
|
263
|
-
1. Check your
|
|
251
|
+
1. Check your Claude Desktop configuration file (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS or `%APPDATA%\Claude\claude_desktop_config.json` on Windows)
|
|
264
252
|
2. Verify the `env` section includes both `UTEAMUP_API_KEY` and `UTEAMUP_SECRET`
|
|
265
253
|
3. Ensure there are no typos in the environment variable names
|
|
266
254
|
4. Restart Claude Desktop after making changes
|
|
@@ -309,36 +297,32 @@ Your AI assistant's permissions are controlled by the **role assigned to your AP
|
|
|
309
297
|
1. **Check your internet connection**
|
|
310
298
|
2. **Verify the base URL:**
|
|
311
299
|
- Production: `https://api.uteamup.com` (default, no env var needed)
|
|
312
|
-
- Development: Set `UTEAMUP_API_BASE_URL=https://devback.uteamup.com`
|
|
313
300
|
3. **Check if UteamUP is down:**
|
|
314
|
-
- Contact
|
|
315
|
-
4. **For local development:**
|
|
316
|
-
- Ensure backend is running: `cd UteamUP_Backend/UteamUP_API && make watch`
|
|
317
|
-
- Use `UTEAMUP_API_BASE_URL=https://localhost:5002`
|
|
301
|
+
- Contact gisli@uteamup.com
|
|
318
302
|
|
|
319
303
|
---
|
|
320
304
|
|
|
321
305
|
#### "UNABLE_TO_VERIFY_LEAF_SIGNATURE" or certificate errors
|
|
322
306
|
|
|
323
|
-
**Cause:**
|
|
307
|
+
**Cause:** The connection cannot validate the server's TLS certificate.
|
|
324
308
|
|
|
325
|
-
**Solution:**
|
|
326
|
-
1. Verify
|
|
327
|
-
2.
|
|
328
|
-
3.
|
|
309
|
+
**Solution:**
|
|
310
|
+
1. Verify the API base URL is `https://api.uteamup.com`
|
|
311
|
+
2. Check the device's date and trusted certificate configuration
|
|
312
|
+
3. Contact gisli@uteamup.com if the certificate error persists
|
|
329
313
|
|
|
330
314
|
---
|
|
331
315
|
|
|
332
316
|
#### Tools list is empty or incomplete
|
|
333
317
|
|
|
334
|
-
**Cause:**
|
|
318
|
+
**Cause:** The credential, role, or company configuration does not grant the requested tools.
|
|
335
319
|
|
|
336
320
|
**Solution:**
|
|
337
321
|
1. Go to **Tenant Settings** → **API Keys** in UteamUP
|
|
338
|
-
2.
|
|
339
|
-
3.
|
|
340
|
-
4.
|
|
341
|
-
5.
|
|
322
|
+
2. Confirm the key is active and MCP-enabled for the intended company
|
|
323
|
+
3. Ask a company administrator to check the specific read permissions needed for your workflow
|
|
324
|
+
4. For the remote read-only connector, use a restricted read-only role; write or wildcard grants are not eligible
|
|
325
|
+
5. Reconnect the client to refresh its tool list after an authorized permission change
|
|
342
326
|
|
|
343
327
|
---
|
|
344
328
|
|
|
@@ -402,9 +386,9 @@ Enable different log levels and formats:
|
|
|
402
386
|
```
|
|
403
387
|
|
|
404
388
|
4. **Get help:**
|
|
405
|
-
- Email:
|
|
406
|
-
- Documentation: https://
|
|
407
|
-
- GitHub Issues: https://github.com/uteamup
|
|
389
|
+
- Email: gisli@uteamup.com
|
|
390
|
+
- Documentation: https://github.com/UteamUP/uteamup-mcp#readme
|
|
391
|
+
- GitHub Issues: https://github.com/UteamUP/uteamup-mcp/issues
|
|
408
392
|
|
|
409
393
|
---
|
|
410
394
|
|
|
@@ -414,20 +398,20 @@ Enable different log levels and formats:
|
|
|
414
398
|
|
|
415
399
|
```bash
|
|
416
400
|
# Clone the repository
|
|
417
|
-
git clone https://github.com/UteamUP/uteamup-mcp
|
|
418
|
-
cd uteamup-mcp
|
|
401
|
+
git clone https://github.com/UteamUP/uteamup-mcp.git
|
|
402
|
+
cd uteamup-mcp
|
|
419
403
|
|
|
420
404
|
# Install dependencies
|
|
421
405
|
npm install
|
|
422
406
|
|
|
423
|
-
# Run tests
|
|
424
|
-
npm test
|
|
407
|
+
# Run tests only at the final whole-goal gate (see MCPGuidelines.md)
|
|
408
|
+
UTEAMUP_FINAL_GOAL_GATE=1 npm test
|
|
425
409
|
|
|
426
410
|
# Test with debug logging
|
|
427
411
|
export UTEAMUP_LOG_LEVEL=DEBUG
|
|
428
|
-
export UTEAMUP_API_KEY="your-
|
|
429
|
-
export UTEAMUP_SECRET="your-
|
|
430
|
-
export UTEAMUP_API_BASE_URL="https://
|
|
412
|
+
export UTEAMUP_API_KEY="your-demo-workspace-key"
|
|
413
|
+
export UTEAMUP_SECRET="your-demo-workspace-secret"
|
|
414
|
+
export UTEAMUP_API_BASE_URL="https://api.uteamup.com"
|
|
431
415
|
node index.js
|
|
432
416
|
|
|
433
417
|
# CLI Utilities
|
|
@@ -451,7 +435,7 @@ npm link
|
|
|
451
435
|
"mcpServers": {
|
|
452
436
|
"uteamup-local": {
|
|
453
437
|
"command": "node",
|
|
454
|
-
"args": ["/absolute/path/to/uteamup-mcp
|
|
438
|
+
"args": ["/absolute/path/to/uteamup-mcp/index.js"],
|
|
455
439
|
"env": {
|
|
456
440
|
"UTEAMUP_API_KEY": "your-key",
|
|
457
441
|
"UTEAMUP_SECRET": "your-secret",
|
|
@@ -465,7 +449,7 @@ npm link
|
|
|
465
449
|
### Project Structure
|
|
466
450
|
|
|
467
451
|
```
|
|
468
|
-
uteamup-mcp
|
|
452
|
+
uteamup-mcp/
|
|
469
453
|
├── index.js # Main entry point (OAuth + MCP client)
|
|
470
454
|
├── package.json # Package metadata
|
|
471
455
|
├── README.md # This file
|
|
@@ -550,9 +534,9 @@ See [LICENSE](LICENSE) for details.
|
|
|
550
534
|
|
|
551
535
|
## Support
|
|
552
536
|
|
|
553
|
-
- **Documentation:** https://
|
|
554
|
-
- **Email:**
|
|
555
|
-
- **Issues:** https://github.com/uteamup
|
|
537
|
+
- **Documentation:** https://github.com/UteamUP/uteamup-mcp#readme
|
|
538
|
+
- **Email:** gisli@uteamup.com
|
|
539
|
+
- **Issues:** https://github.com/UteamUP/uteamup-mcp/issues
|
|
556
540
|
|
|
557
541
|
---
|
|
558
542
|
|
package/index.js
CHANGED
|
@@ -280,14 +280,16 @@ async function requestNewAccessToken() {
|
|
|
280
280
|
|
|
281
281
|
info('Authorization code received');
|
|
282
282
|
|
|
283
|
-
// Step 2: Exchange for access token with retry
|
|
283
|
+
// Step 2: Exchange for access token with retry. Naming the MCP endpoint as the resource
|
|
284
|
+
// (RFC 8707) gets a token the backend accepts only there, never on its REST API.
|
|
284
285
|
const tokenData = new URLSearchParams({
|
|
285
286
|
grant_type: 'authorization_code',
|
|
286
287
|
code: authCode,
|
|
287
288
|
redirect_uri: OAUTH_REDIRECT_URI,
|
|
288
289
|
client_id: config.apiKey,
|
|
289
290
|
client_secret: config.secret,
|
|
290
|
-
code_verifier: verifier
|
|
291
|
+
code_verifier: verifier,
|
|
292
|
+
resource: new URL(config.mcpPath, config.baseUrl).href
|
|
291
293
|
}).toString();
|
|
292
294
|
|
|
293
295
|
const tokenResponse = await retryWithBackoff(
|
package/openapi-actions.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"info": {
|
|
4
4
|
"title": "UteamUP CMMS Read-Only Assistant Actions",
|
|
5
5
|
"description": "OpenAPI 3.1.0 Action schema for ChatGPT Custom GPTs (GPT Store) and Google Gemini / Vertex AI Extensions. Invokes the UteamUP read-only MCP endpoint (/mcp/read-only) to list and search assets and work orders using the caller's tenant-scoped permissions.",
|
|
6
|
-
"version": "2.
|
|
6
|
+
"version": "2.4.0-beta.9",
|
|
7
7
|
"x-logo": {
|
|
8
8
|
"url": "https://raw.githubusercontent.com/UteamUP/uteamup-mcp/main/assets/logo.png",
|
|
9
9
|
"altText": "UteamUP CMMS"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uteamup/mcp-server",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.0-beta.9",
|
|
4
4
|
"mcpName": "io.github.UteamUP/mcp-server",
|
|
5
5
|
"description": "MCP server client for UteamUP - enables Claude Desktop/Code integration with automatic OAuth 2.0 authentication",
|
|
6
6
|
"main": "index.js",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"work-orders",
|
|
31
31
|
"asset-management"
|
|
32
32
|
],
|
|
33
|
-
"author": "UteamUP <
|
|
33
|
+
"author": "UteamUP <gisli@uteamup.com>",
|
|
34
34
|
"license": "MIT",
|
|
35
35
|
"repository": {
|
|
36
36
|
"type": "git",
|
package/server.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"name": "io.github.UteamUP/mcp-server",
|
|
4
4
|
"title": "UteamUP CMMS",
|
|
5
5
|
"description": "Connect AI assistants to UteamUP CMMS for work orders, assets, maintenance, and inventory.",
|
|
6
|
-
"version": "2.
|
|
6
|
+
"version": "2.4.0-beta.9",
|
|
7
7
|
"websiteUrl": "https://uteamup.com",
|
|
8
8
|
"icons": [
|
|
9
9
|
{
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"registryType": "npm",
|
|
31
31
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
32
32
|
"identifier": "@uteamup/mcp-server",
|
|
33
|
-
"version": "2.
|
|
33
|
+
"version": "2.4.0-beta.9",
|
|
34
34
|
"transport": {
|
|
35
35
|
"type": "stdio"
|
|
36
36
|
},
|