MRSF

mcp
Security Audit
Warn
Health Pass
  • License — License: MIT
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Community trust — 13 GitHub stars
Code Warn
  • process.env — Environment variable access in cli/src/__tests__/bin.test.ts
Permissions Pass
  • Permissions — No dangerous permissions requested
Purpose
This tool provides a standardized format called the Markdown Review Sidecar Format (Sidemark). It allows developers, automated tools, and AI agents to store and manage review comments for Markdown files in separate files, keeping the original documents clean.

Security Assessment
The overall risk is Low. The automated scan found no hardcoded secrets, no dangerous permission requests, and no evidence of unauthorized network requests or shell command execution. The only warning relates to environment variable access, but this is safely isolated within a testing script (`cli/src/__tests__/bin.test.ts`), which is a standard and secure practice.

Quality Assessment
The project is highly active, with its most recent code push occurring today. It is licensed under the standard MIT license, making it freely available for personal and commercial use. While community trust metrics are still growing (13 GitHub stars), the tool demonstrates strong technical maturity by offering a comprehensive ecosystem, including an npm package, a PyPI package, a VS Code extension, and various Markdown engine plugins.

Verdict
Safe to use.
SUMMARY

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

README.md

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.

🧪 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

Reviews (0)

No results found