Markdown Mistress
Google-Docs-style comments on a markdown preview, which Kiro can read and resolve through a bundled MCP server.
Usage
- Open a markdown file and run Markdown Mistress: Open Commentable Preview (or use the comment icon in the editor title bar).
- Select text in the preview, then click 💬 Comment or press
⌘⌥M / Ctrl+Alt+M.
- In Kiro chat, with the preview open, ask something like "address the comments in my markdown preview".
Kiro calls get_comments, edits the file, and then calls resolve_comment (or reply_to_comment when it needs clarification). The preview updates live as the file and comments change.
MCP server
On first activation the extension offers to register its MCP server in ~/.kiro/settings/mcp.json. You can also run Markdown Mistress: Install MCP Server in Kiro at any time. Kiro does not yet honor MCP servers registered programmatically by extensions (kirodotdev/Kiro#2974), so the extension writes a config entry instead.
| Tool |
Purpose |
get_comments |
Comments for a file (defaults to the most recently focused preview), with selected text, context, source lines and a source excerpt |
list_commented_documents |
Files with comments, plus currently open previews |
reply_to_comment |
Adds a Kiro reply to a thread |
resolve_comment |
Marks a thread resolved, optionally with a note |
The server runs on the editor's own Electron binary in Node mode (ELECTRON_RUN_AS_NODE=1), so node doesn't need to be on your PATH. The script is copied to global storage so its path stays stable across extension updates, and the config entry is refreshed automatically if the editor binary moves.
Storage
Comments live in the extension's global storage (Markdown Mistress: Reveal Comment Storage Folder), never in your repository. There is one JSON file per markdown document, keyed by absolute path. As a result:
- comments are per machine and are not shared through git;
- moving or renaming a markdown file detaches its comments.
Anchors store the selected rendered text with surrounding context and source line numbers. If the text no longer exists after an edit, the comment moves to a Text not found group in the sidebar.
Development
pnpm install
pnpm build # bundles dist/extension.cjs, dist/mcp-server.mjs, dist/webview.js
pnpm typecheck
pnpm package # production build + .vsix
All runtime code is bundled by esbuild, so the .vsix is packaged with --no-dependencies and never reads node_modules.
Press F5 with a launch config of type extensionHost, or install the .vsix with Extensions: Install from VSIX….