@samanhappy/mcphub 1.0.32 → 1.0.34

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.
Files changed (130) hide show
  1. package/README.fr.md +12 -6
  2. package/README.md +23 -7
  3. package/README.zh.md +24 -8
  4. package/dist/clients/openapi.js +439 -72
  5. package/dist/clients/openapi.js.map +1 -1
  6. package/dist/config/index.js +24 -2
  7. package/dist/config/index.js.map +1 -1
  8. package/dist/constants/oauthServerDefaults.js +5 -0
  9. package/dist/constants/oauthServerDefaults.js.map +1 -1
  10. package/dist/controllers/activityController.js +11 -0
  11. package/dist/controllers/activityController.js.map +1 -1
  12. package/dist/controllers/logController.js +10 -3
  13. package/dist/controllers/logController.js.map +1 -1
  14. package/dist/controllers/mcpbController.js +6 -13
  15. package/dist/controllers/mcpbController.js.map +1 -1
  16. package/dist/controllers/oauthCallbackController.js +26 -0
  17. package/dist/controllers/oauthCallbackController.js.map +1 -1
  18. package/dist/controllers/oauthServerController.js +40 -4
  19. package/dist/controllers/oauthServerController.js.map +1 -1
  20. package/dist/controllers/serverController.js +122 -31
  21. package/dist/controllers/serverController.js.map +1 -1
  22. package/dist/controllers/templateController.js +1 -1
  23. package/dist/controllers/templateController.js.map +1 -1
  24. package/dist/routes/index.js +2 -1
  25. package/dist/routes/index.js.map +1 -1
  26. package/dist/services/authorizationService.js +28 -0
  27. package/dist/services/authorizationService.js.map +1 -0
  28. package/dist/services/cimdClientService.js +195 -0
  29. package/dist/services/cimdClientService.js.map +1 -0
  30. package/dist/services/mcpOAuthProvider.js +2 -2
  31. package/dist/services/mcpOAuthProvider.js.map +1 -1
  32. package/dist/services/mcpService.js +108 -11
  33. package/dist/services/mcpService.js.map +1 -1
  34. package/dist/services/oauthClientRegistration.js +27 -9
  35. package/dist/services/oauthClientRegistration.js.map +1 -1
  36. package/dist/services/oauthServerService.js +17 -1
  37. package/dist/services/oauthServerService.js.map +1 -1
  38. package/dist/services/openApiToolStatsService.js +37 -0
  39. package/dist/services/openApiToolStatsService.js.map +1 -0
  40. package/dist/services/serverConfigPresenter.js +85 -0
  41. package/dist/services/serverConfigPresenter.js.map +1 -0
  42. package/dist/services/templateService.js +48 -11
  43. package/dist/services/templateService.js.map +1 -1
  44. package/dist/services/vectorSearchService.js +31 -6
  45. package/dist/services/vectorSearchService.js.map +1 -1
  46. package/dist/utils/oauthIssuer.js +57 -0
  47. package/dist/utils/oauthIssuer.js.map +1 -0
  48. package/dist/utils/openApiRequestBody.js +220 -0
  49. package/dist/utils/openApiRequestBody.js.map +1 -0
  50. package/dist/utils/processTree.js +47 -0
  51. package/dist/utils/processTree.js.map +1 -0
  52. package/dist/utils/serverConfigPersistence.js +3 -0
  53. package/dist/utils/serverConfigPersistence.js.map +1 -1
  54. package/dist/utils/serverConfigValidation.js +13 -0
  55. package/dist/utils/serverConfigValidation.js.map +1 -0
  56. package/dist/utils/serverNameValidation.js +56 -0
  57. package/dist/utils/serverNameValidation.js.map +1 -0
  58. package/dist/utils/smartRouting.js +9 -4
  59. package/dist/utils/smartRouting.js.map +1 -1
  60. package/dist/utils/ssrf.js +6 -5
  61. package/dist/utils/ssrf.js.map +1 -1
  62. package/dist/utils/systemConfigCache.js +40 -2
  63. package/dist/utils/systemConfigCache.js.map +1 -1
  64. package/frontend/dist/assets/{ActivityPage-C6m1hGLq.js → ActivityPage-BYoyi-IG.js} +2 -2
  65. package/frontend/dist/assets/{ActivityPage-C6m1hGLq.js.map → ActivityPage-BYoyi-IG.js.map} +1 -1
  66. package/frontend/dist/assets/ConfirmDialog-3APts2Y9.js +2 -0
  67. package/frontend/dist/assets/ConfirmDialog-3APts2Y9.js.map +1 -0
  68. package/frontend/dist/assets/Dashboard-BOHkLPxE.js +2 -0
  69. package/frontend/dist/assets/{Dashboard-DFKfjPff.js.map → Dashboard-BOHkLPxE.js.map} +1 -1
  70. package/frontend/dist/assets/{EndpointCopy-CP_Fb1To.js → EndpointCopy-DDVLhiUy.js} +2 -2
  71. package/frontend/dist/assets/{EndpointCopy-CP_Fb1To.js.map → EndpointCopy-DDVLhiUy.js.map} +1 -1
  72. package/frontend/dist/assets/GroupsPage-B3bHSWmT.js +33 -0
  73. package/frontend/dist/assets/{GroupsPage-Cwfm5q-a.js.map → GroupsPage-B3bHSWmT.js.map} +1 -1
  74. package/frontend/dist/assets/{LoginPage-CnF44h_n.js → LoginPage-CfAnFIbQ.js} +2 -2
  75. package/frontend/dist/assets/{LoginPage-CnF44h_n.js.map → LoginPage-CfAnFIbQ.js.map} +1 -1
  76. package/frontend/dist/assets/{LogsPage-BFIpICsM.js → LogsPage-DT2VotXH.js} +2 -2
  77. package/frontend/dist/assets/{LogsPage-BFIpICsM.js.map → LogsPage-DT2VotXH.js.map} +1 -1
  78. package/frontend/dist/assets/MarketPage-Cn0J7UNX.js +3 -0
  79. package/frontend/dist/assets/MarketPage-Cn0J7UNX.js.map +1 -0
  80. package/frontend/dist/assets/{OAuthConsentPage-zqXUvKMF.js → OAuthConsentPage-DnKLaKDH.js} +2 -2
  81. package/frontend/dist/assets/{OAuthConsentPage-zqXUvKMF.js.map → OAuthConsentPage-DnKLaKDH.js.map} +1 -1
  82. package/frontend/dist/assets/{PromptsPage-Cm8ykiI4.js → PromptsPage-Ccg3fJWt.js} +2 -2
  83. package/frontend/dist/assets/{PromptsPage-Cm8ykiI4.js.map → PromptsPage-Ccg3fJWt.js.map} +1 -1
  84. package/frontend/dist/assets/{ResourcesPage-UMyO6mQ4.js → ResourcesPage-V45CxfvA.js} +2 -2
  85. package/frontend/dist/assets/{ResourcesPage-UMyO6mQ4.js.map → ResourcesPage-V45CxfvA.js.map} +1 -1
  86. package/frontend/dist/assets/{ServersPage-B0RoM8ez.js → ServersPage-DA_nkhLB.js} +5 -5
  87. package/frontend/dist/assets/{ServersPage-B0RoM8ez.js.map → ServersPage-DA_nkhLB.js.map} +1 -1
  88. package/frontend/dist/assets/SettingsPage-BJjO5cte.js +12 -0
  89. package/frontend/dist/assets/SettingsPage-BJjO5cte.js.map +1 -0
  90. package/frontend/dist/assets/{StatusDot-BAMXeT2x.js → StatusDot-DcjrhMNI.js} +2 -2
  91. package/frontend/dist/assets/{StatusDot-BAMXeT2x.js.map → StatusDot-DcjrhMNI.js.map} +1 -1
  92. package/frontend/dist/assets/{ToggleGroup-Cfgt5lJo.js → ToggleGroup-BSLtGF--.js} +2 -2
  93. package/frontend/dist/assets/{ToggleGroup-Cfgt5lJo.js.map → ToggleGroup-BSLtGF--.js.map} +1 -1
  94. package/frontend/dist/assets/UsersPage-DKdCe4GT.js +2 -0
  95. package/frontend/dist/assets/UsersPage-DKdCe4GT.js.map +1 -0
  96. package/frontend/dist/assets/contextCost-CilWqGWT.js +2 -0
  97. package/frontend/dist/assets/contextCost-CilWqGWT.js.map +1 -0
  98. package/frontend/dist/assets/index-DjExFs33.js +3 -0
  99. package/frontend/dist/assets/index-DjExFs33.js.map +1 -0
  100. package/frontend/dist/assets/index-DtrCVU1h.css +1 -0
  101. package/frontend/dist/assets/passwordValidation-DTLWgUy9.js +2 -0
  102. package/frontend/dist/assets/passwordValidation-DTLWgUy9.js.map +1 -0
  103. package/frontend/dist/assets/{resourceService-D2QmlFby.js → resourceService-DIUK5vbC.js} +2 -2
  104. package/frontend/dist/assets/{resourceService-D2QmlFby.js.map → resourceService-DIUK5vbC.js.map} +1 -1
  105. package/frontend/dist/assets/useCostData-CSeCIQmM.js +2 -0
  106. package/frontend/dist/assets/useCostData-CSeCIQmM.js.map +1 -0
  107. package/frontend/dist/assets/useSettingsData-CvAOhPaX.js +2 -0
  108. package/frontend/dist/assets/{useSettingsData-CeCvZ2nU.js.map → useSettingsData-CvAOhPaX.js.map} +1 -1
  109. package/frontend/dist/assets/variableDetection-BeF9gp9K.js +16 -0
  110. package/frontend/dist/assets/variableDetection-BeF9gp9K.js.map +1 -0
  111. package/frontend/dist/index.html +2 -2
  112. package/package.json +7 -7
  113. package/frontend/dist/assets/ConfirmDialog-BCMNzi21.js +0 -2
  114. package/frontend/dist/assets/ConfirmDialog-BCMNzi21.js.map +0 -1
  115. package/frontend/dist/assets/Dashboard-DFKfjPff.js +0 -2
  116. package/frontend/dist/assets/GroupsPage-Cwfm5q-a.js +0 -33
  117. package/frontend/dist/assets/MarketPage-Du-NqiEl.js +0 -3
  118. package/frontend/dist/assets/MarketPage-Du-NqiEl.js.map +0 -1
  119. package/frontend/dist/assets/SettingsPage-BTB-36-n.js +0 -12
  120. package/frontend/dist/assets/SettingsPage-BTB-36-n.js.map +0 -1
  121. package/frontend/dist/assets/UsersPage-DlzYf7Su.js +0 -2
  122. package/frontend/dist/assets/UsersPage-DlzYf7Su.js.map +0 -1
  123. package/frontend/dist/assets/contextCost-kp2vZYp7.js +0 -2
  124. package/frontend/dist/assets/contextCost-kp2vZYp7.js.map +0 -1
  125. package/frontend/dist/assets/index-CGvImZ3F.css +0 -1
  126. package/frontend/dist/assets/index-CvXw771N.js +0 -3
  127. package/frontend/dist/assets/index-CvXw771N.js.map +0 -1
  128. package/frontend/dist/assets/useSettingsData-CeCvZ2nU.js +0 -2
  129. package/frontend/dist/assets/variableDetection-DKPiHkxr.js +0 -16
  130. package/frontend/dist/assets/variableDetection-DKPiHkxr.js.map +0 -1
