Command Palette

Search for a command to run...

UnylyUnyly
Browse all

MRSF

FreeNot checked

Markdown Review Sidecar Format (MRSF) v1.0 - Sidemark

GitHubEmbed

About

Markdown Review Sidecar Format (MRSF) v1.0 - Sidemark

README

Sidemark / MRSF logo

Markdown Review Sidecar Format (MRSF) — Draft

License: MIT MRSF v1.0 Draft @mrsf/cli on npm @mrsf/mcp on npm npm downloads (cli) npm downloads (mcp) VS Code Marketplace VS Code Installs mrsf on PyPI @mrsf/markdown-it-mrsf on npm @mrsf/marp-mrsf on npm @mrsf/marked-mrsf on npm @mrsf/rehype-mrsf on npm MCP Compatible

Markdown Review Sidecar Format (MRSF), also known as Sidemark, is a portable, version-controlled, and machine-actionable way to store review comments outside Markdown files.

🌐 sidemark.org · 💻 VS Code Extension

This makes:

  • Markdown docs clean and uncluttered
  • Review history persist across edits
  • Automated review tools and AI agents/skills able to reason about comments reliably

🧠 What Problem This Solves

Markdown workflows today struggle with durable, context-aware review comments:

  • Inline comments can’t move with the text
  • GitHub/GitLab reviews vanish with edits
  • Automated agents (LLMs, bots) have no structured API for feedback

MRSF solves this with sidecar files that hold review metadata separate from content and a CLI/MCP interface for tooling.

🚀 Features

  • Standardized sidecar format for Markdown reviews
  • Anchors with line/span + fallback matching (selected_text)
  • Re-anchoring after edits using configurable strategies
  • JSON Schema for validation
  • CLI tools for validation, re-anchoring, status checks
  • MCP server for integrations with LLMs and assistant clients
  • Python CLI & SDK (pip install mrsf) — 1:1 port of the Node.js CLI
  • Rendering plugins for Marp, Marked, markdown-it, and rehype/unified ecosystems
  • Interactive editor integrations for VS Code, Monaco, Milkdown/Crepe, and experimental Tiptap hosts

📄 Specification

The full specification is available in MRSF-v1.0.md.

🔧 Quick Start

Install

# Node.js
npm install -g @mrsf/cli

# Python
pip install mrsf

Typical workflow

# create a sidecar for a Markdown file
mrsf init docs/architecture.md

# add a comment anchored at line 12
mrsf add docs/architecture.md -l 12 "Add more detail about this architecture."

# check for issues
mrsf validate

# after the document changes
mrsf reanchor

# see comment health
mrsf status

You can also attach tool-specific extension fields when creating comments. The public SDKs and MCP server accept these as key/value maps, and they are stored on disk as flat x_* fields:

mrsf add docs/architecture.md \
  --author "review-bot" \
  --text "Needs a second pass" \
  --line 12 \
  --ext x_source=review-bot \
  --ext x_score=0.91 \
  --ext 'x_labels=["needs-review","docs"]'

See the full CLI documentation in cli/README.md, or run mrsf --help.

📦 Examples

Minimal sidecar (.review.yaml) next to the Markdown):

mrsf_version: "1.0"
document: docs/architecture.md
comments:
- id: abc123
  author: Jane Doe
  timestamp: '2026-03-02T18:22:59Z'
  text: "Can you clarify this section?"
  resolved: false
  line: 9

Advanced example with exact span:

- id: def456
  author: Jane Doe
  timestamp: '2026-03-02T18:24:51Z'
  text: "Is this phrasing accurate?"
  type: question
  resolved: false
  line: 12
  end_line: 12
  start_column: 42
  end_column: 73
  selected_text: "While many concepts are represented"

More examples: see the examples folder.

🛠 MCP Server

You can run MRSF as an MCP (Model Context Protocol) server for LLM/assistant integrations.

Install:

npm install -g @mrsf/mcp

Example (Claude Desktop config):

{
  "mcpServers": {
    "mrsf": {
      "command": "npx",
      "args": ["-y", "@mrsf/mcp"]
    }
  }
}

Servers expose resources like:

  • mrsf://sidecar/{path}
  • mrsf://comment/{path}/{id}
  • mrsf://anchors/{path}

See the full MCP server documentation in mcp/README.md.

💻 VS Code Extension

Sidemark for VS Code brings MRSF review comments directly into your editor — gutter icons, inline previews, hover cards, a sidebar panel, and automatic reanchoring on save.

Install from the Visual Studio Marketplace or search for "Sidemark" in the VS Code Extensions view.

🧪 Monorepo Tests

All TypeScript/Vitest packages can now be run from the repository root:

npm install
npm test

For watch mode or coverage from the root:

npm run test:watch
npm run test:coverage

The root Vitest project aggregates:

  • cli/
  • mcp/
  • plugins/shared/
  • plugins/markdown-it/
  • plugins/monaco/
  • plugins/rehype/
  • vscode/

🐍 Python CLI & SDK

A full Python port of the CLI and library, installable via pip:

pip install mrsf

Same 9 commands, same library API, same 134 tests:

import mrsf

doc = mrsf.parse_sidecar("README.md.review.yaml")
for comment in doc.comments:
    print(f"{comment.author}: {comment.text}")

result = mrsf.validate(doc)

Python uses the same explicit extension-map contract when adding comments:

opts = mrsf.AddCommentOptions(
  author="review-bot",
  text="Needs a second pass",
  line=12,
  extensions={
    "x_source": "review-bot",
    "x_score": 0.91,
    "x_labels": ["needs-review", "docs"],
  },
)

See python/README.md for the full SDK reference.

