@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.
- package/README.md +1 -0
- package/dist/client.d.ts +41 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +53 -4
- package/dist/client.js.map +1 -1
- package/dist/mcp-confirm.d.ts +157 -0
- package/dist/mcp-confirm.d.ts.map +1 -0
- package/dist/mcp-confirm.js +282 -0
- package/dist/mcp-confirm.js.map +1 -0
- package/dist/mcp-server.d.ts +32 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +1040 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/mcp.d.ts +3 -0
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +8 -468
- package/dist/mcp.js.map +1 -1
- package/package.json +1 -1
|
@@ -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
|
|
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 {
|
|
20
|
-
import {
|
|
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 {
|
|
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
|
|
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
|
// ---------------------------------------------------------------------------
|