@@ -0,0 +1,195 @@
1
+ /**
2
+ * Client ID Metadata Documents (CIMD) support for MCPHub's authorization server.
3
+ *
4
+ * Implements the client side of draft-ietf-oauth-client-id-metadata-document:
5
+ * a client may present an HTTPS URL as its client_id; the authorization server
6
+ * fetches a metadata document from that URL and uses it in place of a
7
+ * registration. CIMD clients are always treated as PUBLIC clients (no shared
8
+ * secret can be established out-of-band), so PKCE with S256 is enforced by the
9
+ * existing public-client policy.
10
+ *
11
+ * Documents are fetched with SSRF protection (private-IP blocklist +
12
+ * redirect validation, shared with upstream MCP connections) and cached with
13
+ * a TTL. Resolution is opt-in via systemConfig.oauthServer.clientIdMetadata.enabled.
14
+ */
15
+ import { getSystemConfigDao } from '../dao/index.js';
16
+ import { cloneDefaultOAuthServerConfig } from '../constants/oauthServerDefaults.js';
17
+ import { findOAuthClientById } from '../models/OAuth.js';
18
+ import { assertSafeUrl, createRedirectValidatingFetch } from '../utils/ssrf.js';
19
+ import { logger } from '../utils/logger.js';
20
+ const METADATA_FETCH_TIMEOUT_MS = 5000;
21
+ const DEFAULT_CACHE_TTL_MS = 3600000;
22
+ const MAX_DOCUMENT_BYTES = 256 * 1024;
23
+ export const isCimdClientId = (clientId) => {
24
+ return typeof clientId === 'string' && clientId.startsWith('https://');
25
+ };
26
+ const cache = new Map();
27
+ const inflight = new Map();
28
+ let fetchImpl = (...args) => fetch(...args);
29
+ // Test seam: DNS resolution used by the SSRF guard, so tests never hit real DNS.
30
+ let ssrfLookupOverride;
31
+ /** Test seam: replace the fetch implementation used for metadata retrieval. */
32
+ export const setCimdFetchImplForTesting = (impl) => {
33
+ fetchImpl = impl;
34
+ };
35
+ /** Test seam: replace DNS resolution used by the SSRF guard. */
36
+ export const setCimdDnsLookupForTesting = (lookup) => {
37
+ ssrfLookupOverride = lookup;
38
+ };
39
+ export const clearCimdCacheForTesting = () => {
40
+ cache.clear();
41
+ inflight.clear();
42
+ };
43
+ export const getCimdSettings = async () => {
44
+ try {
45
+ const systemConfig = await getSystemConfigDao().get();
46
+ const merged = { ...cloneDefaultOAuthServerConfig(), ...systemConfig?.oauthServer };
47
+ const ttl = typeof merged.clientIdMetadata?.cacheTtlMs === 'number' &&
48
+ merged.clientIdMetadata.cacheTtlMs > 0
49
+ ? merged.clientIdMetadata.cacheTtlMs
50
+ : DEFAULT_CACHE_TTL_MS;
51
+ return { enabled: merged.clientIdMetadata?.enabled === true, cacheTtlMs: ttl };
52
+ }
53
+ catch {
54
+ return { enabled: false, cacheTtlMs: DEFAULT_CACHE_TTL_MS };
55
+ }
56
+ };
57
+ const asStringArray = (value) => Array.isArray(value) && value.every((v) => typeof v === 'string') ? value : undefined;
58
+ /**
59
+ * Validate a fetched metadata document and map it onto an IOAuthClient.
60
+ * Returns undefined when the document is not a usable CIMD client.
61
+ */
62
+ export const mapCimdDocument = (clientIdUrl, document) => {
63
+ if (!document || typeof document !== 'object' || Array.isArray(document)) {
64
+ return undefined;
65
+ }
66
+ // The document's client_id MUST be present and identical to the URL it was
67
+ // retrieved from (draft-ietf-oauth-client-id-metadata-document, section 4).
68
+ if (document.client_id !== clientIdUrl) {
69
+ return undefined;
70
+ }
71
+ const redirectUris = asStringArray(document.redirect_uris);
72
+ if (!redirectUris || redirectUris.length === 0 || !redirectUris.every((uri) => uri)) {
73
+ return undefined;
74
+ }
75
+ // Only public clients can be expressed via CIMD on this server; a document
76
+ // claiming a secret-based auth method cannot be honored safely.
77
+ const authMethod = typeof document.token_endpoint_auth_method === 'string'
78
+ ? document.token_endpoint_auth_method
79
+ : 'none';
80
+ if (authMethod !== 'none') {
81
+ return undefined;
82
+ }
83
+ const applicationType = document.application_type === 'native' ? 'native' : 'web';
84
+ const contacts = asStringArray(document.contacts);
85
+ const optionalUriField = (value) => typeof value === 'string' && value.length > 0 ? value : undefined;
86
+ return {
87
+ clientId: clientIdUrl,
88
+ name: typeof document.client_name === 'string' && document.client_name.length > 0
89
+ ? document.client_name
90
+ : clientIdUrl,
91
+ redirectUris,
92
+ grants: ['authorization_code', 'refresh_token'],
93
+ metadata: {
94
+ application_type: applicationType,
95
+ ...(contacts ? { contacts } : {}),
96
+ ...(optionalUriField(document.logo_uri) ? { logo_uri: optionalUriField(document.logo_uri) } : {}),
97
+ ...(optionalUriField(document.client_uri) ? { client_uri: optionalUriField(document.client_uri) } : {}),
98
+ ...(optionalUriField(document.policy_uri) ? { policy_uri: optionalUriField(document.policy_uri) } : {}),
99
+ ...(optionalUriField(document.tos_uri) ? { tos_uri: optionalUriField(document.tos_uri) } : {}),
100
+ ...(optionalUriField(document.jwks_uri) ? { jwks_uri: optionalUriField(document.jwks_uri) } : {}),
101
+ },
102
+ };
103
+ };
104
+ const fetchCimdDocument = async (clientIdUrl) => {
105
+ await assertSafeUrl(clientIdUrl, {
106
+ allowInternal: false,
107
+ ...(ssrfLookupOverride ? { lookup: ssrfLookupOverride } : {}),
108
+ });
109
+ const validatingFetch = createRedirectValidatingFetch((url, init) => fetchImpl(url, init), false, ssrfLookupOverride);
110
+ const response = await validatingFetch(clientIdUrl, {
111
+ method: 'GET',
112
+ headers: { Accept: 'application/json' },
113
+ signal: AbortSignal.timeout(METADATA_FETCH_TIMEOUT_MS),
114
+ redirect: 'manual',
115
+ });
116
+ if (!response.ok) {
117
+ logger.warn('CIMD metadata document fetch failed', {
118
+ clientIdUrl,
119
+ status: response.status,
120
+ });
121
+ return undefined;
122
+ }
123
+ const contentLength = Number(response.headers.get('content-length') || '0');
124
+ if (contentLength > MAX_DOCUMENT_BYTES) {
125
+ logger.warn('CIMD metadata document exceeds size limit', { clientIdUrl });
126
+ return undefined;
127
+ }
128
+ let document;
129
+ try {
130
+ const text = await response.text();
131
+ if (text.length > MAX_DOCUMENT_BYTES) {
132
+ logger.warn('CIMD metadata document exceeds size limit', { clientIdUrl });
133
+ return undefined;
134
+ }
135
+ document = JSON.parse(text);
136
+ }
137
+ catch (error) {
138
+ logger.warn('CIMD metadata document is not valid JSON', { clientIdUrl, error });
139
+ return undefined;
140
+ }
141
+ const mapped = mapCimdDocument(clientIdUrl, document);
142
+ if (!mapped) {
143
+ logger.warn('CIMD metadata document failed validation', { clientIdUrl });
144
+ }
145
+ return mapped;
146
+ };
147
+ /**
148
+ * Resolve a URL-shaped client_id to a client by fetching (or caching) its
149
+ * metadata document. Returns undefined for anything that is not a valid,
150
+ * enabled CIMD identifier.
151
+ */
152
+ export const resolveCimdClient = async (clientId, settings) => {
153
+ const resolvedSettings = settings ?? (await getCimdSettings());
154
+ if (!resolvedSettings.enabled || !isCimdClientId(clientId)) {
155
+ return undefined;
156
+ }
157
+ const now = Date.now();
158
+ const cached = cache.get(clientId);
159
+ if (cached && cached.expiresAt > now) {
160
+ return cached.client;
161
+ }
162
+ const existingFetch = inflight.get(clientId);
163
+ if (existingFetch) {
164
+ return existingFetch;
165
+ }
166
+ const fetchPromise = fetchCimdDocument(clientId)
167
+ .then((client) => {
168
+ if (client) {
169
+ cache.set(clientId, { client, expiresAt: Date.now() + resolvedSettings.cacheTtlMs });
170
+ }
171
+ return client;
172
+ })
173
+ .catch((error) => {
174
+ logger.warn('Failed to resolve CIMD client', { clientId, error });
175
+ return undefined;
176
+ })
177
+ .finally(() => {
178
+ inflight.delete(clientId);
179
+ });
180
+ inflight.set(clientId, fetchPromise);
181
+ return fetchPromise;
182
+ };
183
+ /**
184
+ * Client lookup used across the authorization server surface: registered
185
+ * clients first, then CIMD resolution when enabled. Drop-in replacement for
186
+ * findOAuthClientById at every call site that must understand CIMD clients.
187
+ */
188
+ export const findOAuthClientIncludingCimd = async (clientId) => {
189
+ const persisted = await findOAuthClientById(clientId);
190
+ if (persisted) {
191
+ return persisted;
192
+ }
193
+ return resolveCimdClient(clientId);
194
+ };
195
+ //# sourceMappingURL=cimdClientService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cimdClientService.js","sourceRoot":"","sources":["../../src/services/cimdClientService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,6BAA6B,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,6BAA6B,EAAmB,MAAM,kBAAkB,CAAC;AAEjG,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,yBAAyB,GAAG,IAAK,CAAC;AACxC,MAAM,oBAAoB,GAAG,OAAS,CAAC;AACvC,MAAM,kBAAkB,GAAG,GAAG,GAAG,IAAI,CAAC;AAEtC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAAgB,EAAW,EAAE;IAC1D,OAAO,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACzE,CAAC,CAAC;AAqBF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;AAC5C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA6C,CAAC;AAEtE,IAAI,SAAS,GAAiB,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;AAE1D,iFAAiF;AACjF,IAAI,kBAA0C,CAAC;AAE/C,+EAA+E;AAC/E,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,IAAkB,EAAQ,EAAE;IACrE,SAAS,GAAG,IAAI,CAAC;AACnB,CAAC,CAAC;AAEF,gEAAgE;AAChE,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,MAAmB,EAAQ,EAAE;IACtE,kBAAkB,GAAG,MAAM,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAS,EAAE;IACjD,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,QAAQ,CAAC,KAAK,EAAE,CAAC;AACnB,CAAC,CAAC;AAOF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,IAA2B,EAAE;IAC/D,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,kBAAkB,EAAE,CAAC,GAAG,EAAE,CAAC;QACtD,MAAM,MAAM,GAAG,EAAE,GAAG,6BAA6B,EAAE,EAAE,GAAG,YAAY,EAAE,WAAW,EAAE,CAAC;QACpF,MAAM,GAAG,GACP,OAAO,MAAM,CAAC,gBAAgB,EAAE,UAAU,KAAK,QAAQ;YACvD,MAAM,CAAC,gBAAgB,CAAC,UAAU,GAAG,CAAC;YACpC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU;YACpC,CAAC,CAAC,oBAAoB,CAAC;QAC3B,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,gBAAgB,EAAE,OAAO,KAAK,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;IACjF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,CAAC;IAC9D,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,KAAc,EAAwB,EAAE,CAC7D,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAE,KAAkB,CAAC,CAAC,CAAC,SAAS,CAAC;AAEtG;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,WAAmB,EACnB,QAAsB,EACI,EAAE;IAC5B,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,2EAA2E;IAC3E,4EAA4E;IAC5E,IAAI,QAAQ,CAAC,SAAS,KAAK,WAAW,EAAE,CAAC;QACvC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,YAAY,GAAG,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC3D,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;QACpF,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,2EAA2E;IAC3E,gEAAgE;IAChE,MAAM,UAAU,GACd,OAAO,QAAQ,CAAC,0BAA0B,KAAK,QAAQ;QACrD,CAAC,CAAC,QAAQ,CAAC,0BAA0B;QACrC,CAAC,CAAC,MAAM,CAAC;IACb,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,eAAe,GACnB,QAAQ,CAAC,gBAAgB,KAAK,QAAQ,CAAC,CAAC,CAAE,QAAkB,CAAC,CAAC,CAAE,KAAe,CAAC;IAClF,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,gBAAgB,GAAG,CAAC,KAAc,EAAsB,EAAE,CAC9D,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAEpE,OAAO;QACL,QAAQ,EAAE,WAAW;QACrB,IAAI,EACF,OAAO,QAAQ,CAAC,WAAW,KAAK,QAAQ,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;YACzE,CAAC,CAAC,QAAQ,CAAC,WAAW;YACtB,CAAC,CAAC,WAAW;QACjB,YAAY;QACZ,MAAM,EAAE,CAAC,oBAAoB,EAAE,eAAe,CAAC;QAC/C,QAAQ,EAAE;YACR,gBAAgB,EAAE,eAAe;YACjC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjG,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvG,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvG,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9F,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClG;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,KAAK,EAAE,WAAmB,EAAqC,EAAE;IACzF,MAAM,aAAa,CAAC,WAAW,EAAE;QAC/B,aAAa,EAAE,KAAK;QACpB,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9D,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,6BAA6B,CACnD,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,EACnC,KAAK,EACL,kBAAkB,CACnB,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,WAAW,EAAE;QAClD,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;QACvC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,yBAAyB,CAAC;QACtD,QAAQ,EAAE,QAAQ;KACnB,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC,qCAAqC,EAAE;YACjD,WAAW;YACX,MAAM,EAAE,QAAQ,CAAC,MAAM;SACxB,CAAC,CAAC;QACH,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,GAAG,CAAC,CAAC;IAC5E,IAAI,aAAa,GAAG,kBAAkB,EAAE,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,2CAA2C,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QAC1E,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,QAAsB,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC,2CAA2C,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;YAC1E,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAiB,CAAC;IAC9C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,0CAA0C,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;QAChF,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACtD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,CAAC,IAAI,CAAC,0CAA0C,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EACpC,QAAgB,EAChB,QAAuB,EACY,EAAE;IACrC,MAAM,gBAAgB,GAAG,QAAQ,IAAI,CAAC,MAAM,eAAe,EAAE,CAAC,CAAC;IAC/D,IAAI,CAAC,gBAAgB,CAAC,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3D,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,MAAM,YAAY,GAAG,iBAAiB,CAAC,QAAQ,CAAC;SAC7C,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;QACf,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACf,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAClE,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;SACD,OAAO,CAAC,GAAG,EAAE;QACZ,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEL,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACrC,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,EAC/C,QAAgB,EACmB,EAAE;IACrC,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACtD,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC,CAAC"}
@@ -14,7 +14,7 @@ import { randomBytes } from 'node:crypto';
14
14
  import { getSystemConfigDao } from '../dao/index.js';
