Skip to main content
Glama

image

Beehiiv MCP Server

A Model Context Protocol (MCP) server that provides tools for interacting with the Beehiiv API v2. This server enables Large Language Models (LLMs) to interact with Beehiiv publications and posts through standardized tools.

Prerequisites

  • Python 3.10 or higher

  • uv package manager

  • A Beehiiv account with API access

  • Claude Desktop (or another MCP-compatible client)

Related MCP server: MCP Python Server — API Wrapper

Installation

  1. Install uv if you haven't already:

curl -LsSf https://astral.sh/uv/install.sh | sh
  1. If rebuilding from scratch, create and set up your project:

# Create a new directory and navigate into it
mkdir beehiiv-mcp-server
cd beehiiv-mcp-server

# Create virtual environment and activate it
uv venv
source .venv/bin/activate

# Install dependencies
uv add "mcp[cli]" httpx python-dotenv
  1. Create a .env file in the project root:

BEEHIIV_API_KEY=your_api_key_here
BEEHIIV_PUBLICATION_ID=your_publication_id_here

Claude Desktop Configuration

Add the following to your Claude Desktop configuration file (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "beehiiv-mcp-server": {
      "command": "<ABSOLUTE_UV_PATH>",
      "args": [
        "run",
        "--with",
        "mcp[cli]",
        "mcp",
        "run",
        "<ABSOLUTE_SERVER_PATH>"
      ]
    }
  }
}

Replace:

  • <ABSOLUTE_UV_PATH> with the path to your uv executable

  • <ABSOLUTE_SERVER_PATH> with the absolute path to your beehiiv_server.py file

Available Tools

This MCP server currently exposes the following tools (more will be added):

list_publications

Lists all publications accessible with your API key.

list_posts

Lists the 5 most recent confirmed posts for a given publication.

list_posts(publication_id: str)

get_post

Retrieves detailed information about a specific post.

get_post(publication_id: str, post_id: str)

get_post_content

Retrieves full HTML content for a post

create_new_post

Creates new post on beehiiv platform (enterprise only)

How It Works

When you interact with this server through Claude Desktop:

  1. The client sends your question to Claude

  2. Claude analyzes the available Beehiiv tools and decides which one(s) to use

  3. The client executes the chosen tool(s) through this MCP server

  4. The results are sent back to Claude

  5. Claude formulates a natural language response

  6. The response is displayed to you

(video coming soon)

Troubleshooting

Server Not Showing Up in Claude

  1. Check your claude_desktop_config.json file syntax

  2. Ensure all paths are absolute, not relative

  3. Restart Claude Desktop

Viewing Logs

Check Claude's logs for MCP-related issues:

tail -n 20 -f ~/Library/Logs/Claude/mcp*.log

Logs are stored in:

  • ~/Library/Logs/Claude/mcp.log for general MCP connections

  • ~/Library/Logs/Claude/mcp-server-beehiiv-mcp-server.log for server-specific logs

Security

  • Never commit your .env file to version control

  • Keep your Beehiiv API key secure

  • Consider implementing rate limiting for API calls

Contributing

hmu on X (https://x.com/reymerekar7)

Available Tools

5 tools
create_new_postC
Create a new post using provided HTML content.

Args:
    publication_id: ID of the publication
    title: Title of the new post
    subtitle: Subtitle of the new post
    html_content: HTML content for the post

Inputs: html_content (required), publication_id (required), subtitle (required), title (required).

get_postC
Retrieve a single post by ID.

Args:
    publication_id: ID of the publication
    post_id:        ID of the post

Inputs: post_id (required), publication_id (required).

get_post_contentA
Retrieve a post's content as JSON to use as a template.

Args:
    publication_id: ID of the publication
    post_id: ID of the post

Returns:
    dict: JSON object containing post title, subtitle, and HTML content template

Inputs: post_id (required), publication_id (required).

list_postsB
List all posts for a given publication.

Args:
    publication_id: e.g. 'pub_00000000-0000-0000-0000-000000000000'

Inputs: publication_id (required).

list_publicationsB

List all publications accessible with this API key.

Inputs: no named parameters.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.3/5.0

    Scored across 5 tools

    Disambiguation3/5

    Most tools have distinct purposes, but get_post and get_post_content have overlapping functionality that could cause confusion. Both retrieve posts by ID, with get_post_content specifically extracting content as a template, but the distinction may not be clear to an agent without careful reading of descriptions.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern (create_new_post, get_post, get_post_content, list_posts, list_publications). The naming is predictable and readable throughout the set, with no deviations in style.

    Tool Count4/5

    With 5 tools, the count is reasonable for a Beehiiv MCP server focused on post and publication management. It covers core operations but feels slightly thin, as it lacks update or delete functionality for posts, which are common in such domains.

    Completeness3/5

    The toolset covers creation, retrieval, and listing for posts and publications, but has notable gaps. There are no tools for updating or deleting posts, which are essential for a full CRUD lifecycle, and no publication-specific management beyond listing, which could lead to agent workarounds.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers