#!/usr/bin/env python3 # -*- coding: utf-8 -*- # File: src/scitex_writer/_mcp/tools/migration.py """MCP tools: migration (import/export Overleaf).""" from typing import Optional from fastmcp import FastMCP def register_tools(mcp: FastMCP) -> None: """Register migration tools.""" @mcp.tool() def writer_import_overleaf( zip_path: str, output_dir: Optional[str] = None, project_name: Optional[str] = None, dry_run: bool = False, force: bool = False, ) -> dict: """[writer] Import an Overleaf ZIP export into a scitex-writer project. Analyzes the Overleaf project structure, maps sections to IMRAD format, and creates a complete scitex-writer project with figures, bibliography, and content properly placed. Args: zip_path: Path to the Overleaf ZIP file. output_dir: Where to create the project (default: ./). project_name: Name for the project (default: derived from ZIP). dry_run: If True, show mapping without creating files. force: If True, overwrite existing output directory. """ from ...migration import from_overleaf return from_overleaf(zip_path, output_dir, project_name, dry_run, force) @mcp.tool() def writer_export_overleaf( project_dir: str = ".", output_path: Optional[str] = None, dry_run: bool = False, ) -> dict: """[writer] Export a scitex-writer project as Overleaf-compatible ZIP. Flattens the project structure into a format uploadable to Overleaf, with a single main.tex, images directory, and merged bibliography. Args: project_dir: Path to the scitex-writer project. output_path: Path for the output ZIP (default: overleaf_export.zip). dry_run: If True, list files without creating ZIP. """ from ...migration import to_overleaf return to_overleaf(project_dir, output_path, dry_run) # EOF