@uteamup/mcp-server 2.3.0-beta.9 → 2.6.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 +118 -0
- package/README.md +72 -67
- package/index.js +5 -5
- package/openapi-actions.json +1 -1
- package/package.json +2 -2
- package/server.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,124 @@ 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.6.0-beta.9](https://github.com/UteamUP/uteamup-mcp/compare/2.5.0-beta.9...2.6.0-beta.9) (2026-11-01)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* add client link management tests for IoT tools ([ad7a02c](https://github.com/UteamUP/uteamup-mcp/commit/ad7a02cd0dd1c122e2dde57f5288302c567a6899))
|
|
14
|
+
* add tests for IoT alert workorder conversion and GUID preservation ([ce5d910](https://github.com/UteamUP/uteamup-mcp/commit/ce5d91018a08a7e79b796f02ebbfa353b307fb9b))
|
|
15
|
+
* complete marketplace shipment and discovery workflows ([abbe260](https://github.com/UteamUP/uteamup-mcp/commit/abbe2602702f9b4e0ab6aedacf4abeacaf01ebff))
|
|
16
|
+
* expose quantity stock installation in MCP and CLI ([d8c0529](https://github.com/UteamUP/uteamup-mcp/commit/d8c052995b9787aeee6794cd119f28761260e51d))
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
### Bug Fixes
|
|
20
|
+
|
|
21
|
+
* report the released MCP package version ([b99c819](https://github.com/UteamUP/uteamup-mcp/commit/b99c819142221a4239188a78a16e77a4d72bb6ee))
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
### Tests
|
|
25
|
+
|
|
26
|
+
* add UteamupMarketplaceTransactionShip tool tests for shipping functionality ([999c19b](https://github.com/UteamUP/uteamup-mcp/commit/999c19b055ce9ee1c49dc51c1ea4a748ba4d3fe2))
|
|
27
|
+
* cover GUID arguments in floorplan read tools ([274489c](https://github.com/UteamUP/uteamup-mcp/commit/274489ca0ec8233a36f94fc410c9419810c68b0f))
|
|
28
|
+
* cover MCP measurement presentation contracts ([2dfbbb0](https://github.com/UteamUP/uteamup-mcp/commit/2dfbbb030ef823ae29049c9dafa0665680e413bd))
|
|
29
|
+
* cover paged asset activity comment tools ([d05ddb8](https://github.com/UteamUP/uteamup-mcp/commit/d05ddb8c7fa789ac8664b8f97c5b140342b6db21))
|
|
30
|
+
* **iot:** cover the device room GUID passthrough on update ([5604a5c](https://github.com/UteamUP/uteamup-mcp/commit/5604a5caa69343d4755cf65ad841ff9357477a6d))
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
### CI/CD
|
|
34
|
+
|
|
35
|
+
* allow replaying the npmjs publish for an existing tag ([ae4bc03](https://github.com/UteamUP/uteamup-mcp/commit/ae4bc039bbf1ad5defb7cfd43d71dada2344d754))
|
|
36
|
+
|
|
37
|
+
## [2.5.0-beta.9](https://github.com/UteamUP/uteamup-mcp/compare/2.4.0-beta.9...2.5.0-beta.9) (2026-10-28)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
### Features
|
|
41
|
+
|
|
42
|
+
* **connector:** add Claude Connectors Directory for UteamUP read-only access ([1913d6a](https://github.com/UteamUP/uteamup-mcp/commit/1913d6a8713185fd607d49495aff125eb51710e8))
|
|
43
|
+
* let requesters withdraw or request closure of their work ([5361666](https://github.com/UteamUP/uteamup-mcp/commit/5361666103dbc880c994990a15c8c52053e79d5f))
|
|
44
|
+
* **plugins:** add MiniMax Code plugin for the read-only UteamUP MCP endpoint ([6489802](https://github.com/UteamUP/uteamup-mcp/commit/648980262c7a673eecafaee5a078a71f6db3bbb2))
|
|
45
|
+
* **plugins:** add ZCode read-only MCP plugin and marketplace entry ([0f1dba5](https://github.com/UteamUP/uteamup-mcp/commit/0f1dba5cc2d1c963eda9dd94657af001570cf33f))
|
|
46
|
+
* **tests:** add telemetry overview test for IoT MCP tools ([8fdefff](https://github.com/UteamUP/uteamup-mcp/commit/8fdefff7b185697ab82fab045c771570386f2d36))
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
### Documentation
|
|
50
|
+
|
|
51
|
+
* assistant links need a seat; directory pack uses Demo - Solid Energy ([8952ac8](https://github.com/UteamUP/uteamup-mcp/commit/8952ac8e55abb281c8258ed7be8129a443e8c619))
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
### Tests
|
|
55
|
+
|
|
56
|
+
* **asset:** cover document and vendor patch payloads ([2b3ded7](https://github.com/UteamUP/uteamup-mcp/commit/2b3ded7a67058097e4e379d96627f69e7a6aa6bd))
|
|
57
|
+
* **asset:** uteamup_asset_patch forwards asset type fields ([c78805c](https://github.com/UteamUP/uteamup-mcp/commit/c78805c336116543f838c5752135fb81e51134e1))
|
|
58
|
+
* **association:** cover the housing association MCP tools ([703ee30](https://github.com/UteamUP/uteamup-mcp/commit/703ee304e31443b8619385220d777aa0af5a0097))
|
|
59
|
+
* **association:** cover the meeting minutes document GUID ([33efcc9](https://github.com/UteamUP/uteamup-mcp/commit/33efcc90fa3a1d09429b086b7ec7453a57e24c93))
|
|
60
|
+
* cover AI request filters through the MCP proxy ([beaffaf](https://github.com/UteamUP/uteamup-mcp/commit/beaffafbf8b065fbd99c84de249570ed31ea0753))
|
|
61
|
+
* cover location node type proxy contracts ([448d40c](https://github.com/UteamUP/uteamup-mcp/commit/448d40ccbfeb3e718236b0c531fe855b5bd7c189))
|
|
62
|
+
* cover named workorder safety review transport ([b6f5d19](https://github.com/UteamUP/uteamup-mcp/commit/b6f5d196dcc086722ba8bdc7294c664beaf8255d))
|
|
63
|
+
* cover paged operational plan discovery contracts ([d155e71](https://github.com/UteamUP/uteamup-mcp/commit/d155e719c7741273ba622bcb76739eb2d3d7901a))
|
|
64
|
+
* cover planned stock arrival proxy routes ([476c96c](https://github.com/UteamUP/uteamup-mcp/commit/476c96ca25a2e7998178a7eb4466f08ab4c55219))
|
|
65
|
+
* cover safe asset document detachment through MCP ([23b28f2](https://github.com/UteamUP/uteamup-mcp/commit/23b28f2a4b2b33a7af6dd0e4b2d01a219fe98df6))
|
|
66
|
+
* cover tenant AI request history tool ([bd9a543](https://github.com/UteamUP/uteamup-mcp/commit/bd9a543dbd311917fc9a5808f820369038c8ac81))
|
|
67
|
+
* **identity:** MCP proxy test for UteamupIdentityVerificationStatus ([374698c](https://github.com/UteamUP/uteamup-mcp/commit/374698c1e3d6fa9840a104a84b63e65ce23e8c85))
|
|
68
|
+
* **iot:** cover the IoT device and device-key tools ([b324540](https://github.com/UteamUP/uteamup-mcp/commit/b3245400b5b18c633ad5cbc565ec8b783501a501))
|
|
69
|
+
* **marketplace:** add tests for public Wanted catalog opt-in on create and update ([8f61853](https://github.com/UteamUP/uteamup-mcp/commit/8f61853420ce66d2a72f01386f9ea59be35c2aba))
|
|
70
|
+
* **mcp:** cover linked parts and short stock searches ([dc4ec45](https://github.com/UteamUP/uteamup-mcp/commit/dc4ec45d6e8baed811b293567155df31aa15d19b))
|
|
71
|
+
* **model3d:** cover the spec lookup tool ([808dd30](https://github.com/UteamUP/uteamup-mcp/commit/808dd30e50e3d4298ecb45c7f45b6fbd16c90991))
|
|
72
|
+
* **model3d:** cover the uteamup_model3d_duplicate proxy contract ([f1dba0b](https://github.com/UteamUP/uteamup-mcp/commit/f1dba0b88a4ddca2be3ee2dd48dceee45be99359))
|
|
73
|
+
* **model3d:** cover the uteamup_model3d_view_photos tool ([29b153e](https://github.com/UteamUP/uteamup-mcp/commit/29b153e378903858681a13cba3f1083d313ae17d))
|
|
74
|
+
* **parts:** cover real stock level proxy contracts ([2952b50](https://github.com/UteamUP/uteamup-mcp/commit/2952b50bfa5362590d47b466bdf0cceec7397e0d))
|
|
75
|
+
* preserve external push pause identity refusal ([514d98f](https://github.com/UteamUP/uteamup-mcp/commit/514d98f9294d8b830937556fee3b085b7be3abdf))
|
|
76
|
+
* preserve missing health evidence in tenant summary responses ([ef5b538](https://github.com/UteamUP/uteamup-mcp/commit/ef5b538162b8d057be7fb31798bdf42753d32776))
|
|
77
|
+
* preserve room node links through MCP scene calls ([c1754e3](https://github.com/UteamUP/uteamup-mcp/commit/c1754e37e852d5085b10987634de6532c21404a4))
|
|
78
|
+
* preserve stock assignment paging and permission errors ([d80798e](https://github.com/UteamUP/uteamup-mcp/commit/d80798e4f983e32b7081da9796eb6ef2bc2a857c))
|
|
79
|
+
* preserve unknown capacity in recorded activity summaries ([841e7fd](https://github.com/UteamUP/uteamup-mcp/commit/841e7fd1073f928e498d10973f074bd8ed48fdb9))
|
|
80
|
+
* **productwebfiles:** cover the product web files MCP tools ([28ae0e5](https://github.com/UteamUP/uteamup-mcp/commit/28ae0e5ea5d3f6535388b2d1c96679d2cd52263f))
|
|
81
|
+
* retain anonymous requirement origins through marketplace proxy ([c6ec4a6](https://github.com/UteamUP/uteamup-mcp/commit/c6ec4a63bec6c9e5ed7d462812d3bfdf67f59279))
|
|
82
|
+
* retain payer clearing across the contract proxy ([60d2ecd](https://github.com/UteamUP/uteamup-mcp/commit/60d2ecd5bff561bdac81aa6d0c645d8ffb9a3a4d))
|
|
83
|
+
* **tenant:** cover the UteamUP Home tenant tools ([284fa9a](https://github.com/UteamUP/uteamup-mcp/commit/284fa9ad716dd0a4cd1c8a3efa88c52cc7f87b49))
|
|
84
|
+
* **tenant:** send tenantKind as the camelCase string the API uses ([f4fd776](https://github.com/UteamUP/uteamup-mcp/commit/f4fd7760b46de403e18c0749d74f57664cbdd6e6))
|
|
85
|
+
* **tenant:** UteamUP Home children tools ([4e94080](https://github.com/UteamUP/uteamup-mcp/commit/4e940803479f6daa2039a341a4a9a35246c91d16))
|
|
86
|
+
|
|
87
|
+
## [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)
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
### Features
|
|
91
|
+
|
|
92
|
+
* package OpenAI marketplace integration with UteamUP branding ([026ad6f](https://github.com/UteamUP/uteamup-mcp/commit/026ad6f207e007f0085aecc73162d3ded97dc9ad))
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
### Bug Fixes
|
|
96
|
+
|
|
97
|
+
* **auth:** bind the proxy's OAuth token to the MCP endpoint ([a5b0f4a](https://github.com/UteamUP/uteamup-mcp/commit/a5b0f4a116579098dc60f67861d14eb1d3fdbfd8))
|
|
98
|
+
* avoid redundant Claude documentation asset review ([5818f0e](https://github.com/UteamUP/uteamup-mcp/commit/5818f0e86c93fed7b703f5775f3a053f83ed595f))
|
|
99
|
+
* complete Claude listing links and data handling disclosures ([e3b2b78](https://github.com/UteamUP/uteamup-mcp/commit/e3b2b789def1f8067b0a1f35644d984a43572996))
|
|
100
|
+
* correct Glama maintainer identity ([dc9f5a5](https://github.com/UteamUP/uteamup-mcp/commit/dc9f5a57ad01d5f3ca2736f5c9493e40cb195191))
|
|
101
|
+
* correct Grok marketplace contact ([48cad67](https://github.com/UteamUP/uteamup-mcp/commit/48cad677694d10260501613f2bd2a61d807fcd23))
|
|
102
|
+
* package Claude plugin with locked dependencies and explicit configuration ([92a2e40](https://github.com/UteamUP/uteamup-mcp/commit/92a2e405acf395553826e0c7b08913a9aed4b1a9))
|
|
103
|
+
* prepare MCP manifests for marketplace validation ([1b555a6](https://github.com/UteamUP/uteamup-mcp/commit/1b555a66cd8ae9fe390cf127ce349499d2f3ded9))
|
|
104
|
+
* update fast-copy to patched version ([0fd7cd8](https://github.com/UteamUP/uteamup-mcp/commit/0fd7cd8ece27446bbb5a118da5b981094d2010a9))
|
|
105
|
+
* update release workflow conditions and add test for MCP registry publication ([44180fd](https://github.com/UteamUP/uteamup-mcp/commit/44180fd7f859340f6752dd1b07119d45df0703ad))
|
|
106
|
+
* use UteamUP publisher contact for Claude submissions ([acd457f](https://github.com/UteamUP/uteamup-mcp/commit/acd457f7a2a114a77f2b55a63b2eaf7be019078d))
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
### Documentation
|
|
110
|
+
|
|
111
|
+
* correct Claude troubleshooting and read-only access guidance ([aba9dfe](https://github.com/UteamUP/uteamup-mcp/commit/aba9dfebbb98dd5dc877fc26eba9df201278d0df))
|
|
112
|
+
* correct marketplace setup links and production connection guidance ([91c4945](https://github.com/UteamUP/uteamup-mcp/commit/91c4945f561f3c26da8dd3f0da5c4be7883cbe94))
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
### Tests
|
|
116
|
+
|
|
117
|
+
* cover floorplan scan draft tools ([f251595](https://github.com/UteamUP/uteamup-mcp/commit/f251595c54d35320e8ef9c3cd42f3139f831666f))
|
|
118
|
+
* **model3d:** cover the 3D model and scene items MCP tools ([5ef7c9e](https://github.com/UteamUP/uteamup-mcp/commit/5ef7c9ec8ae58ec3d5e980b9b59d063935366eed))
|
|
119
|
+
* **model3d:** cover the uteamup_model3d_catalogue_* tools ([2d7eb15](https://github.com/UteamUP/uteamup-mcp/commit/2d7eb153eb38430b6c5de7300b7cd9e3b14392d7))
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
### CI/CD
|
|
123
|
+
|
|
124
|
+
* publish @uteamup/mcp-server to npm on every release ([85cf397](https://github.com/UteamUP/uteamup-mcp/commit/85cf39706266f54aacdc3e8e5a9869b66080cbf8))
|
|
125
|
+
|
|
8
126
|
## [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
127
|
|
|
10
128
|
|
package/README.md
CHANGED
|
@@ -13,26 +13,27 @@
|
|
|
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
|
|
24
|
+
### Read-only access for Claude, Grok, Grok Bot, ChatGPT and MiniMax Code
|
|
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.
|
|
35
|
-
Then each member connects their own assistant; no API key or secret is involved
|
|
34
|
+
Then each member connects their own assistant; no API key or secret is involved. The consent
|
|
35
|
+
page offers only companies with an active subscription in which the member is the owner or
|
|
36
|
+
holds a license; a link ends (401 `invalid_token`) when that stops being true:
|
|
36
37
|
|
|
37
38
|
- **Grok:** open [Connectors](https://grok.com/connectors), choose **New Connector → Custom**,
|
|
38
39
|
and enter the endpoint. Grok registers itself (RFC 7591), sends you to the UteamUP consent
|
|
@@ -42,6 +43,12 @@ Then each member connects their own assistant; no API key or secret is involved:
|
|
|
42
43
|
Setup → Plugins card; each teammate signs in the first time they use it.
|
|
43
44
|
- **ChatGPT:** add a custom MCP server with the endpoint and choose OAuth; ChatGPT registers
|
|
44
45
|
itself and you approve on the same consent page.
|
|
46
|
+
- **Claude:** add a custom connector with the endpoint, choose **Sign in now** and
|
|
47
|
+
**Register automatically**, then approve on the UteamUP consent page.
|
|
48
|
+
- **MiniMax Code:** install the `uteamup` plugin (see [Installation](#installation)) or add the
|
|
49
|
+
endpoint under **Settings → MCP Servers** with the Remote / streamable-http transport.
|
|
50
|
+
MiniMax Code discovers the protected-resource metadata, registers itself (RFC 7591), and opens
|
|
51
|
+
the UteamUP consent page on first use.
|
|
45
52
|
|
|
46
53
|
The assistant uses the member's own permissions in the chosen company, and only the read
|
|
47
54
|
tools below. Access tokens last 60 minutes and refresh tokens rotate on every use. A member
|
|
@@ -75,11 +82,10 @@ and [Grok connectors](https://docs.x.ai/grok/connectors).
|
|
|
75
82
|
|
|
76
83
|
**Key Features:**
|
|
77
84
|
- ✅ Automatic OAuth 2.0 + PKCE authentication
|
|
78
|
-
- ✅ Token caching
|
|
85
|
+
- ✅ Token caching with automatic refresh
|
|
79
86
|
- ✅ Works with Claude Desktop, Claude Code, and any MCP-compatible client
|
|
80
87
|
- ✅ Zero configuration - just provide API credentials
|
|
81
88
|
- ✅ Comprehensive error messages
|
|
82
|
-
- ✅ Development mode support (self-signed certificates)
|
|
83
89
|
- ✅ Server-Sent Events (SSE) response parsing
|
|
84
90
|
- ✅ Proper JSON-RPC 2.0 notification handling
|
|
85
91
|
- ✅ **NEW:** Structured logging with Pino (JSON/text formats)
|
|
@@ -87,9 +93,10 @@ and [Grok connectors](https://docs.x.ai/grok/connectors).
|
|
|
87
93
|
- ✅ **NEW:** Performance monitoring and metrics
|
|
88
94
|
- ✅ **NEW:** Retry logic with exponential backoff
|
|
89
95
|
- ✅ **NEW:** CLI utilities (--help, --version, --validate-config, --test-auth)
|
|
90
|
-
- ✅
|
|
96
|
+
- ✅ Comprehensive test suite
|
|
91
97
|
|
|
92
|
-
**
|
|
98
|
+
**Release status:** Beta. The npm badge above shows the published version;
|
|
99
|
+
see [CHANGELOG.md](CHANGELOG.md) for release details.
|
|
93
100
|
|
|
94
101
|
**Example Conversation:**
|
|
95
102
|
```
|
|
@@ -116,7 +123,7 @@ Or install globally:
|
|
|
116
123
|
npm install -g @uteamup/mcp-server
|
|
117
124
|
```
|
|
118
125
|
|
|
119
|
-
### Install
|
|
126
|
+
### Install as a Plugin
|
|
120
127
|
|
|
121
128
|
- **Claude Code:**
|
|
122
129
|
```bash
|
|
@@ -131,6 +138,21 @@ npm install -g @uteamup/mcp-server
|
|
|
131
138
|
```bash
|
|
132
139
|
gemini extensions install https://github.com/UteamUP/uteamup-mcp
|
|
133
140
|
```
|
|
141
|
+
- **MiniMax Code:**
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
git clone https://github.com/UteamUP/uteamup-mcp.git
|
|
145
|
+
cp -R uteamup-mcp/plugins/minimax ~/.minimax/plugins/uteamup
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
MiniMax Code has no plugin marketplace. It discovers local plugins by folder, rescans
|
|
149
|
+
automatically, and enables a newly discovered plugin by default. The plugin bundles the
|
|
150
|
+
read-only MCP server and a `cmms` skill that teaches the agent when and how to use the
|
|
151
|
+
tools.
|
|
152
|
+
|
|
153
|
+
To skip the plugin, add the server directly under **Settings → MCP Servers** with the
|
|
154
|
+
Remote / streamable-http transport and this URL (no credentials are stored):
|
|
155
|
+
`https://api.uteamup.com/mcp/read-only`
|
|
134
156
|
|
|
135
157
|
---
|
|
136
158
|
|
|
@@ -147,8 +169,11 @@ npm install -g @uteamup/mcp-server
|
|
|
147
169
|
|
|
148
170
|
### 2. Configure Claude Desktop
|
|
149
171
|
|
|
150
|
-
**
|
|
151
|
-
|
|
172
|
+
In Claude Desktop, open **Settings → Developer → Edit Config**.
|
|
173
|
+
The configuration file is located at:
|
|
174
|
+
|
|
175
|
+
- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
176
|
+
- **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
|
|
152
177
|
|
|
153
178
|
Add this configuration:
|
|
154
179
|
|
|
@@ -167,22 +192,8 @@ Add this configuration:
|
|
|
167
192
|
}
|
|
168
193
|
```
|
|
169
194
|
|
|
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
|
-
```
|
|
195
|
+
All UteamUP MCP connections use `https://api.uteamup.com`. Use a restricted key
|
|
196
|
+
from a demo workspace when validating an integration.
|
|
186
197
|
|
|
187
198
|
### 3. Restart Claude Desktop
|
|
188
199
|
|
|
@@ -227,16 +238,14 @@ That's it! 🎉
|
|
|
227
238
|
| `UTEAMUP_TOKEN_CACHE_DIR` | Persistent token cache directory | - |
|
|
228
239
|
| `UTEAMUP_TOKEN_REFRESH_MARGIN` | Token refresh margin in seconds | `300` |
|
|
229
240
|
|
|
230
|
-
### API Base
|
|
241
|
+
### API Base URL
|
|
231
242
|
|
|
232
243
|
The configured base URL must be a bare HTTPS origin. Credentials, paths, query
|
|
233
244
|
parameters, fragments, and plain HTTP endpoints are rejected.
|
|
234
245
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
| **Development** | `https://devback.uteamup.com` | Testing against dev backend |
|
|
239
|
-
| **Local** | `https://localhost:5002` | Local development with self-signed cert |
|
|
246
|
+
Always use `https://api.uteamup.com`, including when running the Node proxy
|
|
247
|
+
locally. The full MCP endpoint is `/mcp`; the read-only endpoint is
|
|
248
|
+
`/mcp/read-only`.
|
|
240
249
|
|
|
241
250
|
### Permissions
|
|
242
251
|
|
|
@@ -260,7 +269,7 @@ Your AI assistant's permissions are controlled by the **role assigned to your AP
|
|
|
260
269
|
**Cause:** `UTEAMUP_API_KEY` or `UTEAMUP_SECRET` not set in MCP configuration.
|
|
261
270
|
|
|
262
271
|
**Solution:**
|
|
263
|
-
1. Check your
|
|
272
|
+
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
273
|
2. Verify the `env` section includes both `UTEAMUP_API_KEY` and `UTEAMUP_SECRET`
|
|
265
274
|
3. Ensure there are no typos in the environment variable names
|
|
266
275
|
4. Restart Claude Desktop after making changes
|
|
@@ -309,36 +318,32 @@ Your AI assistant's permissions are controlled by the **role assigned to your AP
|
|
|
309
318
|
1. **Check your internet connection**
|
|
310
319
|
2. **Verify the base URL:**
|
|
311
320
|
- Production: `https://api.uteamup.com` (default, no env var needed)
|
|
312
|
-
- Development: Set `UTEAMUP_API_BASE_URL=https://devback.uteamup.com`
|
|
313
321
|
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`
|
|
322
|
+
- Contact gisli@uteamup.com
|
|
318
323
|
|
|
319
324
|
---
|
|
320
325
|
|
|
321
326
|
#### "UNABLE_TO_VERIFY_LEAF_SIGNATURE" or certificate errors
|
|
322
327
|
|
|
323
|
-
**Cause:**
|
|
328
|
+
**Cause:** The connection cannot validate the server's TLS certificate.
|
|
324
329
|
|
|
325
|
-
**Solution:**
|
|
326
|
-
1. Verify
|
|
327
|
-
2.
|
|
328
|
-
3.
|
|
330
|
+
**Solution:**
|
|
331
|
+
1. Verify the API base URL is `https://api.uteamup.com`
|
|
332
|
+
2. Check the device's date and trusted certificate configuration
|
|
333
|
+
3. Contact gisli@uteamup.com if the certificate error persists
|
|
329
334
|
|
|
330
335
|
---
|
|
331
336
|
|
|
332
337
|
#### Tools list is empty or incomplete
|
|
333
338
|
|
|
334
|
-
**Cause:**
|
|
339
|
+
**Cause:** The credential, role, or company configuration does not grant the requested tools.
|
|
335
340
|
|
|
336
341
|
**Solution:**
|
|
337
342
|
1. Go to **Tenant Settings** → **API Keys** in UteamUP
|
|
338
|
-
2.
|
|
339
|
-
3.
|
|
340
|
-
4.
|
|
341
|
-
5.
|
|
343
|
+
2. Confirm the key is active and MCP-enabled for the intended company
|
|
344
|
+
3. Ask a company administrator to check the specific read permissions needed for your workflow
|
|
345
|
+
4. For the remote read-only connector, use a restricted read-only role; write or wildcard grants are not eligible
|
|
346
|
+
5. Reconnect the client to refresh its tool list after an authorized permission change
|
|
342
347
|
|
|
343
348
|
---
|
|
344
349
|
|
|
@@ -402,9 +407,9 @@ Enable different log levels and formats:
|
|
|
402
407
|
```
|
|
403
408
|
|
|
404
409
|
4. **Get help:**
|
|
405
|
-
- Email:
|
|
406
|
-
- Documentation: https://
|
|
407
|
-
- GitHub Issues: https://github.com/uteamup
|
|
410
|
+
- Email: gisli@uteamup.com
|
|
411
|
+
- Documentation: https://github.com/UteamUP/uteamup-mcp#readme
|
|
412
|
+
- GitHub Issues: https://github.com/UteamUP/uteamup-mcp/issues
|
|
408
413
|
|
|
409
414
|
---
|
|
410
415
|
|
|
@@ -414,20 +419,20 @@ Enable different log levels and formats:
|
|
|
414
419
|
|
|
415
420
|
```bash
|
|
416
421
|
# Clone the repository
|
|
417
|
-
git clone https://github.com/UteamUP/uteamup-mcp
|
|
418
|
-
cd uteamup-mcp
|
|
422
|
+
git clone https://github.com/UteamUP/uteamup-mcp.git
|
|
423
|
+
cd uteamup-mcp
|
|
419
424
|
|
|
420
425
|
# Install dependencies
|
|
421
426
|
npm install
|
|
422
427
|
|
|
423
|
-
# Run tests
|
|
424
|
-
npm test
|
|
428
|
+
# Run tests only at the final whole-goal gate (see MCPGuidelines.md)
|
|
429
|
+
UTEAMUP_FINAL_GOAL_GATE=1 npm test
|
|
425
430
|
|
|
426
431
|
# Test with debug logging
|
|
427
432
|
export UTEAMUP_LOG_LEVEL=DEBUG
|
|
428
|
-
export UTEAMUP_API_KEY="your-
|
|
429
|
-
export UTEAMUP_SECRET="your-
|
|
430
|
-
export UTEAMUP_API_BASE_URL="https://
|
|
433
|
+
export UTEAMUP_API_KEY="your-demo-workspace-key"
|
|
434
|
+
export UTEAMUP_SECRET="your-demo-workspace-secret"
|
|
435
|
+
export UTEAMUP_API_BASE_URL="https://api.uteamup.com"
|
|
431
436
|
node index.js
|
|
432
437
|
|
|
433
438
|
# CLI Utilities
|
|
@@ -451,7 +456,7 @@ npm link
|
|
|
451
456
|
"mcpServers": {
|
|
452
457
|
"uteamup-local": {
|
|
453
458
|
"command": "node",
|
|
454
|
-
"args": ["/absolute/path/to/uteamup-mcp
|
|
459
|
+
"args": ["/absolute/path/to/uteamup-mcp/index.js"],
|
|
455
460
|
"env": {
|
|
456
461
|
"UTEAMUP_API_KEY": "your-key",
|
|
457
462
|
"UTEAMUP_SECRET": "your-secret",
|
|
@@ -465,7 +470,7 @@ npm link
|
|
|
465
470
|
### Project Structure
|
|
466
471
|
|
|
467
472
|
```
|
|
468
|
-
uteamup-mcp
|
|
473
|
+
uteamup-mcp/
|
|
469
474
|
├── index.js # Main entry point (OAuth + MCP client)
|
|
470
475
|
├── package.json # Package metadata
|
|
471
476
|
├── README.md # This file
|
|
@@ -550,9 +555,9 @@ See [LICENSE](LICENSE) for details.
|
|
|
550
555
|
|
|
551
556
|
## Support
|
|
552
557
|
|
|
553
|
-
- **Documentation:** https://
|
|
554
|
-
- **Email:**
|
|
555
|
-
- **Issues:** https://github.com/uteamup
|
|
558
|
+
- **Documentation:** https://github.com/UteamUP/uteamup-mcp#readme
|
|
559
|
+
- **Email:** gisli@uteamup.com
|
|
560
|
+
- **Issues:** https://github.com/UteamUP/uteamup-mcp/issues
|
|
556
561
|
|
|
557
562
|
---
|
|
558
563
|
|
package/index.js
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* UteamUP MCP Proxy - Production-ready OAuth handler with enhanced debugging
|
|
5
|
-
* Version: 1.0.0-beta.9
|
|
6
5
|
*
|
|
7
6
|
* Features:
|
|
8
7
|
* - OAuth 2.0 Authorization Code + PKCE authentication
|
|
@@ -31,8 +30,7 @@ const {
|
|
|
31
30
|
toPublicErrorMessage
|
|
32
31
|
} = require('./lib/transport-security');
|
|
33
32
|
|
|
34
|
-
|
|
35
|
-
const VERSION = '1.0.0-beta.9';
|
|
33
|
+
const { version: VERSION } = require('./package.json');
|
|
36
34
|
|
|
37
35
|
// CLI argument handling
|
|
38
36
|
const args = process.argv.slice(2);
|
|
@@ -280,14 +278,16 @@ async function requestNewAccessToken() {
|
|
|
280
278
|
|
|
281
279
|
info('Authorization code received');
|
|
282
280
|
|
|
283
|
-
// Step 2: Exchange for access token with retry
|
|
281
|
+
// Step 2: Exchange for access token with retry. Naming the MCP endpoint as the resource
|
|
282
|
+
// (RFC 8707) gets a token the backend accepts only there, never on its REST API.
|
|
284
283
|
const tokenData = new URLSearchParams({
|
|
285
284
|
grant_type: 'authorization_code',
|
|
286
285
|
code: authCode,
|
|
287
286
|
redirect_uri: OAUTH_REDIRECT_URI,
|
|
288
287
|
client_id: config.apiKey,
|
|
289
288
|
client_secret: config.secret,
|
|
290
|
-
code_verifier: verifier
|
|
289
|
+
code_verifier: verifier,
|
|
290
|
+
resource: new URL(config.mcpPath, config.baseUrl).href
|
|
291
291
|
}).toString();
|
|
292
292
|
|
|
293
293
|
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.6.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.6.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.6.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.6.0-beta.9",
|
|
34
34
|
"transport": {
|
|
35
35
|
"type": "stdio"
|
|
36
36
|
},
|