15
15
  import { DEFAULT_OAUTH_REDIRECT_URI, resolvePreferredRedirectUris, } from '../utils/oauthRedirectUri.js';
16
16
  import { resolveInstallBaseUrl } from '../utils/installBaseUrl.js';
17
- import { initializeOAuthForServer, getRegisteredClient, removeRegisteredClient, fetchScopesFromServer, } from './oauthClientRegistration.js';
17
+ import { initializeOAuthForServer, getRegisteredClient, removeRegisteredClient, fetchScopesFromServer, createOAuthFetch, } from './oauthClientRegistration.js';
18
18
  import { clearOAuthData, loadServerConfig, mutateOAuthSettings, persistClientCredentials, persistTokens, updatePendingAuthorization, } from './oauthSettingsStore.js';
19
19
  // Import getServerByName to access ServerInfo
20
20
  import { getServerByName } from './mcpService.js';
@@ -85,7 +85,7 @@ export class MCPHubOAuthProvider {
85
85
  return existingScopes;
86
86
  }
87
87
  try {
88
- const scopes = await fetchScopesFromServer(serverUrl);
88
+ const scopes = await fetchScopesFromServer(serverUrl, await createOAuthFetch(this.serverConfig));
89
89
  if (scopes && scopes.length > 0) {
90
90
  const updatedConfig = await mutateOAuthSettings(this.serverName, ({ oauth }) => {
91
91
  oauth.scopes = scopes;
@@ -1 +1 @@
1
- {"version":3,"file":"mcpOAuthProvider.js","sourceRoot":"","sources":["../../src/services/mcpOAuthProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcpOAuthProvider.js","sourceRoot":"","sources":["../../src/services/mcpOAuthProvider.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import os from 'os';
2
2
  import path from 'path';
3
3
  import fs from 'fs';
4
4
  import treeKill from 'tree-kill';
5
+ import { isProcessTreeKillAvailable } from '../utils/processTree.js';
5
6
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
6
7
  import { CallToolRequestSchema, ListToolsRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema, ListResourcesRequestSchema, ListResourceTemplatesRequestSchema, ReadResourceRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
7
8
  import { Client } from '@modelcontextprotocol/sdk/client/index.js';
@@ -16,6 +17,7 @@ import { ResilientJsonSchemaValidator } from '../utils/jsonSchemaValidator.js';
16
17
  import { getUserDao } from '../dao/index.js';
17
18
  import { expandEnvVars, replaceEnvVars, getNameSeparator } from '../config/index.js';
18
19
  import config from '../config/index.js';
20
+ import { validateServerName } from '../utils/serverNameValidation.js';
19
21
  import { getGroup } from './sseService.js';
20
22
  import { getServerConfigInGroup, normalizeGroupServers } from './groupService.js';
21
23
  import { removeServerToolEmbeddings, saveToolsAsVectorEmbeddings } from './vectorSearchService.js';
@@ -1184,6 +1186,15 @@ export const initializeClientsFromSettings = async (isInit, serverName, options)
1184
1186
  try {
1185
1187
  for (const conf of allServers) {
1186
1188
  const { name } = conf;
1189
+ // Names loaded from disk are not rejected (that would break existing
1190
+ // configs on upgrade), but a strict client may drop the whole tools/list
1191
+ // if the server name produces a non-conforming downstream tool name.
1192
+ if (isInit) {
1193
+ const nameValidation = validateServerName(name);
1194
+ if (!nameValidation.valid) {
1195
+ logger.warn(`Server name '${name}' does not match the MCP tool-name charset (${nameValidation.message}); downstream tool names may be rejected by strict clients`);
1196
+ }
1197
+ }
1187
1198
  // Expand environment variables in all configuration values
1188
1199
  const expandedConf = replaceEnvVars(conf);
1189
1200
  // Skip disabled servers
@@ -1755,6 +1766,42 @@ const filterToolsByConfig = async (serverName, tools) => {
1755
1766
  const getServerByTool = (toolName) => {
1756
1767
  return getVisibleServerInfos().find((serverInfo) => serverInfo.enabled !== false && serverInfo.tools.some((tool) => tool.name === toolName));
1757
1768
  };
1769
+ /**
1770
+ * Error thrown when the requested server/tool (or server/prompt) cannot be
1771
+ * used by the current caller. `message` is the single safe text returned to
1772
+ * the caller — intentionally identical whether the target is hidden from them
1773
+ * or does not exist at all, so server/tool existence is never leaked through
1774
+ * distinguishable authorization errors (see #1103). `reason` is an internal
1775
+ * diagnostic recorded only in logs/activity, never surfaced to the caller.
1776
+ */
1777
+ export class ToolUnavailableError extends Error {
1778
+ constructor(message, reason) {
1779
+ super(message);
1780
+ this.reason = reason;
1781
+ this.name = 'ToolUnavailableError';
1782
+ }
1783
+ }
1784
+ /**
1785
+ * Best-effort internal classification of why a qualified tool/prompt name was
1786
+ * unavailable, for logs/activity only. The externally visible message must not
1787
+ * vary with this result.
1788
+ */
1789
+ const classifyUnavailableReason = (qualifiedName) => {
1790
+ // Qualified names are `<server><separator><name>`; a bare name has no prefix.
1791
+ const serverName = qualifiedName.split(getNameSeparator())[0];
1792
+ const server = getServerByName(serverName);
1793
+ if (!server) {
1794
+ return 'server-or-name-not-found';
1795
+ }
1796
+ if (server.enabled === false) {
1797
+ return 'server-disabled';
1798
+ }
1799
+ // Server exists and is enabled: distinguish a caller-hidden server from a
1800
+ // tool/prompt that is missing (or group-filtered) on a visible server.
1801
+ return getVisibleServerByName(serverName)
1802
+ ? 'tool-or-prompt-not-found'
1803
+ : 'server-hidden-from-caller';
1804
+ };
1758
1805
  // Add new server
1759
1806
  export const addServer = async (name, config) => {
1760
1807
  const server = { name, ...config };
@@ -2090,7 +2137,28 @@ export const resetServerOAuthConnection = (name) => {
2090
2137
  // launched through a wrapper like `npx` / `npm exec`, the wrapper does not
2091
2138
  // forward signals to its descendants, so the real server process is left
2092
2139
  // running as an orphan. Walk the whole tree and force-kill it.
2140
+ //
2141
+ // When the process-lister tool tree-kill needs (`ps` on Linux) is missing —
2142
+ // e.g. slim Docker images without procps — tree-kill's internal spawn fails
2143
+ // with an unhandled 'error' event that would crash MCPHub. Fall back to
2144
+ // signaling just the direct child instead (issue #1072).
2093
2145
  function killStdioProcessTree(name, pid) {
2146
+ const safeDirectKill = (signal) => {
2147
+ try {
2148
+ process.kill(pid, signal);
2149
+ }
2150
+ catch (err) {
2151
+ const code = err.code;
2152
+ if (code !== 'ESRCH') {
2153
+ logger.warn('Failed to send signal to process', {
2154
+ serverName: name,
2155
+ pid,
2156
+ signal,
2157
+ err,
2158
+ });
2159
+ }
2160
+ }
2161
+ };
2094
2162
  const safeTreeKill = (signal) => {
2095
2163
  try {
2096
2164
  treeKill(pid, signal, (err) => {
@@ -2121,12 +2189,22 @@ function killStdioProcessTree(name, pid) {
2121
2189
  });
2122
2190
  }
2123
2191
  };
2124
- safeTreeKill('SIGTERM');
2192
+ const safeKill = isProcessTreeKillAvailable()
2193
+ ? safeTreeKill
2194
+ : (signal) => {
2195
+ logger.warn('Process lister unavailable, killing only the direct child process', {
2196
+ serverName: name,
2197
+ pid,
2198
+ signal,
2199
+ });
2200
+ safeDirectKill(signal);
2201
+ };
2202
+ safeKill('SIGTERM');
2125
2203
  setTimeout(() => {
2126
2204
  if (!isProcessAlive(pid)) {
2127
2205
  return;
2128
2206
  }
2129
- safeTreeKill('SIGKILL');
2207
+ safeKill('SIGKILL');
2130
2208
  }, STDIO_KILL_GRACE_PERIOD_MS);
2131
2209
  }
2132
2210
  function isProcessAlive(pid) {
@@ -2465,7 +2543,7 @@ export const handleCallToolRequest = async (request, extra) => {
2465
2543
  serverInfo.tools.some((tool) => tool.name === toolName));
2466
2544
  }
2467
2545
  if (!targetServerInfo) {
2468
- throw new Error(`No available servers found with tool: ${toolName}`);
2546
+ throw new ToolUnavailableError(`Tool not available: ${toolName}`, classifyUnavailableReason(toolName));
2469
2547
  }
2470
2548
  // If the target is an on-demand server that is not yet running, wake it up now.
2471
2549
  // Concurrent callers are serialised via ensureServerReady's singleton promise.
@@ -2482,7 +2560,7 @@ export const handleCallToolRequest = async (request, extra) => {
2482
2560
  // Check if the tool exists on the server
2483
2561
  const tool = targetTool ?? findToolOnServer(targetServerInfo, targetToolName, singleServerAppsRoute);
2484
2562
  if (!tool) {
2485
- throw new Error(`Tool '${toolName}' not found on server '${targetServerInfo.name}'`);
2563
+ throw new ToolUnavailableError(`Tool not available: ${toolName}`, 'tool-not-found');
2486
2564
  }
2487
2565
  assertToolAvailableForRoute(tool, appsRouteContext);
2488
2566
  // Handle OpenAPI servers differently
@@ -2639,7 +2717,7 @@ export const handleCallToolRequest = async (request, extra) => {
2639
2717
  const tool = groupTool?.tool ??
2640
2718
  (serverInfo ? findToolOnServer(serverInfo, routeToolName, singleServerAppsRoute) : undefined);
2641
2719
  if (!serverInfo || !tool) {
2642
- throw new Error(`Server not found: ${request.params.name}`);
2720
+ throw new ToolUnavailableError(`Tool not available: ${request.params.name}`, classifyUnavailableReason(request.params.name));
2643
2721
  }
2644
2722
  assertToolAvailableForRoute(tool, appsRouteContext);
2645
2723
  // Wake the on-demand server before invoking the tool. It may be asleep with
@@ -2773,7 +2851,13 @@ export const handleCallToolRequest = async (request, extra) => {
2773
2851
  });
2774
2852
  }
2775
2853
  catch (error) {
2776
- logger.error('Error handling CallToolRequest', summarizeErrorForLogging(error));
2854
+ const unavailable = error instanceof ToolUnavailableError
2855
+ ? { message: error.message, reason: error.reason }
2856
+ : undefined;
2857
+ logger.error('Error handling CallToolRequest', {
2858
+ ...summarizeErrorForLogging(error),
2859
+ ...(unavailable ? { reason: unavailable.reason } : {}),
2860
+ });
2777
2861
  // Log error activity
2778
2862
  const duration = Date.now() - startTime;
2779
2863
  await settleHostedIfNeeded({
@@ -2796,9 +2880,15 @@ export const handleCallToolRequest = async (request, extra) => {
2796
2880
  keyId,
2797
2881
  keyName,
2798
2882
  sourceIp,
2799
- errorMessage: formatErrorForLogging(error),
2883
+ // The reason is an internal diagnostic; the caller-facing message stays
2884
+ // identical for hidden and nonexistent targets.
2885
+ errorMessage: unavailable
2886
+ ? `${unavailable.message} (reason: ${unavailable.reason})`
2887
+ : formatErrorForLogging(error),
2800
2888
  });
2801
- const safeErrorText = formatErrorForLogging(error);
2889
+ // For unavailable-target errors, surface exactly the unified message (no
2890
+ // error-class name, no reason) so hidden vs nonexistent is indistinguishable.
2891
+ const safeErrorText = unavailable ? unavailable.message : formatErrorForLogging(error);
2802
2892
  return {
2803
2893
  content: [
2804
2894
  {
@@ -2854,7 +2944,7 @@ export const handleGetPromptRequest = async (request, extra) => {
2854
2944
  serverInfo.prompts.find((prompt) => prompt.name === name));
2855
2945
  }
2856
2946
  if (!server) {
2857
- throw new Error(`Server not found: ${name}`);
2947
+ throw new ToolUnavailableError(`Prompt not available: ${name}`, classifyUnavailableReason(name));
2858
2948
  }
2859
2949
  // Remove server prefix from prompt name if present
2860
2950
  const separator = getNameSeparator();
@@ -2879,8 +2969,15 @@ export const handleGetPromptRequest = async (request, extra) => {
2879
2969
  return prompt;
2880
2970
  }
2881
2971
  catch (error) {
2882
- logger.error('Error handling GetPromptRequest', summarizeErrorForLogging(error));
2883
- const safeErrorText = formatErrorForLogging(error);
2972
+ const unavailable = error instanceof ToolUnavailableError
2973
+ ? { message: error.message, reason: error.reason }
2974
+ : undefined;
2975
+ logger.error('Error handling GetPromptRequest', {
2976
+ ...summarizeErrorForLogging(error),
2977
+ ...(unavailable ? { reason: unavailable.reason } : {}),
2978
+ });
2979
+ // Surface exactly the unified message for unavailable targets (see #1103).
2980
+ const safeErrorText = unavailable ? unavailable.message : formatErrorForLogging(error);
2884
2981
  return {
2885
2982
  content: [
2886
2983
  {