In-depth architectural comparison of the Substack MCP and Safari DevTools MCP MCP servers. Compare execution transports, security boundaries, tool capabilities, quality scores, and ready-to-paste client installation snippets for Claude, Cursor, Windsurf, and VS Code.
At a Glance & Executive Verdict
Substack MCP
Social Media · Local stdio
Quality: 68/100 (Great) | Auth: other
Safari DevTools MCP
Social Media · Local stdio
Quality: 49/100 (Fair) | Auth: No auth required
Verdict Summary: Choose Substack MCP if you need specialized Social Media tools running via a local process. Choose Safari DevTools MCP if your workspace requires Social Media integration with local subprocess execution. Both servers can be configured concurrently in your client's mcpServers manifest.
Which MCP Server Should You Choose?
Choose Substack MCP when:
You need dedicated capabilities in the Social Media domain.
You prefer local stdio subprocess transport architecture.
Your security boundary fits: other (Free / Open Source).
You have access to required keys: SUBSTACK_PUBLICATION_URL, SUBSTACK_SESSION_TOKEN, SUBSTACK_USER_ID, SUBSTACK_MCP_HOME.
Get the current subscriber count for your Substack publication. Returns `precision`: 'exact' when the API reports a true count, 'approximate' when only Substack's rounded value is available (the real number is that or higher — render it hedged, e.g. '1,000+'), or 'unavailable' with count -1. Never treat an approximate value as exact.
list_published_posts
List published posts with pagination. Returns title, date, slug, and URL for each post.
list_drafts
List draft posts. Returns title, creation date, and audience for each draft.
get_post
Get the full content of a published post by ID. Returns title, body HTML, metadata.
get_draft
Get the full content of a draft post by ID. Returns title, body, metadata.
Ready-to-Paste Client Configurations
Paste either (or both) of these JSON server blocks into your client config file (e.g. claude_desktop_config.json or ~/.cursor/mcp.json).
Substack MCP is categorized under Social Media and uses a local stdio subprocess. In contrast, Safari DevTools MCP belongs to Social Media using local stdio subprocess. Select Substack MCP when you need capabilities focused on social media and Safari DevTools MCP when you require tools for social media.
Get comments on a published post. Returns commenter name, comment body, date, and reaction counts.
get_sections
List your publication's sections (categories). Returns each section's id and name. Use a section id as `section_id` when creating or updating a draft to file it under that section.
get_post_analytics
Get performance stats (views, emails sent/delivered/opened, signups, subscribes, estimated value, comments, reactions) for a published post by ID. Substack has no per-post stats endpoint, so this searches your 500 most recent published posts for the ID; returns a not-found note if it isn't among them.
list_scheduled_posts
List posts scheduled for future publication, soonest first. Read-only visibility into what's queued — scheduling itself is done in Substack's editor (this server does not schedule, publish, or delete long-form posts). Returns id, title, audience, and scheduled time (`trigger_at`).
create_draft
Create a new draft post. Accepts markdown body which is converted to Substack's format. Does NOT publish — creates a draft only.
update_draft
Update an existing draft post. Only works on unpublished drafts. Accepts markdown body.
upload_image
Upload an image to Substack's CDN. Provide exactly one of `image_base64` (a base64 data URI) or `image_path` (a local file path). Returns a hosted image URL that is publicly fetchable by anyone with the link (an unlisted asset — not attributed to you or added to your feed).
+2 more tools listed on main page
Safari DevTools MCP Tools (45)
list_console_messages
List console messages with filtering by level (log, warn, error)
get_console_message
Get a detailed message including stack trace and arguments
clear_console
Clear all captured console messages
list_network_requests
Monitor network requests — Fetch, XHR, and resource loads
get_network_request
Get full request/response details with headers and body
clear_network
Clear all captured network requests
evaluate_script
Execute JavaScript in the browser context and return results
take_screenshot
Capture a PNG screenshot of the page or a specific element
take_snapshot
Accessibility-tree snapshot of the DOM with stable UIDs for element targeting
get_page_content
Get the page title, URL, and visible text content
get_html_source
Get the full HTML source of the page
extract_links
Extract all links with their text, href, and rel attributes