Substack MCP

by Greg-Swiftomatic
Verified

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Enables retrieval and search of newsletter posts, podcasts, and recommendations, as well as accessing post content, metadata, user profiles, and subscription information from Substack publications.

Substack MCP

An MCP (Model Context Protocol) server for Substack API integration with Claude and other AI assistants.

Overview

This project implements a Model Context Protocol (MCP) server that enables AI assistants like Claude to interact with Substack newsletters, posts, and authors through a standardized interface. It leverages the Substack API library and makes its functionality available through MCP.

With this MCP server, Claude can:

  • Retrieve newsletter posts, podcasts, and recommendations
  • Get post content and metadata
  • Search for posts within newsletters
  • Get user profile information and subscriptions

Installation

Prerequisites

Setup

  1. Clone this repository:
    git clone https://github.com/Greg-Swiftomatic/substack-mcp.git cd substack-mcp
  2. Set up a virtual environment using uv:
    curl -LsSf https://astral.sh/uv/install.sh | sh # Install uv if not already installed uv init . uv venv source .venv/bin/activate # On Windows: .venv\Scripts\activate
  3. Install dependencies:
    uv add "mcp[cli]" substack-api

Usage

Running the Server

Run the MCP server:

python substack_mcp.py

Configuring Claude for Desktop

  1. Open Claude for Desktop's configuration file:
    • macOS/Linux: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
  2. Add your server configuration:
    { "mcpServers": { "substack": { "command": "uv", "args": [ "--directory", "/ABSOLUTE/PATH/TO/substack-mcp", "run", "substack_mcp.py" ] } } }
  3. Restart Claude for Desktop.

Example Queries

Once configured, you can ask Claude questions like:

Available Tools

The server provides the following MCP tools:

ToolDescription
get_newsletter_postsRetrieves recent posts from a Substack newsletter
get_post_contentGets the full content of a specific Substack post
search_newsletterSearches for posts within a newsletter
get_author_infoGets information about a Substack author
get_newsletter_recommendationsGets recommended newsletters for a Substack publication
get_newsletter_authorsGets authors of a Substack newsletter

Project Structure

  • substack_mcp.py - The main MCP server implementation
  • examples/ - Example queries and responses
  • docker/ - Docker configuration for containerized deployment

Development

To contribute to this project:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Troubleshooting

If you encounter issues:

  1. Check Claude's logs for errors:
    # macOS/Linux tail -n 20 -f ~/Library/Logs/Claude/mcp*.log # Windows type %APPDATA%\Claude\Logs\mcp*.log
  2. Verify your server builds and runs without errors:
    python substack_mcp.py
  3. Make sure your claude_desktop_config.json file has the correct paths and syntax.
  4. Try restarting Claude for Desktop completely.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

-
security - not tested
A
license - permissive license
-
quality - not tested

An MCP server that enables AI assistants like Claude to interact with Substack newsletters, allowing for post retrieval, content searching, and author information access through a standardized interface.

  1. Overview
    1. Installation
      1. Prerequisites
      2. Setup
    2. Usage
      1. Running the Server
      2. Configuring Claude for Desktop
      3. Example Queries
    3. Available Tools
      1. Project Structure
        1. Development
          1. Troubleshooting
            1. License
              1. Acknowledgments