@aloth/olcli 0.15.0 → 0.15.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
package/dist/mcp.d.ts CHANGED
@@ -9,6 +9,9 @@
9
9
  *
10
10
  * Auth: reads session cookie from OVERLEAF_SESSION env var or .olauth file in cwd.
11
11
  *
12
+ * Tools that change a project ask the user to confirm first (MCP
13
+ * elicitation); see mcp-server.ts and mcp-confirm.ts.
14
+ *
12
15
  * Start:
13
16
  * npx @aloth/olcli-mcp
14
17
  * node dist/mcp.js
package/dist/mcp.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;GAcG"}
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;GAiBG"}
package/dist/mcp.js CHANGED
@@ -9,24 +9,19 @@
9
9
  *
10
10
  * Auth: reads session cookie from OVERLEAF_SESSION env var or .olauth file in cwd.
11
11
  *
12
+ * Tools that change a project ask the user to confirm first (MCP
13
+ * elicitation); see mcp-server.ts and mcp-confirm.ts.
14
+ *
12
15
  * Start:
13
16
  * npx @aloth/olcli-mcp
14
17
  * node dist/mcp.js
15
18
  * npm run mcp # (from repo root)
16
19
  */
17
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
18
20
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
19
- import { z } from 'zod/v3';
20
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
21
- import { readFile } from 'node:fs/promises';
22
- import { join, resolve } from 'node:path';
23
- import AdmZip from 'adm-zip';
21
+ import { existsSync, readFileSync } from 'node:fs';
22
+ import { join } from 'node:path';
24
23
  import { OverleafClient } from './client.js';
25
- import { resolveRemotePath, resolveWithin, normalizeRemotePath } from './paths.js';
26
- import { planProjectRenames } from './rename-plan.js';
27
- import { scanLocalFiles } from './scan.js';
28
- import { compareTrees, filterRemoteTree, renderFileDiff } from './diff.js';
29
- import { loadIgnore } from './ignore.js';
24
+ import { createOlcliMcpServer } from './mcp-server.js';
30
25
  import { getSessionCookie, getBaseUrl, getSessionCookieName, setSessionCookie, setSessionCookieName, getPasswordCredentials, } from './config.js';
31
26
  // ---------------------------------------------------------------------------
32
27
  // Auth helpers
@@ -85,464 +80,9 @@ async function getClient() {
85
80
  return _client;
86
81
  }
87
82
  // ---------------------------------------------------------------------------
