MCP server for MarkdownPointer - A Markdown viewer with point-and-prompt, Mermaid, KaTeX, and PPTX export
MarkdownPointer MCP has 8 tools with complete descriptions and clear naming. All tools start with action verbs (show_, get_, slide_, export_, tag_, import_). Descriptions are detailed (100-250 chars) and explain WHEN to use each tool. However, input schemas are not visible in the provided source code, only parameter names and descriptions appear in the method signatures. Without explicit JSON Schema definitions, schema quality cannot be verified. Error handling is present (ErrorResponse types) but lacks recovery guidance. Tool composition is sound: each tool has one responsibility. Parameter descriptions are present but some lack type constraints (e.g., 'action' in slide_control accepts free-form strings instead of an enum). Output schemas are partially documented in code comments but not formally declared.
Export a Markdown file to .docx (Word) or .pptx (PowerPoint). Output format is determined by the file extension of the output path. Defaults to .docx. PPTX uses SlideKit (no Pandoc needed). DOCX requires Pandoc.
Get a rendered slide image. Use small width (320-480) to save tokens. Only request when you need to visually verify layout.
Get structured text description of slide shapes and content. Very low token cost. Use this first before requesting an image.
Get current MarkdownPointer status: open windows, tabs, selected file, and slide state if in slide view. Use this to check what the user is viewing before taking action.
Import PPTX/DOCX files and convert to Markdown. Accepts a file path or folder path (imports all .pptx/.docx in the folder). Skips files whose .md output already exists and is newer than the source. Extracts text, tables, and images (saved to assets/ folder with index.json metadata). PPTX uses SlideKit, DOCX uses Pandoc.
Open a Markdown/SVG file in MarkdownPointer. Supports Mermaid diagrams, KaTeX math, and SVG with embedded fonts. Auto-refreshes on file changes. Returns current tab status and any render errors. When slideView is true, opens in reveal.js slide mode and returns slide state. Call multiple times to open multiple files.
Input schemas not visible in source code. Parameter types and constraints are declared in C# method signatures but not as explicit JSON Schema objects. Cannot verify schema completeness, enum constraints, or format declarations.
slide_control 'action' parameter accepts free-form string instead of enum. Description lists valid values ('next', 'prev', 'first', 'last', 'goto') but no enum constraint prevents LLM from hallucinating invalid actions.
Error responses lack recovery guidance. ErrorResponse returns 'success: false' and 'error' message, but does not tell LLM what to do next (retry, call different tool, ask user). E.g., 'File not found' should suggest 'Check path or use import_document first.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Control slide navigation in MarkdownPointer. Requires a file to be open in slide view (use show_markdown with slideView=true first). Returns current slide content and next slide content for presentation narration.
Add or update tags and description for a file in index.json. Works for both images (stored in 'images' section) and .md files (stored in 'documents' section). Always use this tool (not manual file edits) to ensure consistent index format.
Output schemas not formally documented. Code returns JSON objects (SlideControlResponse, ErrorResponse) but MCP tool definitions do not declare expected response structure. LLM cannot plan downstream calls without knowing what fields to expect.
No idempotency or confirmation pattern for destructive operations. export_document, tag_asset, and import_document modify state but lack dry-run or confirmation steps. Agents cannot safely retry on ambiguous failures.