Sandbox
@paulhkang94/markview

Native markdown preview and MCP server for Claude Code

MarkView gives Claude Code a native macOS window for previewing markdown instead of leaving it in text form. The MCP server exposes tools like `preview_markdown` and `open_file`, while the app handles live preview, file watching, Mermaid, and export.

39 stars4 forksHTMLUpdated 9d ago
Who it's for

Builders who use Claude Code and want markdown rendered live in macOS.

What it delivers

You can preview markdown from Claude Code in a native Mac window instead of switching tools.

What it does

Claude Code MCP tools

Exposes `preview_markdown` and `open_file` through an MCP server.

Native macOS preview

Renders markdown in a SwiftUI app with WKWebView instead of Electron.

GitHub Flavored Markdown support

Handles tables, strikethrough, autolinks, task lists, and footnotes.

Mermaid and syntax highlighting

Renders Mermaid diagrams and highlights code with Prism.js.

File watching and live updates

Updates the preview when the source file changes on disk.

Export and safety

Exports to HTML and PDF and sanitizes HTML to block scripts and XSS vectors.

How to get it

  1. 1One command to wire MarkView into every Claude Code session
    claude mcp add --transport stdio --scope user markview -- npx mcp-server-markview
  2. 2Run
    # Full .app with Quick Look extension — Apple notarized, Gatekeeper approved
    brew install --cask paulhkang94/markview/markview
    
    # CLI only (builds from source)
    brew tap paulhkang94/markview
    brew install markview
  3. 3Prerequisites: macOS 14+, Swift 6.0+ (Xcode Command Line Tools)
    git clone https://github.com/paulhkang94/markview.git
    cd markview
    swift build -c release
  4. 4Run
    bash scripts/bundle.sh --install
  5. 5Run
    bash scripts/install-cli.sh
  6. 6Run
    mdpreview README.md       # Open a file
    mdpreview                 # Open empty editor

README

MarkView

App npm Glama

Native macOS markdown preview with MCP server for Claude Code. Claude writes markdown — MarkView renders it live, in a real native window, while you work.

Versions: The macOS app (app badge) and the npm MCP wrapper (npm badge) are versioned independently. App releases happen when the Swift binary changes; npm patches happen for MCP server improvements. Both badges always show the latest of each.

MarkView demo

Preview onlyEditor + Preview
PreviewEditor + Preview

Quick Start — Claude Code

One command to wire MarkView into every Claude Code session:

claude mcp add --transport stdio --scope user markview -- npx mcp-server-markview

That's it. Claude can now call preview_markdown to render any markdown string in a native macOS window, or open_file to open any .md file directly.

ToolWhat it does
preview_markdownRender markdown content in a live-reloading MarkView window
open_fileOpen an existing .md file in MarkView

Claude Desktop Setup

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "markview": {
      "command": "npx",
      "args": ["mcp-server-markview"]
    }
  }
}

Note: MCP servers belong in ~/.claude.json (Claude Code) or claude_desktop_config.json (Claude Desktop), not ~/.claude/settings.json.

Installation

Homebrew (recommended)

# Full .app with Quick Look extension — Apple notarized, Gatekeeper approved
brew install --cask paulhkang94/markview/markview

# CLI only (builds from source)
brew tap paulhkang94/markview
brew install markview

Build from source

Prerequisites: macOS 14+, Swift 6.0+ (Xcode Command Line Tools)

git clone https://github.com/paulhkang94/markview.git
cd markview
swift build -c release

Install as app (Open With support)

bash scripts/bundle.sh --install

Creates MarkView.app in /Applications and registers it with Launch Services for right-click > Open With in Finder. Refuses (unless you pass --force) if a Dock tile is pinned to a build/ or repo-root MarkView.app path, since both are ephemeral dev output.

Install CLI

bash scripts/install-cli.sh

Creates mdpreview and md symlinks in ~/.local/bin/.

Usage

CLI

mdpreview README.md       # Open a file
mdpreview                 # Open empty editor

Finder

Right-click any .md, .markdown, .mdown, .mkd file > Open With > MarkView

Programmatic

open -a MarkView README.md

