Sync Notion and Obsidian
Keep your Notion workspace and Obsidian vault in sync. Every page created or updated in one app is automatically mirrored to the other.
Prerequisites
Section titled “Prerequisites”- A Notion integration token (create one here)
- Obsidian with the MCP server plugin configured
- WCP running (Docker or local)
1. Register Both Connections
Section titled “1. Register Both Connections”# Notioncurl -X POST http://localhost:8000/api/connections \ -H "Content-Type: application/json" \ -d '{ "name": "notion", "command": "npx", "args": ["-y", "@anthropic/mcp-server-notion"], "env": { "NOTION_API_KEY": "ntn_your_token" } }'
# Obsidiancurl -X POST http://localhost:8000/api/connections \ -H "Content-Type: application/json" \ -d '{ "name": "obsidian", "command": "npx", "args": ["-y", "@anthropic/mcp-server-obsidian"], "env": { "OBSIDIAN_VAULT_PATH": "/path/to/vault" } }'2. Scan Capabilities
Section titled “2. Scan Capabilities”curl -X POST http://localhost:8000/api/capabilities/scanBoth servers should expose notes capabilities (read/write/list).
3. Verify Syncable Pairs
Section titled “3. Verify Syncable Pairs”curl http://localhost:8000/api/capabilities/syncable-pairsExpected output includes a pair with capability_id: "notes" listing both notion and obsidian.
4. Run a Sync
Section titled “4. Run a Sync”curl -X POST http://localhost:8000/api/sync/run/awaitResponse:
{ "synced": 12, "errors": 0, "conflicts": 0, "duration_ms": 3420}5. Handle Conflicts
Section titled “5. Handle Conflicts”If the same page is edited in both apps between syncs, WCP detects a conflict.
# List pending conflictscurl http://localhost:8000/api/conflicts?status=pending
# Resolve — keep the Notion versioncurl -X POST http://localhost:8000/api/conflicts/{conflict_id}/resolve \ -H "Content-Type: application/json" \ -d '{"winning_app": "notion"}'Or set an automatic strategy:
curl -X PUT http://localhost:8000/api/conflicts/strategy \ -H "Content-Type: application/json" \ -d '{"strategy": "last_write_wins"}'- Run syncs on a schedule with cron:
*/5 * * * * curl -s -X POST http://localhost:8000/api/sync/run - Use
source_winsstrategy if one app is your “source of truth” - Monitor via WebSocket for real-time sync events in the Dashboard