🎨 Rendering Plugins

Render MRSF review comments directly in Markdown output as badges, highlights, and tooltips.

markdown-it Plugin

For VitePress, markdown-it, and any markdown-it-based renderer:

npm install @mrsf/markdown-it-mrsf
import MarkdownIt from "markdown-it";
import { mrsfPlugin } from "@mrsf/markdown-it-mrsf";

const md = new MarkdownIt();
md.use(mrsfPlugin, { sidecarPath: "doc.md.review.yaml" });

See plugins/markdown-it/README.md.

Marp Plugin

For Marpit and Marp presentation pipelines:

npm install @mrsf/marp-mrsf
import { Marpit } from "@marp-team/marpit";
import { mrsfPlugin } from "@mrsf/marp-mrsf";

const marpit = new Marpit();
marpit.use(mrsfPlugin, { comments: sidecarData, interactive: true });

The plugin adds data-mrsf-page metadata to rendered page containers and also accepts vendor-only x_page comment hints when a presentation-level anchor is more useful than a line anchor.

See plugins/marp/README.md.

Marked Plugin

For Marked-based renderers in Node.js or the browser:

npm install marked @mrsf/marked-mrsf
import { Marked } from "marked";
import { markedMrsf } from "@mrsf/marked-mrsf";

const parser = new Marked();
parser.use(markedMrsf({ sidecarPath: "doc.md.review.yaml" }));

See plugins/marked/README.md.

rehype Plugin

For Astro, Next.js MDX, Docusaurus, and the unified ecosystem:

npm install @mrsf/rehype-mrsf
import { unified } from "unified";
import remarkParse from "remark-parse";
import remarkRehype from "remark-rehype";
import { rehypeMrsf } from "@mrsf/rehype-mrsf";
import rehypeStringify from "rehype-stringify";

const file = await unified()
  .use(remarkParse)
  .use(remarkRehype)
  .use(rehypeMrsf, { sidecarPath: "doc.md.review.yaml" })
  .use(rehypeStringify)
  .process(markdown);

See plugins/rehype/README.md.

✍️ Interactive Editor Integrations

MRSF also ships editor-native integrations when you want the review workflow inside a live editing surface instead of rendered HTML.

Monaco Plugin

For Monaco-based editors in browser and desktop apps:

npm install @mrsf/monaco-mrsf monaco-editor

See plugins/monaco/README.md.

Tiptap Plugin (Experimental)

For browser-hosted Tiptap editors with inline highlights, gutters, and an explicit-save review workflow:

npm install @mrsf/tiptap-mrsf @tiptap/core @tiptap/starter-kit

See plugins/tiptap/README.md.

Milkdown + Crepe Plugin

The @mrsf/milkdown-mrsf package runs the same MRSF review controller in both direct Milkdown editors and the higher-level Crepe shell. It covers sidecar load/save/reload/reanchor flows, inline anchors, gutter overlays, thread tooltips, and selection-based comment actions through a browser host adapter.

Try the demo:

cd examples
npm install
npm run demo:milkdown

Then open the printed local Vite URL and navigate to / to switch between direct Milkdown and Crepe while they share the same review runtime.

See plugins/milkdown/README.md.

Stability & Versioning

The MRSF specification is currently v1.0 Draft. Published packages follow Semantic Versioning; while packages remain pre-1.0, minor releases may include breaking changes and consumers should read package changelogs before upgrading.

Package changelogs:

Tools target mrsf_version "1.0". Consumers SHOULD tolerate unknown future minor versions and unknown x_-prefixed extension fields by preserving them when reading and writing sidecars. Consumers SHOULD warn, rather than silently proceed, when they encounter an unknown major version.

🧪 Status

Draft: this specification and tooling are open for feedback and improvement.

File issues or pull requests with suggestions.

❤️ Contributing

We welcome:

  • review of the spec
  • implementation feedback on the CLI/MCP/Python SDK
  • integration examples with editors, renderers, and bots
Package Path Install
CLI & library cli/ npm install @mrsf/cli
MCP server mcp/ npm install @mrsf/mcp
VS Code extension vscode/ Marketplace
Python CLI & SDK python/ pip install mrsf
Marked plugin plugins/marked/ npm install @mrsf/marked-mrsf
Marp plugin plugins/marp/ npm install @mrsf/marp-mrsf
markdown-it plugin plugins/markdown-it/ npm install @mrsf/markdown-it-mrsf
Monaco plugin plugins/monaco/ npm install @mrsf/monaco-mrsf
Milkdown + Crepe plugin plugins/milkdown/ See package README
rehype plugin plugins/rehype/ npm install @mrsf/rehype-mrsf
Tiptap plugin (experimental) plugins/tiptap/ npm install @mrsf/tiptap-mrsf
Documentation docs/ sidemark.org

See CONTRIBUTING.md

Disclaimer MRSF is a personal open‑source project. It is not affiliated with, endorsed by, or an official standard of Microsoft. Any internal experimentation does not imply product adoption.

📄 License

MIT

from github.com/wictorwilen/MRSF

Installing MRSF

This server has no published package — it is built from source. Open the repository and follow its README.

▸ github.com/wictorwilen/MRSF

FAQ

Is MRSF MCP free?

Yes, MRSF MCP is free — one-click install via Unyly at no cost.

Does MRSF need an API key?

No, MRSF runs without API keys or environment variables.

Is MRSF hosted or self-hosted?

Self-hosted: the server runs locally on your machine via the install command above.

How do I install MRSF in Claude Desktop, Claude Code or Cursor?

Open MRSF on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.

Related MCPs

Compare MRSF with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All development MCPs