MCP server for AI-powered classic SharePoint page migration to modern
Server has 22 tools with significant definition gaps. Only 3 tools (discover_page_assets, migrate_assets, rewrite_urls) have complete, well-structured schemas with proper descriptions. Remaining 19 tools lack visible input schemas, parameter descriptions, or output documentation in the provided source. Tools 12-22 show only file paths and generic descriptions ('Extract classic page structure', 'Get page catalog info') without parameter details. No tool annotations (readOnlyHint/destructiveHint) present. Error handling and recovery guidance absent across all tools. Naming is generally verb-first and clear, but schema completeness is critically low.
Build an arbitrary standard web part JSON by specifying the web part type ID and properties directly. Use this for web parts without a dedicated builder.
Build a Divider (horizontal rule) web part JSON for use in a modern page canvas.
Build an Embed web part JSON from a URL or embed code for use in a modern page canvas.
Build a modern Image web part for a same-site non-SVG image with verified source metadata and positive natural dimensions. Use build_text_webpart for SVGs or images without this metadata.
Build a modern List web part JSON from verified destination list and view metadata.
Build a Quick Links web part JSON from a visible heading and link items for use in a modern page canvas. Use layoutId "List" to show descriptions beneath each link title. Other layouts (CompactCard, Button, Waffle) only show titles.
11 of 22 tools (50%) have no visible input schema in source code. Tools 12-22 (extract_classic_page, get_page_catalog, screenshot_page, get_page_layout, create_modern_page, update_modern_page, find_page, compare_pages, list_pages, get_comparison_summary, resolve_list) show only file paths and generic descriptions without parameter definitions.
Tool descriptions for 11 tools are under 20 characters (generic: 'Extract classic page structure', 'Get page catalog information'). LLMs cannot determine when to select these tools.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 40 | <=2025-11-25 | v2 |
Build a Text web part JSON from sanitized HTML content for use in a modern page canvas. Applies PnP-style HTML transformation (heading shift, RTE class mapping, table modernization) before wrapping. Images are kept as inline RTE images.
Build a Video web part JSON for use in a modern page canvas.
Compare classic and modern pages.
Create a modern SharePoint page.
Scan a classic page for all referenced assets (images, CSS, JS, documents). Returns a structured inventory with cross-tenant classification.
Extract classic page structure and content.
Find a SharePoint page.
Get a summary of page comparison results.
Get page catalog information.
Get page layout information.
List SharePoint pages.
Download assets from a source SharePoint site and upload them to the destination site. Returns a URL mapping (source → destination) for use with rewrite_urls.
Resolve a SharePoint list.
Rewrite URLs in HTML or text content from source site paths to destination site paths. Use after migrating assets to update all references.
Take a screenshot of a page.
Update a modern SharePoint page.
No tool annotations present. Tools like create_modern_page, update_modern_page, migrate_assets (WRITE operations) lack destructiveHint=true. Read-only tools lack readOnlyHint=true. Agents cannot distinguish safe from risky operations.
No output schemas documented for any tool. LLMs cannot plan downstream tool calls or extract required fields (e.g., what does extract_classic_page return? What fields enable compare_pages?). Breaks tool composition.
No error handling or recovery guidance in any tool. No indication of retryable vs fatal errors, no actionable error messages, no suggestions for next steps on failure.