Skip to main content
Glama
smrik
by smrik

obsidian-playwright-mcp

MCP server that lets AI assistants "see" and interact with the Obsidian app itself — not just read vault files.

Why This Exists

Obsidian plugins are debugged by AI today by reading source files, but that's blind. This server connects to Obsidian's Electron process via Chrome DevTools Protocol (CDP), letting Claude/any agent:

  • Screenshot the app to see what's actually rendering

  • Execute JavaScript in the running app context to query plugin state, trigger commands, inspect the DOM

  • Capture console logs to see errors in real time

  • Automate UI actions for testing plugins or validating layouts

Perfect for debugging why a plugin isn't rendering, testing UI state changes, or verifying behavior end-to-end.

Related MCP server: Chrome DevTools MCP

Gotchas

  • Obsidian must launch with --remote-debugging-port=8315 — standard startup doesn't enable CDP

  • Single connection at a time — only one agent can connect per Obsidian instance

  • Console logs captured only after connect — startup logs are missed

  • Requires Node.js v18+ and Windows (Obsidian.exe path is hardcoded)

Quick Start

  1. Launch Obsidian with debug port:

    Start-Process "C:\Users\patri\AppData\Local\Programs\Obsidian\Obsidian.exe" -ArgumentList "--remote-debugging-port=8315"
  2. Configure MCP (.claude/mcp_config.json):

    {
      "mcpServers": {
        "obsidian-automation": {
          "command": "node",
          "args": ["C:/Projects/02-Dormant-or-Ideas/obsidian-playwright-mcp/obsidian-mcp-server.js"]
        }
      }
    }

Tools

Tool

Purpose

connect_to_obsidian

Establish CDP connection (run first)

execute_in_renderer

Run JavaScript: app.commands.executeCommandById('...'), app.vault.read(...), app.plugins.plugins[...]

take_screenshot

Capture current window state

get_console_logs

Fetch console output (filter by type: "error", "warning", etc.)

get_page_info

Get vault name, active file, window title

disconnect

Close connection

Example: Debug a Plugin

// Connect
connect_to_obsidian()
// Returns: { success: true, title: "Home - MyVault - Obsidian v1.x" }

// Is the plugin loaded?
execute_in_renderer({ code: `!!app.plugins.plugins['my-plugin']` })
// Returns: { success: true, result: true }

// What's in the console?
get_console_logs({ filter: "error", limit: 5 })
// Returns: { logs: [{ type: "error", text: "Plugin init failed: ..." }] }

// Screenshot the error state
take_screenshot({ filename: "error-state.png" })

Tech Stack

  • Node.js + Playwright (CDP connectivity)

  • @modelcontextprotocol/sdk (MCP protocol)

Status: Dormant (Jan 2026). See SKILL.md for detailed examples.

Screenshots

TODO (Patrik): add screenshots here.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI coding assistants to control and inspect a live Chrome browser for automation, debugging, performance analysis, network monitoring, and DOM interaction through Chrome DevTools Protocol.
    1,516,489 npm
    Apache 2.0
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables AI coding assistants to control and inspect a live Chrome browser for automated debugging, performance analysis, and web interaction. It leverages Puppeteer and Chrome DevTools to provide capabilities like network monitoring, console logging, and automated browser actions.
    -