@cplace/mcp-server 1.12.0 → 1.12.1
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/README.md +27 -3
- package/dist/index.js +94 -42
- package/dist/index.js.map +1 -1
- package/dist/profiles.d.ts +1 -1
- package/dist/profiles.d.ts.map +1 -1
- package/dist/profiles.js +29 -6
- package/dist/profiles.js.map +1 -1
- package/dist/tools/profile-management.d.ts +7 -2
- package/dist/tools/profile-management.d.ts.map +1 -1
- package/dist/tools/profile-management.js +35 -33
- package/dist/tools/profile-management.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -15,6 +15,22 @@ A hosted MCP server is available at [mcp.cplace.com](https://mcp.cplace.com/). T
|
|
|
15
15
|
claude mcp add --transport http cplace https://mcp.cplace.com --header "cplace-url: https://${CPLACE_PROJECT_API_TOKEN}@base.cplace.io"
|
|
16
16
|
```
|
|
17
17
|
|
|
18
|
+
You can optionally choose which tool profiles to load for the connection with a `cplace-profiles` header (HTTP/remote only). It uses the same value grammar as `--profiles=` and is read only when the connection is established (reconnect to change it):
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# Load core + types-write + low-code
|
|
22
|
+
claude mcp add --transport http cplace https://mcp.cplace.com \
|
|
23
|
+
--header "cplace-url: https://${CPLACE_PROJECT_API_TOKEN}@base.cplace.io" \
|
|
24
|
+
--header "cplace-profiles: types-write+low-code"
|
|
25
|
+
|
|
26
|
+
# Load all available profiles
|
|
27
|
+
claude mcp add --transport http cplace https://mcp.cplace.com \
|
|
28
|
+
--header "cplace-url: https://${CPLACE_PROJECT_API_TOKEN}@base.cplace.io" \
|
|
29
|
+
--header "cplace-profiles: all"
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
When set, the `cplace-profiles` header takes precedence over any saved preference for that token+tenant. If omitted (or empty), the server falls back to the stored preference, then `--profiles=`, then the `core` default. See [Profile Resolution Priority](#profile-resolution-priority).
|
|
33
|
+
|
|
18
34
|
#### Claude Desktop
|
|
19
35
|
```json
|
|
20
36
|
{
|
|
@@ -348,18 +364,22 @@ You can ask Claude to manage profiles at runtime using natural language. Claude
|
|
|
348
364
|
|
|
349
365
|
### Profile Resolution Priority
|
|
350
366
|
|
|
351
|
-
The server
|
|
367
|
+
The server determines which profiles are active using the following priority tiers (highest first):
|
|
368
|
+
|
|
369
|
+
0. **Connect-Time `cplace-profiles` Header (HTTP/remote only — Highest Priority)**: A remote client can choose its profiles per connection by sending a `cplace-profiles` request header on the `initialize` request. When present, it outranks every other tier, including a stored preference. The value uses the same grammar as `--profiles=` (see below): `+` or `,` separated profile names, or the `all` keyword. It is read **only at connection time** — a header sent on a later (reuse) request is ignored, and changing the selection requires reconnecting. An empty/whitespace header is treated as "not sent" and falls through to the tiers below. This tier does not apply to stdio/local mode.
|
|
352
370
|
|
|
353
|
-
1. **Stored Preferences
|
|
371
|
+
1. **Stored Preferences**: Profiles saved via `cplace_manage_profiles` tool, stored in `~/.cplace-mcp-profiles.json`. These are path-specific (keyed by working directory), user-specific (API token hash), and tenant-specific (URL).
|
|
354
372
|
|
|
355
373
|
2. **CLI Argument (Medium Priority)**: The `--profiles=` argument in your MCP server configuration. Used when no stored preference exists for the current directory/user/tenant combination.
|
|
356
374
|
|
|
357
|
-
3. **Code Default (Lowest Priority)**: Falls back to the "core" profile only when
|
|
375
|
+
3. **Code Default (Lowest Priority)**: Falls back to the "core" profile only when none of the tiers above apply.
|
|
358
376
|
|
|
359
377
|
**Special Rules**:
|
|
360
378
|
- The "core" profile is always included automatically, regardless of configuration
|
|
361
379
|
- Profile preferences are directory-specific: `/project-a` can have different profiles than `/project-b` for the same user
|
|
362
380
|
- The `cplace_manage_profiles` tool is always available
|
|
381
|
+
- In remote mode, `cplace_manage_profiles` `get`/`details` report the connection's actual resolved profiles. When the connect-time header was used, the reported `source` is `connect_header`. (The `source` for a stored preference is reported as `stored_preference`.)
|
|
382
|
+
- stdio/local mode is unaffected by the header and keeps using `--profiles=`/env and saved preferences.
|
|
363
383
|
|
|
364
384
|
## Available Profiles and Tools
|
|
365
385
|
|
|
@@ -610,6 +630,10 @@ graph TB
|
|
|
610
630
|
style DB fill:#f0f0f0
|
|
611
631
|
```
|
|
612
632
|
|
|
633
|
+
### Plugins & Extensibility
|
|
634
|
+
|
|
635
|
+
Every tool the server exposes comes from a plugin, including the built-in ones. You can add your own MCP tools by writing a plugin — a separate npm package that the server loads at startup via `--plugins` or `CPLACE_MCP_PLUGINS`, without forking the server. See [PLUGINS.md](PLUGINS.md) for the authoring guide and [`cplace-mcp-plugin-template/`](cplace-mcp-plugin-template/) for a ready-to-copy scaffold.
|
|
636
|
+
|
|
613
637
|
## Troubleshooting
|
|
614
638
|
|
|
615
639
|
For common issues and solutions, see [TROUBLESHOOTING.md](TROUBLESHOOTING.md).
|
package/dist/index.js
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { McpServer } from
|
|
2
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
3
3
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
4
|
-
import { StreamableHTTPServerTransport } from
|
|
5
|
-
import { isInitializeRequest } from
|
|
6
|
-
import express from
|
|
7
|
-
import cors from
|
|
8
|
-
import { randomUUID } from
|
|
4
|
+
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
5
|
+
import { isInitializeRequest } from '@modelcontextprotocol/sdk/types.js';
|
|
6
|
+
import express from 'express';
|
|
7
|
+
import cors from 'cors';
|
|
8
|
+
import { randomUUID } from 'node:crypto';
|
|
9
9
|
import * as dotenv from 'dotenv';
|
|
10
10
|
import { CplaceApiClient } from './api.js';
|
|
11
11
|
import { parseProfiles } from './profiles.js';
|
|
12
12
|
import { PluginRegistry } from './plugin-registry.js';
|
|
13
13
|
import { registerSystemTools } from './tools/system.js';
|
|
14
14
|
import { registerProfileManagementTools } from './tools/profile-management.js';
|
|
15
|
+
import { getPreference } from './preference-file.js';
|
|
15
16
|
import { registerWidgetTools } from './tools/widgets.js';
|
|
16
17
|
import { registerAppCatalogTools } from './tools/apps-catalog.js';
|
|
17
18
|
import { primeCustomConstraintTypeCache } from './tools/type-management.js';
|
|
@@ -95,7 +96,7 @@ debugLogWithTag('MCP', '====================================');
|
|
|
95
96
|
function createStdioServer() {
|
|
96
97
|
const stdioServer = new McpServer({
|
|
97
98
|
name: `cplace-mcp-server`,
|
|
98
|
-
version:
|
|
99
|
+
version: '1.0.0',
|
|
99
100
|
});
|
|
100
101
|
registry.registerTools(stdioServer, client, activeGroups);
|
|
101
102
|
const mergedSpecs = registry.getAggregatedWidgetSpecifications(activeGroups);
|
|
@@ -103,7 +104,23 @@ function createStdioServer() {
|
|
|
103
104
|
const mergedAppCatalog = registry.getAggregatedAppCatalog(activeGroups);
|
|
104
105
|
registerAppCatalogTools(stdioServer, mergedAppCatalog);
|
|
105
106
|
registerSystemTools(stdioServer, config, client);
|
|
106
|
-
|
|
107
|
+
let stdioSource;
|
|
108
|
+
if (config.apiToken && config.url && getPreference(config.apiToken, config.url)) {
|
|
109
|
+
stdioSource = 'stored_preference';
|
|
110
|
+
}
|
|
111
|
+
else if (process.argv.find((a) => a.startsWith('--profiles='))) {
|
|
112
|
+
stdioSource = 'cli_argument';
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
stdioSource = 'code_default';
|
|
116
|
+
}
|
|
117
|
+
registerProfileManagementTools(stdioServer, () => ({
|
|
118
|
+
apiToken: config.apiToken,
|
|
119
|
+
cplaceUrl: config.url,
|
|
120
|
+
resolvedProfiles: [...activeGroups],
|
|
121
|
+
source: stdioSource,
|
|
122
|
+
transport: 'stdio',
|
|
123
|
+
}), registry);
|
|
107
124
|
return stdioServer;
|
|
108
125
|
}
|
|
109
126
|
const isRemote = process.argv.includes('--remote') || process.env.MCP_TRANSPORT === 'http';
|
|
@@ -127,7 +144,7 @@ function validateCredentials(cplaceUrl, apiToken) {
|
|
|
127
144
|
if (!cplaceUrl && !apiToken) {
|
|
128
145
|
return {
|
|
129
146
|
valid: false,
|
|
130
|
-
error: 'Missing cplace URL and API token. Provide either CPLACE_URL + API_TOKEN or a URL with embedded credentials like https://token@host.com'
|
|
147
|
+
error: 'Missing cplace URL and API token. Provide either CPLACE_URL + API_TOKEN or a URL with embedded credentials like https://token@host.com',
|
|
131
148
|
};
|
|
132
149
|
}
|
|
133
150
|
if (!cplaceUrl) {
|
|
@@ -137,12 +154,12 @@ function validateCredentials(cplaceUrl, apiToken) {
|
|
|
137
154
|
if (hasEmbeddedCredentials(cplaceUrl)) {
|
|
138
155
|
return {
|
|
139
156
|
valid: false,
|
|
140
|
-
error: 'Failed to extract API token from URL. Ensure format is https://token@host.com or set API_TOKEN separately.'
|
|
157
|
+
error: 'Failed to extract API token from URL. Ensure format is https://token@host.com or set API_TOKEN separately.',
|
|
141
158
|
};
|
|
142
159
|
}
|
|
143
160
|
return {
|
|
144
161
|
valid: false,
|
|
145
|
-
error: 'Missing API token. Set API_TOKEN environment variable or use URL format https://token@host.com'
|
|
162
|
+
error: 'Missing API token. Set API_TOKEN environment variable or use URL format https://token@host.com',
|
|
146
163
|
};
|
|
147
164
|
}
|
|
148
165
|
}
|
|
@@ -151,40 +168,70 @@ function validateCredentials(cplaceUrl, apiToken) {
|
|
|
151
168
|
if (url.username || url.password) {
|
|
152
169
|
return {
|
|
153
170
|
valid: false,
|
|
154
|
-
error: 'URL contains credentials but API token was not properly extracted. Check URL format.'
|
|
171
|
+
error: 'URL contains credentials but API token was not properly extracted. Check URL format.',
|
|
155
172
|
};
|
|
156
173
|
}
|
|
157
174
|
}
|
|
158
175
|
catch (e) {
|
|
159
|
-
return {
|
|
176
|
+
return {
|
|
177
|
+
valid: false,
|
|
178
|
+
error: `Invalid cplace URL format: ${e instanceof Error ? e.message : 'Unknown error'}`,
|
|
179
|
+
};
|
|
160
180
|
}
|
|
161
181
|
if (apiToken.length < 10) {
|
|
162
|
-
return {
|
|
182
|
+
return {
|
|
183
|
+
valid: false,
|
|
184
|
+
error: 'API token appears to be too short (minimum 10 characters required)',
|
|
185
|
+
};
|
|
163
186
|
}
|
|
164
187
|
return { valid: true };
|
|
165
188
|
}
|
|
166
|
-
function createSessionServer(cplaceUrl, apiToken) {
|
|
189
|
+
function createSessionServer(cplaceUrl, apiToken, profilesHeader) {
|
|
167
190
|
const sessionClient = new CplaceApiClient({ url: ensureTrailingSlash(cplaceUrl), apiToken });
|
|
168
191
|
const sessionServer = new McpServer({
|
|
169
192
|
name: `cplace-mcp-server`,
|
|
170
|
-
version:
|
|
193
|
+
version: '1.0.0',
|
|
171
194
|
});
|
|
172
|
-
const sessionGroups = parseProfiles(process.argv, apiToken, cplaceUrl, registry.getAvailableProfileNames());
|
|
195
|
+
const sessionGroups = parseProfiles(process.argv, apiToken, cplaceUrl, registry.getAvailableProfileNames(), profilesHeader);
|
|
173
196
|
registry.registerTools(sessionServer, sessionClient, sessionGroups);
|
|
174
197
|
const mergedSpecs = registry.getAggregatedWidgetSpecifications(sessionGroups);
|
|
175
198
|
registerWidgetTools(sessionServer, sessionClient, mergedSpecs);
|
|
176
199
|
const mergedAppCatalog = registry.getAggregatedAppCatalog(sessionGroups);
|
|
177
200
|
registerAppCatalogTools(sessionServer, mergedAppCatalog);
|
|
178
|
-
registerSystemTools(sessionServer, {
|
|
179
|
-
|
|
201
|
+
registerSystemTools(sessionServer, {
|
|
202
|
+
url: ensureTrailingSlash(cplaceUrl),
|
|
203
|
+
apiToken,
|
|
204
|
+
registerSystemInfoTool: config.registerSystemInfoTool,
|
|
205
|
+
}, sessionClient);
|
|
206
|
+
const headerUsed = !!profilesHeader?.trim();
|
|
207
|
+
let source;
|
|
208
|
+
if (headerUsed) {
|
|
209
|
+
source = 'connect_header';
|
|
210
|
+
}
|
|
211
|
+
else if (getPreference(apiToken, cplaceUrl)) {
|
|
212
|
+
source = 'stored_preference';
|
|
213
|
+
}
|
|
214
|
+
else if (process.argv.find((a) => a.startsWith('--profiles='))) {
|
|
215
|
+
source = 'cli_argument';
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
source = 'code_default';
|
|
219
|
+
}
|
|
220
|
+
registerProfileManagementTools(sessionServer, () => ({
|
|
221
|
+
apiToken,
|
|
222
|
+
cplaceUrl,
|
|
223
|
+
resolvedProfiles: [...sessionGroups],
|
|
224
|
+
source,
|
|
225
|
+
transport: 'http',
|
|
226
|
+
}), registry);
|
|
180
227
|
return { server: sessionServer, client: sessionClient };
|
|
181
228
|
}
|
|
182
229
|
function startHttpServer() {
|
|
183
230
|
const app = express();
|
|
184
231
|
const port = process.env.PORT || 3000;
|
|
185
232
|
const sessions = {};
|
|
186
|
-
const createSession = async (cplaceUrl, apiToken) => {
|
|
187
|
-
const { server: sessionServer, client: sessionClient } = createSessionServer(cplaceUrl, apiToken);
|
|
233
|
+
const createSession = async (cplaceUrl, apiToken, profilesHeader) => {
|
|
234
|
+
const { server: sessionServer, client: sessionClient } = createSessionServer(cplaceUrl, apiToken, profilesHeader);
|
|
188
235
|
const transport = new StreamableHTTPServerTransport({
|
|
189
236
|
sessionIdGenerator: () => randomUUID(),
|
|
190
237
|
onsessioninitialized: (newSessionId) => {
|
|
@@ -197,7 +244,7 @@ function startHttpServer() {
|
|
|
197
244
|
credentials: { cplaceUrl, apiToken },
|
|
198
245
|
createdAt: now,
|
|
199
246
|
lastActivityAt: now,
|
|
200
|
-
activeStreamCount: 0
|
|
247
|
+
activeStreamCount: 0,
|
|
201
248
|
};
|
|
202
249
|
},
|
|
203
250
|
enableDnsRebindingProtection: false,
|
|
@@ -221,7 +268,7 @@ function startHttpServer() {
|
|
|
221
268
|
credentials: { cplaceUrl, apiToken },
|
|
222
269
|
createdAt: now,
|
|
223
270
|
lastActivityAt: now,
|
|
224
|
-
activeStreamCount: 0
|
|
271
|
+
activeStreamCount: 0,
|
|
225
272
|
};
|
|
226
273
|
};
|
|
227
274
|
const counters = { expiredSessions: 0, goneResponses: 0 };
|
|
@@ -234,14 +281,20 @@ function startHttpServer() {
|
|
|
234
281
|
app.use(cors({
|
|
235
282
|
origin: '*',
|
|
236
283
|
credentials: true,
|
|
237
|
-
allowedHeaders: [
|
|
238
|
-
|
|
284
|
+
allowedHeaders: [
|
|
285
|
+
'Content-Type',
|
|
286
|
+
'mcp-session-id',
|
|
287
|
+
'cplace-url',
|
|
288
|
+
'cplace-api-token',
|
|
289
|
+
'cplace-profiles',
|
|
290
|
+
],
|
|
291
|
+
exposedHeaders: ['mcp-session-id'],
|
|
239
292
|
}));
|
|
240
293
|
app.use(express.json());
|
|
241
294
|
const oauthNotSupported = (_req, res) => {
|
|
242
295
|
res.status(404).json({
|
|
243
296
|
error: 'not_supported',
|
|
244
|
-
error_description: 'This server does not support OAuth. Authenticate via cplace-url and cplace-api-token headers.'
|
|
297
|
+
error_description: 'This server does not support OAuth. Authenticate via cplace-url and cplace-api-token headers.',
|
|
245
298
|
});
|
|
246
299
|
};
|
|
247
300
|
app.get('/.well-known/oauth-protected-resource', oauthNotSupported);
|
|
@@ -255,15 +308,11 @@ function startHttpServer() {
|
|
|
255
308
|
app.get('/health', (req, res) => {
|
|
256
309
|
const now = Date.now();
|
|
257
310
|
const sessionValues = Object.values(sessions);
|
|
258
|
-
const sessionAges = sessionValues.map(s => now - s.createdAt.getTime());
|
|
259
|
-
const sessionIdleTimes = sessionValues.map(s => now - s.lastActivityAt.getTime());
|
|
311
|
+
const sessionAges = sessionValues.map((s) => now - s.createdAt.getTime());
|
|
312
|
+
const sessionIdleTimes = sessionValues.map((s) => now - s.lastActivityAt.getTime());
|
|
260
313
|
const activeStreams = sessionValues.reduce((sum, s) => sum + s.activeStreamCount, 0);
|
|
261
|
-
const oldestSessionAgeMinutes = sessionAges.length > 0
|
|
262
|
-
|
|
263
|
-
: 0;
|
|
264
|
-
const maxIdleTimeMinutes = sessionIdleTimes.length > 0
|
|
265
|
-
? Math.round(Math.max(...sessionIdleTimes) / 60000)
|
|
266
|
-
: 0;
|
|
314
|
+
const oldestSessionAgeMinutes = sessionAges.length > 0 ? Math.round(Math.max(...sessionAges) / 60000) : 0;
|
|
315
|
+
const maxIdleTimeMinutes = sessionIdleTimes.length > 0 ? Math.round(Math.max(...sessionIdleTimes) / 60000) : 0;
|
|
267
316
|
res.json({
|
|
268
317
|
status: 'healthy',
|
|
269
318
|
version: packageJson.version,
|
|
@@ -277,12 +326,12 @@ function startHttpServer() {
|
|
|
277
326
|
sessionIdleTimeoutMs: SESSION_IDLE_TIMEOUT_MS,
|
|
278
327
|
cleanupIntervalMs: CLEANUP_INTERVAL_MS,
|
|
279
328
|
sseKeepaliveMs: SSE_KEEPALIVE_MS,
|
|
280
|
-
sseMaxStreamLifetimeMs: SSE_MAX_STREAM_LIFETIME_MS
|
|
329
|
+
sseMaxStreamLifetimeMs: SSE_MAX_STREAM_LIFETIME_MS,
|
|
281
330
|
},
|
|
282
331
|
counters: {
|
|
283
332
|
expiredSessions: counters.expiredSessions,
|
|
284
|
-
goneResponses: counters.goneResponses
|
|
285
|
-
}
|
|
333
|
+
goneResponses: counters.goneResponses,
|
|
334
|
+
},
|
|
286
335
|
});
|
|
287
336
|
});
|
|
288
337
|
const handlePostRequest = async (req, res) => {
|
|
@@ -314,9 +363,9 @@ function startHttpServer() {
|
|
|
314
363
|
jsonrpc: '2.0',
|
|
315
364
|
error: {
|
|
316
365
|
code: -32000,
|
|
317
|
-
message: 'Session expired or not found. Please reconnect by sending a new initialize request.'
|
|
366
|
+
message: 'Session expired or not found. Please reconnect by sending a new initialize request.',
|
|
318
367
|
},
|
|
319
|
-
id: null
|
|
368
|
+
id: null,
|
|
320
369
|
});
|
|
321
370
|
return;
|
|
322
371
|
}
|
|
@@ -334,8 +383,9 @@ function startHttpServer() {
|
|
|
334
383
|
});
|
|
335
384
|
return;
|
|
336
385
|
}
|
|
386
|
+
const profilesHeader = req.headers['cplace-profiles'];
|
|
337
387
|
debugLogWithTag('MCP', `🆕 Creating new MCP session for ${new URL(cplaceUrl).hostname}`);
|
|
338
|
-
sessionInfo = await createSession(cplaceUrl, apiToken);
|
|
388
|
+
sessionInfo = await createSession(cplaceUrl, apiToken, profilesHeader);
|
|
339
389
|
}
|
|
340
390
|
else {
|
|
341
391
|
debugLogWithTag('MCP', '❌ Invalid request: No valid session ID provided');
|
|
@@ -388,7 +438,8 @@ function startHttpServer() {
|
|
|
388
438
|
try {
|
|
389
439
|
res.end();
|
|
390
440
|
}
|
|
391
|
-
catch {
|
|
441
|
+
catch {
|
|
442
|
+
}
|
|
392
443
|
}
|
|
393
444
|
}, SSE_KEEPALIVE_MS);
|
|
394
445
|
const maxLifetimeTimer = setTimeout(() => {
|
|
@@ -399,7 +450,8 @@ function startHttpServer() {
|
|
|
399
450
|
try {
|
|
400
451
|
res.end();
|
|
401
452
|
}
|
|
402
|
-
catch {
|
|
453
|
+
catch {
|
|
454
|
+
}
|
|
403
455
|
}, SSE_MAX_STREAM_LIFETIME_MS);
|
|
404
456
|
res.on('close', cleanup);
|
|
405
457
|
res.on('finish', cleanup);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/profiles.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function parseProfiles(argv: string[], apiToken?: string, tenantUrl?: string, validProfiles?: Set<string
|
|
1
|
+
export declare function parseProfiles(argv: string[], apiToken?: string, tenantUrl?: string, validProfiles?: Set<string>, profilesHeader?: string): Set<string>;
|
|
2
2
|
//# sourceMappingURL=profiles.d.ts.map
|
package/dist/profiles.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../src/profiles.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../src/profiles.ts"],"names":[],"mappings":"AAgCA,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EAAE,EACd,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAC3B,cAAc,CAAC,EAAE,MAAM,GACtB,GAAG,CAAC,MAAM,CAAC,CAmHb"}
|
package/dist/profiles.js
CHANGED
|
@@ -1,12 +1,35 @@
|
|
|
1
1
|
import { debugLogWithTag } from './logger.js';
|
|
2
2
|
import { getPreference } from './preference-file.js';
|
|
3
|
-
export function parseProfiles(argv, apiToken, tenantUrl, validProfiles) {
|
|
3
|
+
export function parseProfiles(argv, apiToken, tenantUrl, validProfiles, profilesHeader) {
|
|
4
4
|
debugLogWithTag('PROFILES', `parseProfiles called with args: ${JSON.stringify(argv)}`);
|
|
5
5
|
const activeGroups = new Set();
|
|
6
|
+
const headerValue = profilesHeader?.trim();
|
|
7
|
+
if (headerValue) {
|
|
8
|
+
if (headerValue === 'all') {
|
|
9
|
+
validProfiles.forEach((profile) => activeGroups.add(profile));
|
|
10
|
+
debugLogWithTag('PROFILES', 'Header: loading all profiles');
|
|
11
|
+
return activeGroups;
|
|
12
|
+
}
|
|
13
|
+
const headerProfiles = headerValue
|
|
14
|
+
.split(/[+,]/)
|
|
15
|
+
.map((g) => g.trim())
|
|
16
|
+
.filter((g) => g);
|
|
17
|
+
activeGroups.add('core');
|
|
18
|
+
for (const profile of headerProfiles) {
|
|
19
|
+
if (validProfiles?.has(profile)) {
|
|
20
|
+
activeGroups.add(profile);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
debugLogWithTag('PROFILES', `Header: unknown profile '${profile}' - skipping`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
debugLogWithTag('PROFILES', `Header: ${Array.from(activeGroups).join(', ')}`);
|
|
27
|
+
return activeGroups;
|
|
28
|
+
}
|
|
6
29
|
if (apiToken && tenantUrl) {
|
|
7
30
|
const storedPreference = getPreference(apiToken, tenantUrl);
|
|
8
31
|
if (storedPreference && storedPreference.length > 0) {
|
|
9
|
-
const cliProfilesArg = argv.find(arg => arg.startsWith('--profiles='));
|
|
32
|
+
const cliProfilesArg = argv.find((arg) => arg.startsWith('--profiles='));
|
|
10
33
|
if (cliProfilesArg) {
|
|
11
34
|
console.warn(`[cplace-mcp] ⚠️ Stored profile preference is overriding CLI flag "${cliProfilesArg}".\n` +
|
|
12
35
|
` Active profiles from preference: ${storedPreference.join(', ')}\n` +
|
|
@@ -15,10 +38,10 @@ export function parseProfiles(argv, apiToken, tenantUrl, validProfiles) {
|
|
|
15
38
|
}
|
|
16
39
|
debugLogWithTag('PROFILES', `Using stored preference for ${tenantUrl}: ${storedPreference.join(', ')}`);
|
|
17
40
|
if (storedPreference.length === 1 && storedPreference[0] === 'all') {
|
|
18
|
-
validProfiles.forEach(profile => activeGroups.add(profile));
|
|
41
|
+
validProfiles.forEach((profile) => activeGroups.add(profile));
|
|
19
42
|
return activeGroups;
|
|
20
43
|
}
|
|
21
|
-
storedPreference.forEach(profile => {
|
|
44
|
+
storedPreference.forEach((profile) => {
|
|
22
45
|
if (validProfiles?.has(profile)) {
|
|
23
46
|
activeGroups.add(profile);
|
|
24
47
|
}
|
|
@@ -30,11 +53,11 @@ export function parseProfiles(argv, apiToken, tenantUrl, validProfiles) {
|
|
|
30
53
|
}
|
|
31
54
|
debugLogWithTag('PROFILES', `No stored preference found for ${tenantUrl}`);
|
|
32
55
|
}
|
|
33
|
-
const profilesArg = argv.find(arg => arg.startsWith('--profiles='));
|
|
56
|
+
const profilesArg = argv.find((arg) => arg.startsWith('--profiles='));
|
|
34
57
|
if (profilesArg) {
|
|
35
58
|
const profilesValue = profilesArg.split('=')[1];
|
|
36
59
|
if (profilesValue === 'all') {
|
|
37
|
-
validProfiles.forEach(profile => activeGroups.add(profile));
|
|
60
|
+
validProfiles.forEach((profile) => activeGroups.add(profile));
|
|
38
61
|
debugLogWithTag('PROFILES', 'CLI: Loading all profiles');
|
|
39
62
|
return activeGroups;
|
|
40
63
|
}
|
package/dist/profiles.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../src/profiles.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../src/profiles.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
2
|
import { PluginRegistry } from '../plugin-registry.js';
|
|
3
|
-
export
|
|
3
|
+
export type ProfileSource = 'connect_header' | 'stored_preference' | 'cli_argument' | 'code_default';
|
|
4
|
+
export interface ProfileContext {
|
|
4
5
|
apiToken: string;
|
|
5
6
|
cplaceUrl: string;
|
|
6
|
-
|
|
7
|
+
resolvedProfiles: string[];
|
|
8
|
+
source: ProfileSource;
|
|
9
|
+
transport: 'http' | 'stdio';
|
|
10
|
+
}
|
|
11
|
+
export declare function registerProfileManagementTools(server: McpServer, getContext: () => ProfileContext, registry: PluginRegistry): void;
|
|
7
12
|
//# sourceMappingURL=profile-management.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile-management.d.ts","sourceRoot":"","sources":["../../src/tools/profile-management.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"profile-management.d.ts","sourceRoot":"","sources":["../../src/tools/profile-management.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAUvD,MAAM,MAAM,aAAa,GACrB,gBAAgB,GAChB,mBAAmB,GACnB,cAAc,GACd,cAAc,CAAC;AAQnB,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;CAC7B;AA+PD,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,cAAc,EAChC,QAAQ,EAAE,cAAc,QA+GzB"}
|
|
@@ -1,8 +1,26 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { debugLogWithTag } from '../logger.js';
|
|
3
|
-
import {
|
|
4
|
-
import { setPreference, getPreference, clearPreference, readPreferences, } from '../preference-file.js';
|
|
3
|
+
import { setPreference, clearPreference } from '../preference-file.js';
|
|
5
4
|
const TOOL_MANAGE_PROFILES = 'cplace_manage_profiles';
|
|
5
|
+
function describeSource(source, transport) {
|
|
6
|
+
const stdio = transport === 'stdio';
|
|
7
|
+
switch (source) {
|
|
8
|
+
case 'connect_header':
|
|
9
|
+
return 'Using cplace-profiles connect-time header';
|
|
10
|
+
case 'stored_preference':
|
|
11
|
+
return stdio
|
|
12
|
+
? 'Using saved preference for current directory'
|
|
13
|
+
: 'Using saved preference for this tenant';
|
|
14
|
+
case 'cli_argument':
|
|
15
|
+
return stdio
|
|
16
|
+
? 'Using CLI argument (no saved preference for current directory)'
|
|
17
|
+
: 'Using CLI argument (no connect-time header or saved preference)';
|
|
18
|
+
case 'code_default':
|
|
19
|
+
return stdio
|
|
20
|
+
? 'Using code default (no saved preference or CLI argument)'
|
|
21
|
+
: 'Using code default (no connect-time header, saved preference, or CLI argument)';
|
|
22
|
+
}
|
|
23
|
+
}
|
|
6
24
|
async function handleSetOperation(params, apiToken, cplaceUrl, registry) {
|
|
7
25
|
const availableNames = Array.from(registry.getAvailableProfileNames());
|
|
8
26
|
if (!params.profiles || params.profiles.length === 0) {
|
|
@@ -63,32 +81,12 @@ async function handleSetOperation(params, apiToken, cplaceUrl, registry) {
|
|
|
63
81
|
],
|
|
64
82
|
};
|
|
65
83
|
}
|
|
66
|
-
async function handleGetOperation(
|
|
67
|
-
debugLogWithTag('PROFILES', `Getting active profiles for ${cplaceUrl}`);
|
|
68
|
-
readPreferences();
|
|
69
|
-
const storedPreference = getPreference(apiToken, cplaceUrl);
|
|
70
|
-
const activeGroups = parseProfiles(process.argv, apiToken, cplaceUrl, registry.getAvailableProfileNames());
|
|
71
|
-
let source;
|
|
72
|
-
let message;
|
|
73
|
-
if (storedPreference) {
|
|
74
|
-
source = 'path_preference';
|
|
75
|
-
message = 'Using saved preference for current directory';
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
const cliArg = process.argv.find((arg) => arg.startsWith('--profiles='));
|
|
79
|
-
if (cliArg) {
|
|
80
|
-
source = 'cli_argument';
|
|
81
|
-
message = 'Using CLI argument (no saved preference for current directory)';
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
source = 'code_default';
|
|
85
|
-
message = 'Using code default (no saved preference or CLI argument)';
|
|
86
|
-
}
|
|
87
|
-
}
|
|
84
|
+
async function handleGetOperation(context) {
|
|
85
|
+
debugLogWithTag('PROFILES', `Getting active profiles for ${context.cplaceUrl}`);
|
|
88
86
|
const display = {
|
|
89
|
-
active_profiles:
|
|
90
|
-
source: source,
|
|
91
|
-
message:
|
|
87
|
+
active_profiles: [...context.resolvedProfiles].sort(),
|
|
88
|
+
source: context.source,
|
|
89
|
+
message: describeSource(context.source, context.transport),
|
|
92
90
|
};
|
|
93
91
|
return {
|
|
94
92
|
content: [
|
|
@@ -111,10 +109,10 @@ async function handleClearOperation(apiToken, cplaceUrl) {
|
|
|
111
109
|
],
|
|
112
110
|
};
|
|
113
111
|
}
|
|
114
|
-
async function handleDetailsOperation(params,
|
|
112
|
+
async function handleDetailsOperation(params, context, registry) {
|
|
115
113
|
debugLogWithTag('PROFILES', `Getting profile details${params.profileName ? ` for ${params.profileName}` : ''}`);
|
|
116
114
|
const availableNames = Array.from(registry.getAvailableProfileNames());
|
|
117
|
-
const activeGroups =
|
|
115
|
+
const activeGroups = new Set(context.resolvedProfiles);
|
|
118
116
|
if (params.profileName && !registry.hasProfile(params.profileName)) {
|
|
119
117
|
return {
|
|
120
118
|
content: [
|
|
@@ -173,12 +171,13 @@ async function handleDetailsOperation(params, apiToken, cplaceUrl, registry) {
|
|
|
173
171
|
],
|
|
174
172
|
};
|
|
175
173
|
}
|
|
176
|
-
export function registerProfileManagementTools(server,
|
|
174
|
+
export function registerProfileManagementTools(server, getContext, registry) {
|
|
177
175
|
const availableNames = Array.from(registry.getAvailableProfileNames());
|
|
178
176
|
const toolDefinition = {
|
|
179
177
|
description: `Manage cplace MCP profile configuration. Profiles control which MCP tools are available.
|
|
180
178
|
|
|
181
179
|
Priority system (highest to lowest):
|
|
180
|
+
0. Connect-time 'cplace-profiles' request header (HTTP/remote only) — read ONLY at connection time; a header sent on a later request is ignored. When present it takes precedence over a saved preference.
|
|
182
181
|
1. Saved preferences (user+tenant+directory specific)
|
|
183
182
|
2. CLI --profiles= argument (used as default when no saved preference exists)
|
|
184
183
|
3. Code default: ["core"] only
|
|
@@ -187,6 +186,8 @@ Preference storage:
|
|
|
187
186
|
- All directory-specific preferences stored in single file
|
|
188
187
|
- Preferences are specific to the directory where MCP server runs -> different directories can have different profile configurations (this only applies when using a local mcp server)
|
|
189
188
|
|
|
189
|
+
Note: 'set'/'clear' affect connections that send no 'cplace-profiles' header. In remote mode, a connect-time header overrides any saved preference for that connection.
|
|
190
|
+
|
|
190
191
|
Operations:
|
|
191
192
|
- 'set': Activate profiles for current directory (e.g., ['layouts', 'types-write'], ['all'])
|
|
192
193
|
- 'get': View current profile configuration and source
|
|
@@ -214,7 +215,8 @@ Changes take effect after reconnecting the MCP server.`,
|
|
|
214
215
|
server.registerTool(TOOL_MANAGE_PROFILES, toolDefinition, async (params) => {
|
|
215
216
|
const { operation } = params;
|
|
216
217
|
try {
|
|
217
|
-
const
|
|
218
|
+
const context = getContext();
|
|
219
|
+
const { apiToken, cplaceUrl } = context;
|
|
218
220
|
if (!apiToken || !cplaceUrl) {
|
|
219
221
|
return {
|
|
220
222
|
content: [
|
|
@@ -230,11 +232,11 @@ Changes take effect after reconnecting the MCP server.`,
|
|
|
230
232
|
case 'set':
|
|
231
233
|
return await handleSetOperation(params, apiToken, cplaceUrl, registry);
|
|
232
234
|
case 'get':
|
|
233
|
-
return await handleGetOperation(
|
|
235
|
+
return await handleGetOperation(context);
|
|
234
236
|
case 'clear':
|
|
235
237
|
return await handleClearOperation(apiToken, cplaceUrl);
|
|
236
238
|
case 'details':
|
|
237
|
-
return await handleDetailsOperation(params,
|
|
239
|
+
return await handleDetailsOperation(params, context, registry);
|
|
238
240
|
default:
|
|
239
241
|
return {
|
|
240
242
|
content: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile-management.js","sourceRoot":"","sources":["../../src/tools/profile-management.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"profile-management.js","sourceRoot":"","sources":["../../src/tools/profile-management.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED