md-annotate
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@md-annotatepush a draft blog post for review"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
md-annotate
A shared markdown review surface between Claude (via MCP) and humans (via browser). Push markdown documents, annotate them inline like a GitHub PR review, and generate structured revision prompts — all in a local-first workflow.
How it works
┌────────────────┐ ┌────────────────┐ ┌────────────────┐
│ Claude │ MCP tools │ md-annotate │ Browser UI │ Human │
│ (or any AI) │ ══════════════>│ daemon │<══════════════ │ (reviewer) │
│ │ <══════════════│ │ ══════════════>│ │
└────────────────┘ push / read └────────────────┘ annotate/view └────────────────┘Claude pushes a markdown document via the
md_pushMCP toolHuman reviews in the browser — select text, add inline annotations (like PR review comments)
Claude reads annotations via
md_get_annotationsand revises the documentRepeat until done
Related MCP server: Batch Review
Quick start
# Clone and install
git clone https://github.com/alaeddineG/md-annotate.git
cd md-annotate
npm install
# Build the UI
npm run build
# Start the daemon
npm start
# → http://localhost:4242Or use the setup script which handles everything including the MCP bridge:
# macOS / Linux
chmod +x setup.sh
./setup.sh
# Windows (PowerShell)
.\setup.ps1MCP integration
md-annotate exposes four tools to Claude via the Model Context Protocol:
Tool | Description |
| Push a markdown document for review |
| Read all human annotations on a document |
| List all documents in the review queue |
| Clear annotations after incorporating feedback |
Claude Desktop (stdio transport)
Add to your Claude Desktop MCP config:
{
"mcpServers": {
"md-annotate": {
"command": "npx",
"args": ["md-annotate", "mcp"]
}
}
}Standalone MCP bridge
For environments where the MCP bridge needs to live outside the project directory (e.g. macOS sandbox restrictions with Claude Desktop):
# Build the self-contained bridge
npm run build:mcp
# Copy it somewhere accessible
mkdir -p ~/.mcp_servers/md-annotate
cp mcp-bridge.js ~/.mcp_servers/md-annotate/Then configure Claude Desktop:
{
"mcpServers": {
"md-annotate": {
"command": "node",
"args": [
"/Users/you/.mcp_servers/md-annotate/mcp-bridge.js",
"--daemon-url", "http://localhost:4242"
]
}
}
}Remote daemon
If the daemon runs on a different machine:
{
"mcpServers": {
"md-annotate": {
"command": "npx",
"args": ["md-annotate", "mcp", "--daemon-url", "http://192.168.1.100:4242"]
}
}
}CLI
md-annotate start [--port 4242] [--host 0.0.0.0] Start the daemon
md-annotate stop Stop the daemon
md-annotate status Show daemon status
md-annotate open Open UI in browser
md-annotate push <file.md> [--id ID] [--context ""] Push a file for review
md-annotate mcp [--daemon-url <url>] Run MCP stdio bridgeArchitecture
md-annotate/
├── bin/cli.js # CLI entry point
├── server/
│ ├── daemon.js # Express server (REST API + SSE + static files)
│ ├── mcp.js # MCP server (stdio + HTTP transports)
│ └── store.js # File-based document/annotation storage
├── src/ # React frontend (Vite + @primer/react)
│ ├── App.jsx # Main app with SSE real-time updates
│ └── components/
│ ├── RawView.jsx # Raw markdown with inline review threads
│ ├── MarkdownPreview.jsx # Rendered markdown preview
│ ├── SelectionPopover.jsx # Text selection → annotation popover
│ ├── DocumentList.jsx # Sidebar document list
│ ├── ModeToggle.jsx # Raw/Preview toggle
│ └── PromptGenerator.jsx # Generate revision prompt from annotations
├── mcp-standalone.js # Entry point for standalone MCP bridge
├── setup.sh # Setup script (macOS/Linux)
└── setup.ps1 # Setup script (Windows)Storage: Documents and annotations are persisted as JSON files under ~/.md-annotate/documents/.
Real-time: The browser connects via Server-Sent Events (SSE) so annotations and document updates appear instantly — whether created from the UI or pushed via MCP.
Development
# Start Vite dev server (hot reload) + proxy to daemon
npm run dev
# In another terminal, start the daemon
node server/daemon.jsPlatform support
Works on macOS, Linux, and Windows. The daemon, CLI, and MCP bridge are pure Node.js with no native dependencies. The setup.sh script is bash-only (macOS/Linux) — on Windows, run the steps manually or use WSL.
Requirements
Node.js >= 18
A browser
Claude Desktop or any MCP-compatible client (for the AI side)
License
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityCmaintenanceA private, local AI second brain for Markdown notes, providing hybrid search and read/write tools for MCP-compatible AI clients like Claude and Cursor.Last updated6MIT
- Alicense-qualityAmaintenanceA collaborative code and markdown review tool that bridges human reviewers and AI agents, enabling both to browse files, inspect git diffs, leave structured comments, and save a final review report from the same UI in real time.Last updated2MIT
- Flicense-qualityBmaintenanceAn MCP server for reviewing markdown plans before AI agents implement them. Enables annotation of plans with Fix, Question, and Highlight, which AI agents can read directly through MCP.Last updated5
- Alicense-qualityFmaintenanceMCP server for collaborative markdown editing, allowing agents to write documents and humans to comment, with comments fed back as agent input.Last updated324,510MIT
Related MCP Connectors
MCP-native collaborative markdown editor with real-time AI document editing
User-owned memory for AI agents, Copilot, Claude, IDEs, CLIs, and chat apps over remote MCP.
Local-first RAG engine with MCP server for AI agent integration.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/alaeddineG/md-annotate'
If you have feedback or need assistance with the MCP directory API, please join our Discord server