Features

  • GitHub Flavored Markdown via swift-cmark (tables, strikethrough, autolinks, task lists, footnotes)
  • Mermaid diagrams — flowcharts, sequence, Gantt, ER, and pie charts
  • Syntax highlighting via Prism.js (18 languages)
  • Quick Look integration — spacebar-preview .md files in Finder without opening the app
  • Markdown linting with 9 built-in rules and status bar diagnostics
  • Live split-pane editor with WKWebView rendering and bidirectional scroll sync
  • File watching with DispatchSource — works with VS Code, Vim, and other editors
  • Local image rendering — inlines relative paths like ![](./image.png) correctly
  • Export to HTML and PDF
  • HTML sanitizer — strips scripts, event handlers, and XSS vectors
  • Drag and drop — drop any .md file onto the window to open
  • Find & Replace — Cmd+F / Cmd+Option+F
  • Format on save — auto-applies lint fixes
  • Auto-save, word count, line numbers, scroll position preservation
  • Dark mode — system/light/dark theme options, 18 configurable settings

Architecture

Sources/MarkViewCore/           # Library (no UI, fully testable)
  MarkdownRenderer.swift        # cmark-gfm C API wrapper
  FileWatcher.swift             # DispatchSource file monitoring
  MarkdownLinter.swift          # 9-rule pure Swift linting engine
  HTMLSanitizer.swift           # XSS prevention
  LanguagePlugin.swift          # Plugin protocol + registry
  Plugins/                      # CSV, HTML, Markdown plugins

Sources/MarkView/               # SwiftUI app (macOS 14+)
  ContentView.swift             # Split-pane editor + preview
  WebPreviewView.swift          # WKWebView with Prism.js
  ExportManager.swift           # HTML/PDF export

Sources/MarkViewMCPServer/      # MCP server for AI tool integration
  main.swift                    # stdio JSON-RPC (preview_markdown, open_file)

Tests/TestRunner/               # 403 standalone tests (no XCTest)
Tests/VisualTester/             # 5 visual regression tests + WCAG contrast
Tests/FuzzTester/               # 10K random input crash testing
Tests/DiffTester/               # Differential testing vs cmark-gfm CLI

See docs/ARCHITECTURE.md for full details.

Testing

swift run MarkViewTestRunner    # 403 tests
python3 scripts/verify.py       # Full verification (build + tests, writes stamp)
python3 scripts/verify.py --extended  # + fuzz + differential
bash scripts/test-mcp.sh        # MCP protocol tests

Development

swift build
swift run MarkView
swift run MarkView /path/to/file.md

Support

License

MIT — see LICENSE.

Files in the repo

Repository payload23 top-level entries
  • .github
  • docs
  • icons
  • npm
  • scripts
  • Sources
  • Tests
  • workers
  • .allow-claude-md
  • .gitignore
  • CHANGELOG.md
  • CLAUDE.md
  • CODE_OF_CONDUCT.md
  • CONTRIBUTING.md
  • ETHICS.md
  • glama.json
  • LICENSE
  • Makefile
  • Package.swift
  • project.yml
  • README.md
  • smithery.yaml
  • verify.sh

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More connectors

High-performance code intelligence MCP server. Indexes codebases into a persistent knowledge graph — average repo in milliseconds. 158 languages, sub-ms queries, 99% fewer tokens. Single static binary, zero dependencies.

43k

Universal provider proxy for OpenAI Codex & Claude Code — use any LLM (Claude, Gemini, Grok, DeepSeek, Ollama…) with Codex CLI, App, SDK, and Claude Code

14k
okf-memory/
okf-agent-memory

Git-native persistent memory for AI coding agents. Implements Google OKF v0.2 with sub-300µs in-memory BM25 search, embedded MCP server, and progressive disclosure. Slashes token bloat by 80% with zero external databases or dependencies. Built in pure Go.

547
tirth8205/
code-review-graph

Local-first code intelligence graph for MCP and CLI. Builds a persistent map of your codebase so AI coding tools read only what matters, with benchmarked context reductions on reviews and large-repo workflows.

31k
2akouwu/
reverify

Stop your AI from making things up — it proposes, deterministic tools decide, every claim checked against ground truth with evidence. Grounded facts and context survive resets. Reverse engineering is the proving ground. MCP server + CLI.

1.1k
t8y2/dbxConnectors

20 MB lightweight cross-platform database client for 90+ databases, including MySQL, PostgreSQL, SQLite, Redis, MongoDB, DuckDB, SQL Server, and Dameng. Built-in AI, MCP Server, CLI, desktop and Docker. | 轻量级跨平台数据库管理工具,支持 MySQL、PostgreSQL、SQLite、Redis、MongoDB、达梦等 90+ 数据库,提供桌面端、Docker、CLI、内置 AI 助手和 MCP Server。

19k