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.

F
license - not found
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

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/smrik/obsidian-playwright-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server