88
- // MCP server setup
89
- // ---------------------------------------------------------------------------
90
- const server = new McpServer({
91
- name: 'olcli',
92
- version: '0.8.0',
93
- }, {
94
- capabilities: { tools: {} },
95
- });
96
- // ---------------------------------------------------------------------------
97
- // Helper: wrap async tool handlers with consistent error formatting
98
- // ---------------------------------------------------------------------------
99
- function wrapTool(fn) {
100
- return fn().then((result) => ({
101
- content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
102
- }), (err) => ({
103
- content: [{ type: 'text', text: `Error: ${err instanceof Error ? err.message : String(err)}` }],
104
- isError: true,
105
- }));
106
- }
107
- // ---------------------------------------------------------------------------
108
- // Tool: list_projects
109
- // ---------------------------------------------------------------------------
110
- server.tool('list_projects', 'List all Overleaf projects in the account. Returns project IDs, names, and metadata.', async () => wrapTool(async () => {
111
- const client = await getClient();
112
- return client.listProjects();
113
- }));
114
- // ---------------------------------------------------------------------------
115
- // Tool: get_project_info
116
- // ---------------------------------------------------------------------------
117
- server.tool('get_project_info', 'Get detailed information about an Overleaf project including its file tree (folders, docs, and files).', {
118
- project_id: z.string().describe('The Overleaf project ID (24-char hex string)'),
119
- }, async ({ project_id }) => wrapTool(async () => {
120
- const client = await getClient();
121
- return client.getProjectInfo(project_id);
122
- }));
123
- // ---------------------------------------------------------------------------
124
- // Tool: pull_project
125
- // ---------------------------------------------------------------------------
126
- server.tool('pull_project', 'Download and extract an Overleaf project as a zip to a local directory. Creates the directory if it does not exist.', {
127
- project_id: z.string().describe('The Overleaf project ID'),
128
- output_dir: z.string().describe('Local directory path to extract files into'),
129
- overwrite: z
130
- .boolean()
131
- .optional()
132
- .default(false)
133
- .describe('Overwrite existing files (default: false)'),
134
- }, async ({ project_id, output_dir, overwrite }) => wrapTool(async () => {
135
- const client = await getClient();
136
- const zipBuf = await client.downloadProject(project_id);
137
- const outDir = resolve(output_dir);
138
- mkdirSync(outDir, { recursive: true });
139
- const zip = new AdmZip(zipBuf);
140
- const entries = zip.getEntries();
141
- const extracted = [];
142
- const skipped = [];
143
- for (const entry of entries) {
144
- if (entry.isDirectory)
145
- continue;
146
- const destPath = join(outDir, entry.entryName);
147
- if (!overwrite && existsSync(destPath)) {
148
- skipped.push(entry.entryName);
149
- continue;
150
- }
151
- // Ensure parent dir exists
152
- mkdirSync(join(outDir, entry.entryName.split('/').slice(0, -1).join('/')), { recursive: true });
153
- writeFileSync(destPath, entry.getData());
154
- extracted.push(entry.entryName);
155
- }
156
- return {
157
- output_dir: outDir,
158
- extracted_count: extracted.length,
159
- skipped_count: skipped.length,
160
- extracted,
161
- skipped,
162
- };
163
- }));
164
- // ---------------------------------------------------------------------------
165
- // Tool: push_file
166
- // ---------------------------------------------------------------------------
167
- server.tool('push_file', 'Upload a local file to an Overleaf project. The remote path is inferred from the file_path argument.', {
168
- project_id: z.string().describe('The Overleaf project ID'),
169
- local_path: z.string().describe('Absolute or relative path of the local file to upload'),
170
- remote_path: z
171
- .string()
172
- .optional()
173
- .describe('Target path within the project. Defaults to the basename for absolute local paths, or the relative path as given (e.g. "figures/diagram.png")'),
174
- }, async ({ project_id, local_path, remote_path }) => wrapTool(async () => {
175
- const client = await getClient();
176
- const absPath = resolve(local_path);
177
- const content = await readFile(absPath);
178
- const remoteName = resolveRemotePath(local_path, remote_path);
179
- return client.uploadFile(project_id, null, remoteName, content);
180
- }));
181
- // ---------------------------------------------------------------------------
182
- // Tool: compile
183
- // ---------------------------------------------------------------------------
184
- server.tool('compile', 'Compile an Overleaf project using the remote LaTeX compiler. Returns the PDF URL and any log messages.', {
185
- project_id: z.string().describe('The Overleaf project ID'),
186
- resource_path: z
187
- .string()
188
- .optional()
189
- .describe('Path of a .tex file in the project to compile as the root document. E.g. "paper.tex", "folder/test.tex"'),
190
- }, async ({ project_id, resource_path }) => wrapTool(async () => {
191
- const client = await getClient();
192
- return client.compileProject(project_id, resource_path);
193
- }));
194
- // ---------------------------------------------------------------------------
195
- // Tool: download_pdf
196
- // ---------------------------------------------------------------------------
197
- server.tool('download_pdf', 'Compile an Overleaf project and download the resulting PDF to a local file.', {
198
- project_id: z.string().describe('The Overleaf project ID'),
199
- output_path: z.string().describe('Local file path where the PDF should be saved (e.g. output.pdf)'),
200
- resource_path: z
201
- .string()
202
- .optional()
203
- .describe('Path of a .tex file in the project to compile as the root document. E.g. "paper.tex", "folder/test.tex"'),
204
- }, async ({ project_id, output_path, resource_path }) => wrapTool(async () => {
205
- const client = await getClient();
206
- const pdfBuf = await client.downloadPdf(project_id, undefined, resource_path);
207
- const absPath = resolve(output_path);
208
- writeFileSync(absPath, pdfBuf);
209
- return {
210
- path: absPath,
211
- bytes: pdfBuf.length,
212
- };
213
- }));
214
- // ---------------------------------------------------------------------------
215
- // Tool: list_comments
216
- // ---------------------------------------------------------------------------
217
- server.tool('list_comments', 'List review comments on an Overleaf project. Supports filtering by status (all, open, resolved).', {
218
- project_id: z.string().describe('The Overleaf project ID'),
219
- status: z
220
- .enum(['all', 'open', 'resolved'])
221
- .optional()
222
- .default('all')
223
- .describe('Filter by comment status'),
224
- include_context: z
225
- .boolean()
226
- .optional()
227
- .default(false)
228
- .describe('Include surrounding text context for each comment'),
229
- include_changes: z
230
- .boolean()
231
- .optional()
232
- .default(false)
233
- .describe('Also return tracked changes (suggested insertions and deletions). The result then becomes { comments, changes }. Track changes is an Overleaf premium feature: only projects whose owner has a premium plan have them. An empty list in other projects is expected'),
234
- }, async ({ project_id, status, include_context, include_changes }) => wrapTool(async () => {
235
- const client = await getClient();
236
- const options = { status, contextLines: include_context ? 3 : 0 };
237
- if (include_changes) {
238
- return client.listReview(project_id, options);
239
- }
240
- return client.listComments(project_id, options);
241
- }));
242
- // ---------------------------------------------------------------------------
243
- // Tool: accept_tracked_changes
244
- // ---------------------------------------------------------------------------
245
- server.tool('accept_tracked_changes', 'Accept tracked changes (suggested edits) by id: the suggested text stays and the suggestion markers are removed. Nothing is sent if any id is unknown. Track changes is an Overleaf premium feature: only projects whose owner has a premium plan have them.', {
246
- project_id: z.string().describe('The Overleaf project ID'),
247
- change_ids: z.array(z.string()).min(1).describe('Tracked change ids (from list_comments with include_changes)'),
248
- }, async ({ project_id, change_ids }) => wrapTool(async () => {
249
- const client = await getClient();
250
- const accepted = await client.acceptTrackedChanges(project_id, change_ids);
251
- return { accepted };
252
- }));
253
- // ---------------------------------------------------------------------------
254
- // Tool: reject_tracked_changes
255
- // ---------------------------------------------------------------------------
256
- server.tool('reject_tracked_changes', 'Reject tracked changes by id: suggested insertions are removed, suggested deletions are restored. Returns a unified diff preview and writes nothing unless apply is true. Nothing is written if any id is unknown or a doc changed since the preview. Track changes is an Overleaf premium feature: only projects whose owner has a premium plan have them.', {
257
- project_id: z.string().describe('The Overleaf project ID'),
258
- change_ids: z.array(z.string()).min(1).describe('Tracked change ids (from list_comments with include_changes)'),
259
- apply: z
260
- .boolean()
261
- .optional()
262
- .default(false)
263
- .describe('Apply the rejection. Default false returns the preview only'),
264
- }, async ({ project_id, change_ids, apply }) => wrapTool(async () => {
265
- const client = await getClient();
266
- const plan = await client.planTrackedChangeRejection(project_id, change_ids);
267
- if (apply) {
268
- await client.rejectTrackedChanges(project_id, plan);
269
- }
270
- return {
271
- applied: apply,
272
- changes: plan.changes,
273
- diffs: plan.docs.map(doc => ({ path: doc.path, diff: doc.diff })),
274
- };
275
- }));
276
- // ---------------------------------------------------------------------------
277
- // Tool: get_entities
278
- // ---------------------------------------------------------------------------
279
- server.tool('get_entities', 'Get a flat list of all files and documents in an Overleaf project with their paths and types.', {
280
- project_id: z.string().describe('The Overleaf project ID'),
281
- }, async ({ project_id }) => wrapTool(async () => {
282
- const client = await getClient();
283
- return client.getEntities(project_id);
284
- }));
285
- // ---------------------------------------------------------------------------
286
- // Tool: download_file
287
- // ---------------------------------------------------------------------------
288
- server.tool('download_file', 'Download a single file from an Overleaf project by its path within the project.', {
289
- project_id: z.string().describe('The Overleaf project ID'),
290
- remote_path: z.string().describe('Path of the file within the project (e.g. main.tex or figures/fig1.pdf)'),
291
- output_path: z
292
- .string()
293
- .optional()
294
- .describe('Local path to save the file (default: basename of remote_path in cwd)'),
295
- }, async ({ project_id, remote_path, output_path }) => wrapTool(async () => {
296
- const client = await getClient();
297
- const fileBuf = await client.downloadByPath(project_id, remote_path);
298
- const destPath = resolve(output_path ?? remote_path.split('/').pop() ?? remote_path);
299
- writeFileSync(destPath, fileBuf);
300
- return {
301
- path: destPath,
302
- bytes: fileBuf.length,
303
- remote_path,
304
- };
305
- }));
306
- // ---------------------------------------------------------------------------
307
- // Tool: add_comment
308
- // ---------------------------------------------------------------------------
309
- server.tool('add_comment', 'Add a review comment to a specific location in an Overleaf project document.', {
310
- project_id: z.string().describe('The Overleaf project ID'),
311
- doc_path: z.string().describe('Path of the document within the project (e.g. main.tex)'),
312
- content: z.string().describe('The comment text'),
313
- position: z.number().int().nonnegative().optional().describe('Character offset in the document where the comment is anchored'),
314
- length: z.number().int().nonnegative().optional().describe('Length of the highlighted text span (0 for a point comment)'),
315
- selected_text: z.string().optional().describe('The text being commented on (optional, used for context)'),
316
- line: z.number().int().positive().optional().describe('Line number in the document (1-based, alternative to position)'),
317
- column: z.number().int().nonnegative().optional().describe('Column number in the document (0-based, alternative to position)'),
318
- }, async ({ project_id, doc_path, content, position, length, selected_text, line, column }) => wrapTool(async () => {
319
- const client = await getClient();
320
- return client.addComment(project_id, {
321
- filePath: doc_path,
322
- content,
323
- position,
324
- length,
325
- selectedText: selected_text,
326
- line,
327
- column,
328
- });
329
- }));
330
- // ---------------------------------------------------------------------------
331
- // Tool: reply_to_comment
332
- // ---------------------------------------------------------------------------
333
- server.tool('reply_to_comment', 'Add a reply to an existing comment thread on an Overleaf project.', {
334
- project_id: z.string().describe('The Overleaf project ID'),
335
- thread_id: z.string().describe('The comment thread ID (from list_comments)'),
336
- content: z.string().describe('The reply message text'),
337
- }, async ({ project_id, thread_id, content }) => wrapTool(async () => {
338
- const client = await getClient();
339
- const message = await client.postCommentMessage(project_id, thread_id, content);
340
- return { replied: true, thread_id, message };
341
- }));
342
- // ---------------------------------------------------------------------------
343
- // Tool: resolve_comment
344
- // ---------------------------------------------------------------------------
345
- server.tool('resolve_comment', 'Mark a review comment thread as resolved.', {
346
- project_id: z.string().describe('The Overleaf project ID'),
347
- thread_id: z.string().describe('The comment thread ID (from list_comments)'),
348
- }, async ({ project_id, thread_id }) => wrapTool(async () => {
349
- const client = await getClient();
350
- return client.resolveComment(project_id, thread_id);
351
- }));
352
- // ---------------------------------------------------------------------------
353
- // Tool: delete_entity
354
- // ---------------------------------------------------------------------------
355
- server.tool('delete_entity', 'Delete a file or document from an Overleaf project by its remote path.', {
356
- project_id: z.string().describe('The Overleaf project ID'),
357
- remote_path: z.string().describe('Path of the file/document to delete within the project'),
358
- }, async ({ project_id, remote_path }) => wrapTool(async () => {
359
- const client = await getClient();
360
- await client.deleteByPath(project_id, remote_path);
361
- return { deleted: remote_path };
362
- }));
363
- // ---------------------------------------------------------------------------
364
- // Tool: rename_entity
365
- // ---------------------------------------------------------------------------
366
- server.tool('rename_entity', 'Rename a file or document within an Overleaf project.', {
367
- project_id: z.string().describe('The Overleaf project ID'),
368
- remote_path: z.string().describe('Current path of the file/document within the project'),
369
- new_name: z.string().describe('New filename (basename only, not a full path)'),
370
- }, async ({ project_id, remote_path, new_name }) => wrapTool(async () => {
371
- const client = await getClient();
372
- await client.renameByPath(project_id, remote_path, new_name);
373
- return { old_path: remote_path, new_name };
374
- }));
375
- // ---------------------------------------------------------------------------
376
- // Tool: compile_with_outputs
377
- // ---------------------------------------------------------------------------
378
- server.tool('compile_with_outputs', 'Compile an Overleaf project and return all output file metadata (PDF, BBL, logs, etc.). Useful for arXiv submission workflows.', {
379
- project_id: z.string().describe('The Overleaf project ID'),
380
- resource_path: z
381
- .string()
382
- .optional()
383
- .describe('Path of a .tex file in the project to compile as the root document. E.g. "paper.tex", "folder/test.tex"'),
384
- }, async ({ project_id, resource_path }) => wrapTool(async () => {
385
- const client = await getClient();
386
- return client.compileWithOutputs(project_id, resource_path);
387
- }));
388
- // ---------------------------------------------------------------------------
389
- // Tool: rename_project
390
- // ---------------------------------------------------------------------------
391
- server.tool('rename_project', 'Rename an Overleaf project itself (not a file inside it). Use rename_entity for files and folders.', {
392
- project_id: z.string().describe('The Overleaf project ID'),
393
- new_name: z.string().describe('New project name'),
394
- }, async ({ project_id, new_name }) => wrapTool(async () => {
395
- const client = await getClient();
396
- await client.renameProject(project_id, new_name);
397
- return { project_id, new_name };
398
- }));
399
- // ---------------------------------------------------------------------------
400
- // Tool: plan_project_renames
401
- //
402
- // Deliberately plan-only. There is no apply counterpart on the MCP surface:
403
- // a bulk rename across an entire account is unrecoverable (Overleaf keeps no
404
- // project-name history), and an agent that can trigger it on a
405
- // misunderstood instruction is a risk with no matching benefit. The agent
406
- // computes and explains the plan; a human runs
407
- // `olcli project rename-bulk --apply`.
408
- // ---------------------------------------------------------------------------
409
- server.tool('plan_project_renames', 'Preview a bulk project rename across the account. Returns the planned renames, skipped projects and any name collisions. This tool NEVER renames anything - applying the plan requires the human to run `olcli project rename-bulk --apply` in a terminal.', {
410
- match: z
411
- .string()
412
- .optional()
413
- .describe('Regex; only projects whose name matches are considered'),
414
- search: z
415
- .string()
416
- .optional()
417
- .describe('Literal substring to replace (not a regex)'),
418
- replace: z
419
- .string()
420
- .optional()
421
- .describe('Replacement text; supports $1/$2 backrefs when used with match'),
422
- prefix: z.string().optional().describe('Text to prepend to the name'),
423
- suffix: z.string().optional().describe('Text to append to the name'),
424
- }, async ({ match, search, replace, prefix, suffix }) => wrapTool(async () => {
425
- const client = await getClient();
426
- const projects = await client.listProjects();
427
- const plan = planProjectRenames(projects, { match, search, replace, prefix, suffix });
428
- return {
429
- ...plan,
430
- applied: false,
431
- note: plan.collisions.length > 0
432
- ? 'Collisions present. Overleaf allows duplicate names, so applying this would succeed silently and leave indistinguishable projects. Fix the pattern before proceeding.'
433
- : 'Preview only. Run `olcli project rename-bulk --apply` to execute.',
434
- };
435
- }));
436
- // ---------------------------------------------------------------------------
437
- // Tool: diff_project
438
- // ---------------------------------------------------------------------------
439
- server.tool('diff_project', 'Compare local files against the current remote state of an Overleaf project and return the content-level differences. Read-only: nothing is uploaded or written. This is the MCP counterpart of `olcli diff`.', {
440
- project_id: z.string().describe('The Overleaf project ID'),
441
- local_dir: z.string().describe('Local directory to compare against the remote project'),
442
- file: z
443
- .string()
444
- .optional()
445
- .describe('Restrict the comparison to a single path, as it appears in the project'),
446
- name_only: z
447
- .boolean()
448
- .optional()
449
- .default(false)
450
- .describe('Omit the patch text and return only paths and statuses (default: false)'),
451
- context: z
452
- .number()
453
- .int()
454
- .min(0)
455
- .optional()
456
- .default(3)
457
- .describe('Lines of context around each hunk (default: 3)'),
458
- no_default_ignore: z
459
- .boolean()
460
- .optional()
461
- .default(false)
462
- .describe('Disable the built-in LaTeX artifact ignore list; only .olignore applies'),
463
- no_ignore: z
464
- .boolean()
465
- .optional()
466
- .default(false)
467
- .describe('Disable all ignore filtering on both sides'),
468
- }, async ({ project_id, local_dir, file, name_only, context, no_default_ignore, no_ignore }) => wrapTool(async () => {
469
- const targetDir = resolve(local_dir);
470
- if (!existsSync(targetDir)) {
471
- throw new Error(`Directory not found: ${targetDir}`);
472
- }
473
- const client = await getClient();
474
- // Fetched fresh on every call, exactly like `olcli diff`. The manifest
475
- // records remote paths, never remote contents, so there is no snapshot to
476
- // compare against - and a diff that does not describe what a subsequent
477
- // push would overwrite answers a different question than the one asked.
478
- // One request: downloadProject returns the whole project as one archive.
479
- const zipBuffer = await client.downloadProject(project_id);
480
- const fetchedAt = new Date().toISOString();
481
- const zip = new AdmZip(zipBuffer);
482
- const ignoreCtx = loadIgnore(targetDir, {
483
- noDefaults: no_default_ignore,
484
- disableAll: no_ignore,
485
- });
486
- // Both sides go through the same filters. Filtering only the local side
487
- // would report every build artifact sitting on Overleaf as a deletion.
488
- const remoteFiles = filterRemoteTree(zip
489
- .getEntries()
490
- .filter((e) => !e.isDirectory)
491
- .map((e) => ({ path: e.entryName, data: e.getData() })), ignoreCtx, (path) => resolveWithin(targetDir, path) !== null);
492
- const scan = scanLocalFiles(targetDir, ignoreCtx);
493
- const localFiles = new Map();
494
- for (const localFile of scan.files) {
495
- localFiles.set(localFile.relativePath, readFileSync(localFile.path));
496
- }
497
- let entries = compareTrees(localFiles, remoteFiles).filter((e) => e.status !== 'unchanged');
498
- if (file) {
499
- const wanted = normalizeRemotePath(file);
500
- entries = entries.filter((e) => e.path === wanted);
501
- }
502
- const files = entries.map((entry) => ({
503
- path: entry.path,
504
- status: entry.status,
505
- binary: entry.binary,
506
- // Only a plain push uploads and overwrites; remote-only files survive it,
507
- // so calling them "deleted" without this flag would misdescribe the effect.
508
- removed_only_by_push_delete: entry.status === 'deleted',
509
- ...(name_only
510
- ? {}
511
- : {
512
- patch: renderFileDiff(entry, localFiles.get(entry.path), remoteFiles.get(entry.path), { context }),
513
- }),
514
- }));
515
- return {
516
- project_id,
517
- local_dir: targetDir,
518
- // The remote was read at this instant. A collaborator editing between
519
- // this call and a later push can still change the outcome.
520
- remote_fetched_at: fetchedAt,
521
- changed_count: files.length,
522
- files,
523
- note: files.length === 0
524
- ? 'No differences.'
525
- : 'Patches are oriented a/ = remote, b/ = local: + is content a push would upload, - is content it would overwrite.',
526
- };
527
- }));
528
- // ---------------------------------------------------------------------------
529
- // Tool: create_project
83
+ // MCP server setup: the tools live in mcp-server.ts
530
84
  // ---------------------------------------------------------------------------
531
- server.tool('create_project', 'Create a new Overleaf project and return its id, name and URL. Unlike plan_project_renames, this one does apply: creating is additive, nothing existing is overwritten, and an unwanted project can be deleted afterwards.', {
532
- name: z.string().describe('Project name'),
533
- template: z
534
- .enum(['blank', 'example'])
535
- .optional()
536
- .default('blank')
537
- .describe('Project template: an empty project, or Overleaf\'s example document'),
538
- }, async ({ name, template }) => wrapTool(async () => {
539
- const client = await getClient();
540
- const created = await client.createProject(name, { template });
541
- return {
542
- ...created,
543
- template,
544
- };
545
- }));
85
+ const server = createOlcliMcpServer({ getClient });
546
86
  // ---------------------------------------------------------------------------
547
87
  // Start
548
88
  // ---------------------------------------------------------------------------