@contextium/mcp-server 0.3.0 → 0.4.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"AAMA,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAmDD;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2F5E"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"AAKA,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAmKD;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2G5E"}
package/dist/cli/setup.js CHANGED
@@ -1,36 +1,68 @@
1
- import http from 'http';
2
1
  import open from 'open';
3
2
  import readline from 'readline';
4
3
  import { saveProfile } from './credentials.js';
5
4
  import { updateClaudeConfigForContextium, claudeConfigExists } from './config-manager.js';
6
5
  const DEFAULT_API_URL = 'https://api.contextium.io/api/v1';
7
- const AUTH_TIMEOUT_MS = 5 * 60 * 1000; // 5 minutes
8
- const PORT_RANGE_START = 8000;
9
- const PORT_RANGE_END = 9000;
6
+ const AUTH_TIMEOUT_MS = 15 * 60 * 1000; // 15 minutes (matches device code expiry)
10
7
  /**
11
- * Find an available port in the range
8
+ * Generate device code from API
12
9
  */
13
- async function findAvailablePort() {
14
- for (let port = PORT_RANGE_START; port <= PORT_RANGE_END; port++) {
15
- if (await isPortAvailable(port)) {
16
- return port;
10
+ async function generateDeviceCode(apiUrl) {
11
+ const response = await fetch(`${apiUrl}/mcp/device`, {
12
+ method: 'POST',
13
+ headers: {
14
+ 'Content-Type': 'application/json',
15
+ },
16
+ });
17
+ if (!response.ok) {
18
+ const error = await response.text();
19
+ throw new Error(`Failed to generate device code: ${error}`);
20
+ }
21
+ const data = (await response.json());
22
+ return data.data;
23
+ }
24
+ /**
25
+ * Poll for device authorization
26
+ */
27
+ async function pollForToken(apiUrl, deviceCode, interval) {
28
+ const startTime = Date.now();
29
+ while (Date.now() - startTime < AUTH_TIMEOUT_MS) {
30
+ try {
31
+ const response = await fetch(`${apiUrl}/mcp/device/token`, {
32
+ method: 'POST',
33
+ headers: {
34
+ 'Content-Type': 'application/json',
35
+ },
36
+ body: JSON.stringify({ device_code: deviceCode }),
37
+ });
38
+ if (response.ok) {
39
+ const data = (await response.json());
40
+ return data.data;
41
+ }
42
+ const errorData = (await response.json());
43
+ if (errorData.error === 'authorization_pending') {
44
+ // Still waiting for user authorization, continue polling
45
+ await sleep(interval * 1000);
46
+ continue;
47
+ }
48
+ // Other error
49
+ throw new Error(errorData.error_description || errorData.error || 'Authorization failed');
50
+ }
51
+ catch (error) {
52
+ if (error instanceof Error && error.message.includes('authorization_pending')) {
53
+ await sleep(interval * 1000);
54
+ continue;
55
+ }
56
+ throw error;
17
57
  }
18
58
  }
19
- throw new Error(`No available ports in range ${PORT_RANGE_START}-${PORT_RANGE_END}`);
59
+ throw new Error('Authorization timeout - please try again');
20
60
  }
21
61
  /**
22
- * Check if a port is available
62
+ * Sleep for specified milliseconds
23
63
  */
24
- function isPortAvailable(port) {
25
- return new Promise((resolve) => {
26
- const server = http.createServer();
27
- server.once('error', () => resolve(false));
28
- server.once('listening', () => {
29
- server.close();
30
- resolve(true);
31
- });
32
- server.listen(port);
33
- });
64
+ function sleep(ms) {
65
+ return new Promise((resolve) => setTimeout(resolve, ms));
34
66
  }
35
67
  /**
36
68
  * Ask user a yes/no question
@@ -47,6 +79,49 @@ async function askYesNo(question) {
47
79
  });
48
80
  });
49
81
  }
82
+ /**
83
+ * Ask user a question and get text input
84
+ */
85
+ async function askQuestion(question, defaultValue) {
86
+ const rl = readline.createInterface({
87
+ input: process.stdin,
88
+ output: process.stdout,
89
+ });
90
+ return new Promise((resolve) => {
91
+ const prompt = defaultValue ? `${question} (default: ${defaultValue}): ` : `${question}: `;
92
+ rl.question(prompt, (answer) => {
93
+ rl.close();
94
+ resolve(answer.trim() || defaultValue || '');
95
+ });
96
+ });
97
+ }
98
+ /**
99
+ * Detect device information
100
+ */
101
+ function getDeviceInfo() {
102
+ const platform = process.platform;
103
+ const arch = process.arch;
104
+ let osName = 'Unknown';
105
+ let deviceName = 'CLI Device';
106
+ switch (platform) {
107
+ case 'darwin':
108
+ osName = 'macOS';
109
+ deviceName = 'Mac';
110
+ break;
111
+ case 'win32':
112
+ osName = 'Windows';
113
+ deviceName = 'Windows PC';
114
+ break;
115
+ case 'linux':
116
+ osName = 'Linux';
117
+ deviceName = 'Linux Machine';
118
+ break;
119
+ }
120
+ return {
121
+ name: deviceName,
122
+ os: `${osName} (${arch})`,
123
+ };
124
+ }
50
125
  /**
51
126
  * Main setup command
52
127
  */
@@ -56,20 +131,27 @@ export async function setupCommand(options = {}) {
56
131
  console.log('\n🚀 Contextium MCP Setup\n');
57
132
  console.log('This will authorize your MCP server to access Contextium.\n');
58
133
  try {
59
- // Step 1: Find available port
60
- const callbackPort = await findAvailablePort();
61
- console.log(`✓ Found available port: ${callbackPort}`);
62
- // Step 2: Start local HTTP server
63
- const tokenPromise = startCallbackServer(callbackPort);
64
- // Step 3: Construct authorization URL
65
- // Convert API URL to web app URL (api.contextium.io -> app.contextium.io)
66
- const webAppUrl = apiUrl
67
- .replace('/api/v1', '')
68
- .replace('api.contextium.io', 'app.contextium.io')
69
- .replace('api.contextium.io', 'app.contextium.io');
70
- const authUrl = `${webAppUrl}/mcp/authorize?port=${callbackPort}`;
71
- console.log('\n📝 Opening browser for authorization...\n');
72
- // Step 4: Open browser
134
+ // Step 1: Get device info
135
+ const detectedDevice = getDeviceInfo();
136
+ const deviceName = await askQuestion('What is this device?', detectedDevice.name);
137
+ // Step 2: Generate device code
138
+ console.log('\n⏳ Generating device code...');
139
+ const deviceCodeResponse = await generateDeviceCode(apiUrl);
140
+ console.log('✓ Device code generated\n');
141
+ // Step 3: Display user code
142
+ console.log('═══════════════════════════════════════════════');
143
+ console.log('');
144
+ console.log(' 📱 Your device code:');
145
+ console.log('');
146
+ console.log(` ${deviceCodeResponse.userCode}`);
147
+ console.log('');
148
+ console.log('═══════════════════════════════════════════════\n');
149
+ console.log(`Device: ${deviceName}`);
150
+ console.log(`This code will expire in 15 minutes.`);
151
+ console.log(`Code expires at: ${new Date(deviceCodeResponse.expiresAt).toLocaleString()}\n`);
152
+ // Step 4: Open browser to authorization page
153
+ const authUrl = `${deviceCodeResponse.verificationUri}?code=${deviceCodeResponse.userCode}&deviceName=${encodeURIComponent(deviceName)}`;
154
+ console.log('📝 Opening browser for authorization...\n');
73
155
  if (!options.skipBrowser) {
74
156
  try {
75
157
  await open(authUrl);
@@ -85,20 +167,21 @@ export async function setupCommand(options = {}) {
85
167
  console.log('Please open this URL in your browser:');
86
168
  console.log(authUrl);
87
169
  }
88
- console.log('\n⏳ Waiting for authorization...\n');
89
- // Step 6: Wait for callback
90
- const result = await tokenPromise;
170
+ console.log('\n⏳ Waiting for authorization...');
171
+ console.log('(This will continue automatically once you authorize in your browser)\n');
172
+ // Step 5: Poll for authorization
173
+ const result = await pollForToken(apiUrl, deviceCodeResponse.deviceCode, deviceCodeResponse.interval);
91
174
  console.log('✓ Authorization successful!');
92
- // Step 7: Save credentials
175
+ // Step 6: Save credentials
93
176
  saveProfile(profileName, {
94
177
  apiUrl,
95
- accessToken: result.token,
96
- workspaceId: result.workspaceId || null,
178
+ accessToken: result.access_token,
179
+ workspaceId: result.workspace_id || null,
97
180
  createdAt: new Date().toISOString(),
98
- expiresAt: result.expiresAt,
181
+ expiresAt: result.expires_at,
99
182
  }, true);
100
183
  console.log(`✓ Credentials saved to profile: ${profileName}`);
101
- // Step 8: Ask about Claude config
184
+ // Step 7: Ask about Claude config
102
185
  if (claudeConfigExists()) {
103
186
  console.log('\n🔧 Claude Desktop detected');
104
187
  const shouldUpdate = await askYesNo('Would you like to update Claude Desktop config?');
@@ -128,172 +211,4 @@ export async function setupCommand(options = {}) {
128
211
  process.exit(1);
129
212
  }
130
213
  }
131
- /**
132
- * Start local HTTP server to receive callback
133
- */
134
- function startCallbackServer(port) {
135
- return new Promise((resolve, reject) => {
136
- const timeout = setTimeout(() => {
137
- server.close();
138
- reject(new Error('Authorization timeout - please try again'));
139
- }, AUTH_TIMEOUT_MS);
140
- const server = http.createServer(async (req, res) => {
141
- const url = new URL(req.url || '', `http://localhost:${port}`);
142
- if (url.pathname === '/callback') {
143
- const token = url.searchParams.get('token');
144
- const workspaceId = url.searchParams.get('workspaceId');
145
- const expiresAt = url.searchParams.get('expiresAt');
146
- const error = url.searchParams.get('error');
147
- if (error) {
148
- res.writeHead(400, { 'Content-Type': 'text/html' });
149
- res.end(`
150
- <html>
151
- <body style="font-family: sans-serif; padding: 40px; text-align: center;">
152
- <h1>❌ Authorization Failed</h1>
153
- <p>${error}</p>
154
- <p>You can close this window and try again.</p>
155
- </body>
156
- </html>
157
- `);
158
- clearTimeout(timeout);
159
- server.close();
160
- reject(new Error(error));
161
- return;
162
- }
163
- if (!token || !expiresAt) {
164
- res.writeHead(400, { 'Content-Type': 'text/html' });
165
- res.end(`
166
- <html>
167
- <body style="font-family: sans-serif; padding: 40px; text-align: center;">
168
- <h1>❌ Missing Data</h1>
169
- <p>Token or expiry date missing. Please try again.</p>
170
- </body>
171
- </html>
172
- `);
173
- clearTimeout(timeout);
174
- server.close();
175
- reject(new Error('Missing token or expiry data'));
176
- return;
177
- }
178
- // Success!
179
- res.writeHead(200, { 'Content-Type': 'text/html' });
180
- res.end(`
181
- <!DOCTYPE html>
182
- <html lang="en">
183
- <head>
184
- <meta charset="UTF-8">
185
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
186
- <title>Contextium - Setup Complete</title>
187
- <style>
188
- * { margin: 0; padding: 0; box-sizing: border-box; }
189
- body {
190
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
191
- background: #0a0a0b;
192
- color: #e5e5e7;
193
- display: flex;
194
- align-items: center;
195
- justify-content: center;
196
- min-height: 100vh;
197
- padding: 20px;
198
- }
199
- .container {
200
- text-align: center;
201
- max-width: 500px;
202
- }
203
- .icon {
204
- width: 80px;
205
- height: 80px;
206
- margin: 0 auto 32px;
207
- background: rgba(34, 197, 94, 0.1);
208
- border-radius: 50%;
209
- display: flex;
210
- align-items: center;
211
- justify-content: center;
212
- position: relative;
213
- }
214
- .icon::before {
215
- content: '';
216
- position: absolute;
217
- inset: 0;
218
- background: rgba(34, 197, 94, 0.2);
219
- border-radius: 50%;
220
- filter: blur(40px);
221
- }
222
- .icon svg {
223
- width: 40px;
224
- height: 40px;
225
- position: relative;
226
- z-index: 1;
227
- }
228
- h1 {
229
- font-size: 32px;
230
- font-weight: 700;
231
- margin-bottom: 16px;
232
- color: #fff;
233
- }
234
- p {
235
- font-size: 16px;
236
- color: #a1a1aa;
237
- line-height: 1.6;
238
- }
239
- .badge {
240
- display: inline-flex;
241
- align-items: center;
242
- gap: 8px;
243
- margin-top: 32px;
244
- padding: 12px 24px;
245
- background: rgba(34, 197, 94, 0.1);
246
- border: 1px solid rgba(34, 197, 94, 0.2);
247
- border-radius: 12px;
248
- color: #22c55e;
249
- font-size: 14px;
250
- font-weight: 500;
251
- }
252
- </style>
253
- </head>
254
- <body>
255
- <div class="container">
256
- <div class="icon">
257
- <svg fill="none" stroke="#22c55e" stroke-width="3" viewBox="0 0 24 24">
258
- <path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7" />
259
- </svg>
260
- </div>
261
- <h1>Setup Complete!</h1>
262
- <p>Your MCP server is now connected to Contextium.<br>Return to your terminal to continue.</p>
263
- <div class="badge">
264
- <svg width="16" height="16" fill="currentColor" viewBox="0 0 24 24">
265
- <path d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"/>
266
- </svg>
267
- Credentials Saved
268
- </div>
269
- <p style="margin-top: 24px; padding: 16px; background: rgba(251, 191, 36, 0.1); border: 1px solid rgba(251, 191, 36, 0.2); border-radius: 8px; color: #fbbf24; font-size: 14px; line-height: 1.5;">
270
- <strong>⚠️ Important:</strong> If Claude Desktop is already open, please quit and restart it for changes to take effect.
271
- </p>
272
- </div>
273
- <script>setTimeout(() => window.close(), 5000);</script>
274
- </body>
275
- </html>
276
- `);
277
- clearTimeout(timeout);
278
- server.close();
279
- resolve({
280
- token,
281
- workspaceId: workspaceId || null,
282
- expiresAt,
283
- });
284
- }
285
- else {
286
- res.writeHead(404);
287
- res.end('Not Found');
288
- }
289
- });
290
- server.on('error', (err) => {
291
- clearTimeout(timeout);
292
- reject(err);
293
- });
294
- server.listen(port, '127.0.0.1', () => {
295
- console.log(`✓ Callback server listening on http://localhost:${port}`);
296
- });
297
- });
298
- }
299
214
  //# sourceMappingURL=setup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,+BAA+B,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAQ1F,MAAM,eAAe,GAAG,kCAAkC,CAAC;AAC3D,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,YAAY;AACnD,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC9B,MAAM,cAAc,GAAG,IAAI,CAAC;AAE5B;;GAEG;AACH,KAAK,UAAU,iBAAiB;IAC9B,KAAK,IAAI,IAAI,GAAG,gBAAgB,EAAE,IAAI,IAAI,cAAc,EAAE,IAAI,EAAE,EAAE,CAAC;QACjE,IAAI,MAAM,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,+BAA+B,gBAAgB,IAAI,cAAc,EAAE,CAAC,CAAC;AACvF,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;YAC5B,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,QAAQ,CAAC,QAAgB;IACtC,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IAEH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,GAAG,QAAQ,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE;YAC5C,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,UAAwB,EAAE;IAC3D,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,IAAI,SAAS,CAAC;IACjD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,eAAe,CAAC;IAEjD,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;IAE3E,IAAI,CAAC;QACH,8BAA8B;QAC9B,MAAM,YAAY,GAAG,MAAM,iBAAiB,EAAE,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,2BAA2B,YAAY,EAAE,CAAC,CAAC;QAEvD,kCAAkC;QAClC,MAAM,YAAY,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC;QAEvD,sCAAsC;QACtC,0EAA0E;QAC1E,MAAM,SAAS,GAAG,MAAM;aACrB,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;aACtB,OAAO,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;aACjD,OAAO,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,GAAG,SAAS,uBAAuB,YAAY,EAAE,CAAC;QAElE,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;QAE3D,uBAAuB;QACvB,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAClC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;gBAC1D,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;gBAChD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAElD,4BAA4B;QAC5B,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;QAElC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAE3C,2BAA2B;QAC3B,WAAW,CACT,WAAW,EACX;YACE,MAAM;YACN,WAAW,EAAE,MAAM,CAAC,KAAK;YACzB,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,IAAI;YACvC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,EACD,IAAI,CACL,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,mCAAmC,WAAW,EAAE,CAAC,CAAC;QAE9D,kCAAkC;QAClC,IAAI,kBAAkB,EAAE,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;YAC5C,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,iDAAiD,CAAC,CAAC;YAEvF,IAAI,YAAY,EAAE,CAAC;gBACjB,+BAA+B,CAAC,WAAW,CAAC,CAAC;gBAC7C,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;gBAC/C,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;YAChF,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;gBACzB,UAAU,EAAE;oBACV,UAAU,EAAE;wBACV,OAAO,EAAE,KAAK;wBACd,IAAI,EAAE,CAAC,wBAAwB,CAAC;qBACjC;iBACF;aACF,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACf,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;IACrE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACnF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAC1B,IAAY;IAEZ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC,CAAC;QAChE,CAAC,EAAE,eAAe,CAAC,CAAC;QAEpB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;YAClD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,oBAAoB,IAAI,EAAE,CAAC,CAAC;YAE/D,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;gBACjC,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC5C,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBACxD,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACpD,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAE5C,IAAI,KAAK,EAAE,CAAC;oBACV,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;oBACpD,GAAG,CAAC,GAAG,CAAC;;;;qBAIG,KAAK;;;;WAIf,CAAC,CAAC;oBACH,YAAY,CAAC,OAAO,CAAC,CAAC;oBACtB,MAAM,CAAC,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;oBACzB,OAAO;gBACT,CAAC;gBAED,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;oBACzB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;oBACpD,GAAG,CAAC,GAAG,CAAC;;;;;;;WAOP,CAAC,CAAC;oBACH,YAAY,CAAC,OAAO,CAAC,CAAC;oBACtB,MAAM,CAAC,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC;oBAClD,OAAO;gBACT,CAAC;gBAED,WAAW;gBACX,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;gBACpD,GAAG,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAgGP,CAAC,CAAC;gBAEH,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC;oBACN,KAAK;oBACL,WAAW,EAAE,WAAW,IAAI,IAAI;oBAChC,SAAS;iBACV,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACnB,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACvB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACzB,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE;YACpC,OAAO,CAAC,GAAG,CAAC,mDAAmD,IAAI,EAAE,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAQnE,wBAAgB,YAAY;;;;;;;;;;;;;;;;;;6CAsI3B"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAQnE,wBAAgB,YAAY;;;;;;;;;;;;;;;;;;6CAkJ3B"}
package/dist/server.js CHANGED
@@ -42,6 +42,10 @@ export function createServer() {
42
42
  tools.listTagsTool,
43
43
  tools.listWorkflowsTool,
44
44
  tools.getFileTool,
45
+ tools.getAgentTool,
46
+ tools.getSkillTool,
47
+ tools.getWorkflowTool,
48
+ tools.getContextLibraryTool,
45
49
  tools.searchDocumentationTool,
46
50
  tools.searchByTagsTool,
47
51
  tools.loadWorkflowTool,
@@ -89,6 +93,14 @@ export function createServer() {
89
93
  return await tools.listWorkflows(auth, args || {});
90
94
  case 'get_file':
91
95
  return await tools.getFile(auth, args);
96
+ case 'get_agent':
97
+ return await tools.getAgent(auth, args);
98
+ case 'get_skill':
99
+ return await tools.getSkill(auth, args);
100
+ case 'get_workflow':
101
+ return await tools.getWorkflow(auth, args);
102
+ case 'get_context_library':
103
+ return await tools.getContextLibrary(auth, args);
92
104
  case 'search_documentation':
93
105
  return await tools.searchDocumentation(auth, args);
94
106
  case 'search_by_tags':
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ import type { AuthContext } from '../types.js';
3
+ export declare const getAgentTool: Tool;
4
+ export declare function getAgent(_auth: AuthContext, args: any): Promise<{
5
+ content: {
6
+ type: string;
7
+ text: string;
8
+ }[];
9
+ }>;
10
+ //# sourceMappingURL=get-agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-agent.d.ts","sourceRoot":"","sources":["../../src/tools/get-agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C,eAAO,MAAM,YAAY,EAAE,IAkB1B,CAAC;AAEF,wBAAsB,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG;;;;;GAiE3D"}
@@ -0,0 +1,71 @@
1
+ import { ContextiumApiClient } from '../api-client.js';
2
+ import { getCurrentProfile } from '../cli/credentials.js';
3
+ export const getAgentTool = {
4
+ name: 'get_agent',
5
+ description: 'Get detailed information about a specific agent including system prompt, persona, configuration, and associated files. Returns complete agent context for use in LLM workflows.',
6
+ inputSchema: {
7
+ type: 'object',
8
+ properties: {
9
+ agentId: {
10
+ type: 'string',
11
+ description: 'Agent ID to retrieve',
12
+ },
13
+ workspaceId: {
14
+ type: 'string',
15
+ description: 'Optional: workspace ID (uses default if not specified)',
16
+ },
17
+ },
18
+ required: ['agentId'],
19
+ },
20
+ };
21
+ export async function getAgent(_auth, args) {
22
+ const { agentId, workspaceId } = args || {};
23
+ if (!agentId) {
24
+ throw new Error('agentId is required');
25
+ }
26
+ const profile = getCurrentProfile();
27
+ if (!profile || !profile.accessToken) {
28
+ throw new Error('Not authenticated');
29
+ }
30
+ const client = new ContextiumApiClient(profile.apiUrl || 'https://api.contextium.io/api/v1', profile.accessToken);
31
+ // Determine workspace ID
32
+ let targetWorkspaceId = workspaceId;
33
+ if (!targetWorkspaceId) {
34
+ const workspacesResponse = await client.get('/workspaces');
35
+ const workspaces = workspacesResponse.data || [];
36
+ if (workspaces.length === 0) {
37
+ throw new Error('No workspaces found');
38
+ }
39
+ targetWorkspaceId = workspaces[0].id;
40
+ }
41
+ // Get agent details
42
+ const response = await client.get(`/workspaces/${targetWorkspaceId}/agents/${agentId}`);
43
+ const agent = response.data;
44
+ // Format the agent data
45
+ const formattedAgent = {
46
+ id: agent.id,
47
+ name: agent.name,
48
+ description: agent.description || null,
49
+ systemPrompt: agent.systemPrompt || null,
50
+ persona: agent.persona || null,
51
+ configuration: {
52
+ model: agent.model || null,
53
+ temperature: agent.temperature || null,
54
+ maxTokens: agent.maxTokens || null,
55
+ },
56
+ skills: agent.skills || [],
57
+ fileCount: agent.fileCount || 0,
58
+ workspaceId: agent.workspaceId,
59
+ createdAt: agent.createdAt,
60
+ updatedAt: agent.updatedAt,
61
+ };
62
+ return {
63
+ content: [
64
+ {
65
+ type: 'text',
66
+ text: JSON.stringify(formattedAgent, null, 2),
67
+ },
68
+ ],
69
+ };
70
+ }
71
+ //# sourceMappingURL=get-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-agent.js","sourceRoot":"","sources":["../../src/tools/get-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ import type { AuthContext } from '../types.js';
3
+ export declare const getContextLibraryTool: Tool;
4
+ export declare function getContextLibrary(auth: AuthContext, args: any): Promise<{
5
+ content: {
6
+ type: string;
7
+ text: string;
8
+ }[];
9
+ isError: boolean;
10
+ } | {
11
+ content: {
12
+ type: string;
13
+ text: string;
14
+ }[];
15
+ isError?: never;
16
+ }>;
17
+ //# sourceMappingURL=get-context-library.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-context-library.d.ts","sourceRoot":"","sources":["../../src/tools/get-context-library.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,eAAO,MAAM,qBAAqB,EAAE,IAkBnC,CAAC;AAEF,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG;;;;;;;;;;;;GAsGnE"}
@@ -0,0 +1,113 @@
1
+ import { getApiClient } from '../api-client.js';
2
+ export const getContextLibraryTool = {
3
+ name: 'get_context_library',
4
+ description: 'Get detailed information about a specific context library (project) including metadata, file structure, and statistics. Context libraries are collections of documentation and knowledge files.',
5
+ inputSchema: {
6
+ type: 'object',
7
+ properties: {
8
+ libraryId: {
9
+ type: 'string',
10
+ description: 'Context library ID (project ID) to retrieve',
11
+ },
12
+ workspaceId: {
13
+ type: 'string',
14
+ description: 'Optional: workspace ID (uses default if not specified)',
15
+ },
16
+ },
17
+ required: ['libraryId'],
18
+ },
19
+ };
20
+ export async function getContextLibrary(auth, args) {
21
+ const { libraryId, workspaceId } = args || {};
22
+ if (!libraryId) {
23
+ return {
24
+ content: [
25
+ {
26
+ type: 'text',
27
+ text: 'libraryId is required',
28
+ },
29
+ ],
30
+ isError: true,
31
+ };
32
+ }
33
+ const apiClient = getApiClient();
34
+ const targetWorkspaceId = workspaceId || auth.workspaceId;
35
+ try {
36
+ // Get library details (context libraries are regular projects or system projects with systemType='contextLibraries')
37
+ const library = await apiClient.getProject(targetWorkspaceId, libraryId);
38
+ // Get files associated with the library
39
+ const files = await apiClient.getFiles(libraryId);
40
+ // Group files by folder
41
+ const filesByFolder = {
42
+ root: [],
43
+ };
44
+ files.forEach((file) => {
45
+ const folder = file.folderId || 'root';
46
+ if (!filesByFolder[folder]) {
47
+ filesByFolder[folder] = [];
48
+ }
49
+ filesByFolder[folder].push(file);
50
+ });
51
+ // Format the library data
52
+ const formattedLibrary = {
53
+ id: library.id,
54
+ name: library.name,
55
+ slug: library.slug,
56
+ description: library.description || null,
57
+ isSystem: library.isSystem || false,
58
+ systemType: library.systemType || null,
59
+ fileCount: library.fileCount || files.length,
60
+ files: files.map((f) => ({
61
+ id: f.id,
62
+ title: f.title,
63
+ path: f.path,
64
+ folderId: f.folderId,
65
+ size: f.size,
66
+ status: f.status,
67
+ updatedAt: f.updatedAt,
68
+ })),
69
+ filesByFolder,
70
+ workspaceId: library.workspaceId,
71
+ createdAt: library.createdAt,
72
+ updatedAt: library.updatedAt,
73
+ };
74
+ let output = `📚 Context Library: ${library.name}\n\n`;
75
+ output += `ID: ${library.id}\n`;
76
+ output += `Slug: ${library.slug}\n`;
77
+ if (library.description) {
78
+ output += `Description: ${library.description}\n`;
79
+ }
80
+ output += `Type: ${library.isSystem ? `System (${library.systemType})` : 'Regular project'}\n`;
81
+ output += `\nFiles (${files.length}):\n`;
82
+ // Show files grouped by folder
83
+ Object.entries(filesByFolder).forEach(([folderId, folderFiles]) => {
84
+ const folderName = folderId === 'root' ? 'Root' : folderId;
85
+ output += `\n ${folderName}:\n`;
86
+ folderFiles.forEach((file) => {
87
+ output += ` - ${file.title} (${file.path})\n`;
88
+ });
89
+ });
90
+ output += `\n💡 Use list_files or get_project_structure for detailed file hierarchy.\n`;
91
+ output += `\nFull Details:\n${JSON.stringify(formattedLibrary, null, 2)}`;
92
+ return {
93
+ content: [
94
+ {
95
+ type: 'text',
96
+ text: output,
97
+ },
98
+ ],
99
+ };
100
+ }
101
+ catch (error) {
102
+ return {
103
+ content: [
104
+ {
105
+ type: 'text',
106
+ text: `Error getting context library: ${error instanceof Error ? error.message : 'Unknown error'}`,
107
+ },
108
+ ],
109
+ isError: true,
110
+ };
111
+ }
112
+ }
113
+ //# sourceMappingURL=get-context-library.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-context-library.js","sourceRoot":"","sources":["../../src/tools/get-context-library.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ import type { AuthContext } from '../types.js';
3
+ export declare const getSkillTool: Tool;
4
+ export declare function getSkill(auth: AuthContext, args: any): Promise<{
5
+ content: {
6
+ type: string;
7
+ text: string;
8
+ }[];
9
+ isError: boolean;
10
+ } | {
11
+ content: {
12
+ type: string;
13
+ text: string;
14
+ }[];
15
+ isError?: never;
16
+ }>;
17
+ //# sourceMappingURL=get-skill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-skill.d.ts","sourceRoot":"","sources":["../../src/tools/get-skill.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,eAAO,MAAM,YAAY,EAAE,IAkB1B,CAAC;AAEF,wBAAsB,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG;;;;;;;;;;;;GA2F1D"}
@@ -0,0 +1,104 @@
1
+ import { getApiClient } from '../api-client.js';
2
+ export const getSkillTool = {
3
+ name: 'get_skill',
4
+ description: 'Get detailed information about a specific skill including code, configuration, and associated files. Returns complete skill context including full implementation code.',
5
+ inputSchema: {
6
+ type: 'object',
7
+ properties: {
8
+ skillId: {
9
+ type: 'string',
10
+ description: 'Skill ID (project ID) to retrieve',
11
+ },
12
+ workspaceId: {
13
+ type: 'string',
14
+ description: 'Optional: workspace ID (uses default if not specified)',
15
+ },
16
+ },
17
+ required: ['skillId'],
18
+ },
19
+ };
20
+ export async function getSkill(auth, args) {
21
+ const { skillId, workspaceId } = args || {};
22
+ if (!skillId) {
23
+ return {
24
+ content: [
25
+ {
26
+ type: 'text',
27
+ text: 'skillId is required',
28
+ },
29
+ ],
30
+ isError: true,
31
+ };
32
+ }
33
+ const apiClient = getApiClient();
34
+ const targetWorkspaceId = workspaceId || auth.workspaceId;
35
+ try {
36
+ // Get skill details (skills are projects with systemType='skills')
37
+ const skill = await apiClient.getProject(targetWorkspaceId, skillId);
38
+ // Verify it's actually a skill
39
+ if (!skill.isSystem || skill.systemType !== 'skills') {
40
+ return {
41
+ content: [
42
+ {
43
+ type: 'text',
44
+ text: `Project ${skillId} is not a skill. It's a ${skill.isSystem ? skill.systemType : 'regular project'}.`,
45
+ },
46
+ ],
47
+ isError: true,
48
+ };
49
+ }
50
+ // Get files associated with the skill
51
+ const files = await apiClient.getFiles(skillId);
52
+ // Format the skill data
53
+ const formattedSkill = {
54
+ id: skill.id,
55
+ name: skill.name,
56
+ slug: skill.slug,
57
+ description: skill.description || null,
58
+ fileCount: skill.fileCount || files.length,
59
+ files: files.map((f) => ({
60
+ id: f.id,
61
+ title: f.title,
62
+ path: f.path,
63
+ size: f.size,
64
+ status: f.status,
65
+ updatedAt: f.updatedAt,
66
+ })),
67
+ workspaceId: skill.workspaceId,
68
+ createdAt: skill.createdAt,
69
+ updatedAt: skill.updatedAt,
70
+ };
71
+ let output = `📦 Skill: ${skill.name}\n\n`;
72
+ output += `ID: ${skill.id}\n`;
73
+ output += `Slug: ${skill.slug}\n`;
74
+ if (skill.description) {
75
+ output += `Description: ${skill.description}\n`;
76
+ }
77
+ output += `\nFiles (${files.length}):\n`;
78
+ files.forEach((file, index) => {
79
+ output += `${index + 1}. ${file.title} (${file.path})\n`;
80
+ });
81
+ output += `\n💡 Use get_file with a file ID to view the skill code.\n`;
82
+ output += `\nFull Details:\n${JSON.stringify(formattedSkill, null, 2)}`;
83
+ return {
84
+ content: [
85
+ {
86
+ type: 'text',
87
+ text: output,
88
+ },
89
+ ],
90
+ };
91
+ }
92
+ catch (error) {
93
+ return {
94
+ content: [
95
+ {
96
+ type: 'text',
97
+ text: `Error getting skill: ${error instanceof Error ? error.message : 'Unknown error'}`,
98
+ },
99
+ ],
100
+ isError: true,
101
+ };
102
+ }
103
+ }
104
+ //# sourceMappingURL=get-skill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-skill.js","sourceRoot":"","sources":["../../src/tools/get-skill.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ import type { AuthContext } from '../types.js';
3
+ export declare const getWorkflowTool: Tool;
4
+ export declare function getWorkflow(_auth: AuthContext, args: any): Promise<{
5
+ content: {
6
+ type: string;
7
+ text: string;
8
+ }[];
9
+ }>;
10
+ //# sourceMappingURL=get-workflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-workflow.d.ts","sourceRoot":"","sources":["../../src/tools/get-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C,eAAO,MAAM,eAAe,EAAE,IAkB7B,CAAC;AAEF,wBAAsB,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG;;;;;GAuF9D"}
@@ -0,0 +1,93 @@
1
+ import { ContextiumApiClient } from '../api-client.js';
2
+ import { getCurrentProfile } from '../cli/credentials.js';
3
+ export const getWorkflowTool = {
4
+ name: 'get_workflow',
5
+ description: 'Get detailed information about a specific workflow including name, description, associated agents, tags, and metadata. Use load_workflow to get the complete workflow context with all resources (agents, skills, files).',
6
+ inputSchema: {
7
+ type: 'object',
8
+ properties: {
9
+ workflowId: {
10
+ type: 'string',
11
+ description: 'Workflow ID to retrieve',
12
+ },
13
+ workspaceId: {
14
+ type: 'string',
15
+ description: 'Optional: workspace ID (uses default if not specified)',
16
+ },
17
+ },
18
+ required: ['workflowId'],
19
+ },
20
+ };
21
+ export async function getWorkflow(_auth, args) {
22
+ const { workflowId, workspaceId } = args || {};
23
+ if (!workflowId) {
24
+ throw new Error('workflowId is required');
25
+ }
26
+ const profile = getCurrentProfile();
27
+ if (!profile || !profile.accessToken) {
28
+ throw new Error('Not authenticated');
29
+ }
30
+ const client = new ContextiumApiClient(profile.apiUrl || 'https://api.contextium.io/api/v1', profile.accessToken);
31
+ // Determine workspace ID
32
+ let targetWorkspaceId = workspaceId;
33
+ if (!targetWorkspaceId) {
34
+ const workspacesResponse = await client.get('/workspaces');
35
+ const workspaces = workspacesResponse.data || [];
36
+ if (workspaces.length === 0) {
37
+ throw new Error('No workspaces found');
38
+ }
39
+ targetWorkspaceId = workspaces[0].id;
40
+ }
41
+ // Get workflow details
42
+ const response = await client.get(`/workspaces/${targetWorkspaceId}/workflows/${workflowId}`);
43
+ const workflow = response.data;
44
+ // Format the workflow data
45
+ const formattedWorkflow = {
46
+ id: workflow.id,
47
+ name: workflow.name,
48
+ description: workflow.description || null,
49
+ agentIds: workflow.agentIds || [],
50
+ projectId: workflow.projectId || null,
51
+ tags: workflow.tags || [],
52
+ workspaceId: workflow.workspaceId,
53
+ createdAt: workflow.createdAt,
54
+ updatedAt: workflow.updatedAt,
55
+ };
56
+ let output = `🔄 Workflow: ${workflow.name}\n\n`;
57
+ output += `ID: ${workflow.id}\n`;
58
+ if (workflow.description) {
59
+ output += `Description: ${workflow.description}\n`;
60
+ }
61
+ output += `\nAgents (${workflow.agentIds?.length || 0}):\n`;
62
+ if (workflow.agentIds && workflow.agentIds.length > 0) {
63
+ workflow.agentIds.forEach((agentId, index) => {
64
+ output += `${index + 1}. ${agentId}\n`;
65
+ });
66
+ }
67
+ else {
68
+ output += ` No agents assigned\n`;
69
+ }
70
+ output += `\nTags (${workflow.tags?.length || 0}):\n`;
71
+ if (workflow.tags && workflow.tags.length > 0) {
72
+ workflow.tags.forEach((tag, index) => {
73
+ output += `${index + 1}. ${tag.value}`;
74
+ if (tag.color)
75
+ output += ` (${tag.color})`;
76
+ output += '\n';
77
+ });
78
+ }
79
+ else {
80
+ output += ` No tags assigned\n`;
81
+ }
82
+ output += `\n💡 Use load_workflow to get all resources (agents, skills, files) for this workflow.\n`;
83
+ output += `\nFull Details:\n${JSON.stringify(formattedWorkflow, null, 2)}`;
84
+ return {
85
+ content: [
86
+ {
87
+ type: 'text',
88
+ text: output,
89
+ },
90
+ ],
91
+ };
92
+ }
93
+ //# sourceMappingURL=get-workflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-workflow.js","sourceRoot":"","sources":["../../src/tools/get-workflow.ts"],"names":[],"mappings":"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"}
@@ -17,4 +17,8 @@ export * from './search-by-tags.js';
17
17
  export * from './list-tags.js';
18
18
  export * from './list-workflows.js';
19
19
  export * from './load-workflow.js';
20
+ export * from './get-agent.js';
21
+ export * from './get-skill.js';
22
+ export * from './get-workflow.js';
23
+ export * from './get-context-library.js';
20
24
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC"}
@@ -17,4 +17,8 @@ export * from './search-by-tags.js';
17
17
  export * from './list-tags.js';
18
18
  export * from './list-workflows.js';
19
19
  export * from './load-workflow.js';
20
+ export * from './get-agent.js';
21
+ export * from './get-skill.js';
22
+ export * from './get-workflow.js';
23
+ export * from './get-context-library.js';
20
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC"}
@@ -13,6 +13,11 @@ export declare const loadWorkflowTool: {
13
13
  type: string;
14
14
  description: string;
15
15
  };
16
+ includeFileContent: {
17
+ type: string;
18
+ description: string;
19
+ default: boolean;
20
+ };
16
21
  };
17
22
  required: string[];
18
23
  };
@@ -1 +1 @@
1
- {"version":3,"file":"load-workflow.d.ts","sourceRoot":"","sources":["../../src/tools/load-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;CAkB5B,CAAC;AAEF,wBAAsB,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG;;;;;GAgF/D"}
1
+ {"version":3,"file":"load-workflow.d.ts","sourceRoot":"","sources":["../../src/tools/load-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;CAuB5B,CAAC;AAEF,wBAAsB,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG;;;;;GAyK/D"}
@@ -2,7 +2,7 @@ import { ContextiumApiClient } from '../api-client.js';
2
2
  import { getCurrentProfile } from '../cli/credentials.js';
3
3
  export const loadWorkflowTool = {
4
4
  name: 'load_workflow',
5
- description: 'Load all files associated with a workflow. Returns all files that have ALL of the workflow\'s tags (AND logic), grouped by context library. Use this to quickly load everything you need for a specific task or context.',
5
+ description: 'Load all resources associated with a workflow including agents, skills, files, and context libraries. Returns the complete workflow context with all agents (full configuration and system prompts), skills (full code), files (from tags and assigned projects), and metadata. This provides everything needed to execute or understand the workflow in an LLM.',
6
6
  inputSchema: {
7
7
  type: 'object',
8
8
  properties: {
@@ -14,12 +14,17 @@ export const loadWorkflowTool = {
14
14
  type: 'string',
15
15
  description: 'Optional: workspace ID (uses default if not specified)',
16
16
  },
17
+ includeFileContent: {
18
+ type: 'boolean',
19
+ description: 'Optional: include full file content (default: false, only returns file metadata)',
20
+ default: false,
21
+ },
17
22
  },
18
23
  required: ['workflowId'],
19
24
  },
20
25
  };
21
26
  export async function loadWorkflow(_auth, args) {
22
- const { workflowId, workspaceId } = args || {};
27
+ const { workflowId, workspaceId, includeFileContent = false } = args || {};
23
28
  if (!workflowId) {
24
29
  throw new Error('workflowId is required');
25
30
  }
@@ -42,44 +47,130 @@ export async function loadWorkflow(_auth, args) {
42
47
  // Load workflow and its resources
43
48
  const response = await client.get(`/workspaces/${targetWorkspaceId}/workflows/${workflowId}/load`);
44
49
  const result = response.data;
45
- const { workflow, files, tagDetails } = result;
50
+ const { workflow, files, agents, skills, contextLibraries, tagDetails } = result;
46
51
  // Format tag details
47
- const formattedTags = tagDetails.map((t) => ({
52
+ const formattedTags = (tagDetails || []).map((t) => ({
48
53
  id: t.id,
49
54
  value: t.value,
50
55
  color: t.color,
51
56
  }));
52
- // Group files by context library
57
+ // Format agents
58
+ const formattedAgents = (agents || []).map((agent) => ({
59
+ id: agent.id,
60
+ name: agent.name,
61
+ description: agent.description,
62
+ fileCount: agent.fileCount,
63
+ }));
64
+ // Format skills
65
+ const formattedSkills = (skills || []).map((skill) => ({
66
+ id: skill.id,
67
+ name: skill.name,
68
+ description: skill.description,
69
+ fileCount: skill.fileCount,
70
+ }));
71
+ // Format context libraries
72
+ const formattedLibraries = (contextLibraries || []).map((lib) => ({
73
+ id: lib.id,
74
+ name: lib.name,
75
+ description: lib.description,
76
+ fileCount: lib.fileCount,
77
+ }));
78
+ // Group files by project type
53
79
  const filesByProject = {};
80
+ const filesByType = {
81
+ agents: [],
82
+ skills: [],
83
+ contextLibraries: [],
84
+ other: [],
85
+ };
54
86
  files.forEach((file) => {
55
87
  const projectId = file.projectId || 'unknown';
56
88
  if (!filesByProject[projectId]) {
57
89
  filesByProject[projectId] = [];
58
90
  }
59
- filesByProject[projectId].push({
91
+ const fileData = {
60
92
  id: file.id,
61
93
  title: file.title,
62
94
  path: file.path,
95
+ projectId: file.projectId,
63
96
  size: file.size,
64
97
  status: file.status,
65
98
  updatedAt: file.updatedAt,
66
- });
99
+ };
100
+ filesByProject[projectId].push(fileData);
101
+ // Categorize by type
102
+ const isAgent = agents.some((a) => a.id === projectId);
103
+ const isSkill = skills.some((s) => s.id === projectId);
104
+ const isLibrary = contextLibraries.some((l) => l.id === projectId);
105
+ if (isAgent) {
106
+ filesByType.agents.push(fileData);
107
+ }
108
+ else if (isSkill) {
109
+ filesByType.skills.push(fileData);
110
+ }
111
+ else if (isLibrary) {
112
+ filesByType.contextLibraries.push(fileData);
113
+ }
114
+ else {
115
+ filesByType.other.push(fileData);
116
+ }
67
117
  });
118
+ // Optionally load full file content
119
+ let filesWithContent = [];
120
+ if (includeFileContent && files.length > 0) {
121
+ // Note: This could be slow for large workflows
122
+ // Consider adding pagination or limits
123
+ for (const file of files) {
124
+ try {
125
+ const fileResponse = await client.get(`/files/${file.id}`);
126
+ filesWithContent.push({
127
+ id: file.id,
128
+ title: file.title,
129
+ path: file.path,
130
+ content: fileResponse.data.content,
131
+ projectId: file.projectId,
132
+ });
133
+ }
134
+ catch (error) {
135
+ // Skip files that can't be loaded
136
+ console.error(`Failed to load file ${file.id}:`, error);
137
+ }
138
+ }
139
+ }
140
+ const summary = {
141
+ message: `Loaded workflow "${workflow.name}"`,
142
+ resources: {
143
+ agents: formattedAgents.length,
144
+ skills: formattedSkills.length,
145
+ contextLibraries: formattedLibraries.length,
146
+ files: files.length,
147
+ tags: formattedTags.length,
148
+ },
149
+ workflow: {
150
+ id: workflow.id,
151
+ name: workflow.name,
152
+ description: workflow.description || null,
153
+ agentIds: workflow.agentIds || [],
154
+ projectId: workflow.projectId,
155
+ tags: formattedTags,
156
+ createdAt: workflow.createdAt,
157
+ updatedAt: workflow.updatedAt,
158
+ },
159
+ agents: formattedAgents,
160
+ skills: formattedSkills,
161
+ contextLibraries: formattedLibraries,
162
+ files: filesByType,
163
+ filesByProject,
164
+ };
165
+ // Add file content if requested
166
+ if (includeFileContent) {
167
+ summary.filesWithContent = filesWithContent;
168
+ }
68
169
  return {
69
170
  content: [
70
171
  {
71
172
  type: 'text',
72
- text: JSON.stringify({
73
- message: `Loaded workflow "${workflow.name}" with ${files.length} file(s)`,
74
- workflow: {
75
- id: workflow.id,
76
- name: workflow.name,
77
- description: workflow.description || null,
78
- tags: formattedTags,
79
- },
80
- fileCount: files.length,
81
- filesByProject,
82
- }, null, 2),
173
+ text: JSON.stringify(summary, null, 2),
83
174
  },
84
175
  ],
85
176
  };
@@ -1 +1 @@
1
- {"version":3,"file":"load-workflow.js","sourceRoot":"","sources":["../../src/tools/load-workflow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"load-workflow.js","sourceRoot":"","sources":["../../src/tools/load-workflow.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contextium/mcp-server",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Central file system for team SOPs, coding standards, and AI constraints. AI follows your guidelines automatically.",
5
5
  "keywords": [
6
6
  "mcp",