Skip to main content
Glama

画像

Beehiiv MCP サーバー

Beehiiv API v2と連携するためのツールを提供するモデルコンテキストプロトコル(MCP)サーバー。このサーバーにより、大規模言語モデル(LLM)は標準化されたツールを通じてBeehiivの出版物や投稿と連携できるようになります。

前提条件

  • Python 3.10以上

  • uvパッケージマネージャー

  • APIアクセス可能なBeehiivアカウント

  • Claude Desktop(または他のMCP互換クライアント)

Related MCP server: MCP Python Server — API Wrapper

インストール

  1. まだインストールしていない場合は、 uvをインストールします。

curl -LsSf https://astral.sh/uv/install.sh | sh
  1. 最初から再構築する場合は、プロジェクトを作成して設定します。

# 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. プロジェクト ルートに.envファイルを作成します。

BEEHIIV_API_KEY=your_api_key_here
BEEHIIV_PUBLICATION_ID=your_publication_id_here

クロードデスクトップ構成

Claude Desktop 構成ファイル ( ~/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>"
      ]
    }
  }
}

交換する:

  • <ABSOLUTE_UV_PATH>はuv実行ファイルへのパスです

  • <ABSOLUTE_SERVER_PATH> 、 beehiiv_server.pyファイルへの絶対パスです。

利用可能なツール

この MCP サーバーは現在、次のツールを公開しています (今後さらに追加される予定です)。

出版物リスト

API キーでアクセスできるすべての出版物を一覧表示します。

リスト投稿

特定の出版物の最新の確認済み投稿 5 件を一覧表示します。

list_posts(publication_id: str)

取得投稿

特定の投稿に関する詳細情報を取得します。

get_post(publication_id: str, post_id: str)

get_post_content

投稿の完全なHTMLコンテンツを取得します

新しい投稿を作成

beehiiv プラットフォームに新しい投稿を作成します (エンタープライズのみ)

仕組み

Claude Desktop を通じてこのサーバーとやり取りする場合:

  1. クライアントがあなたの質問をクロードに送ります

  2. クロードは利用可能なBeehiivツールを分析し、どのツールを使用するかを決定します。

  3. クライアントは、このMCPサーバーを介して選択されたツールを実行します。

  4. 結果はクロードに送り返される

  5. クロードは自然言語で応答する

  6. 応答が表示されます

(ビデオは近日公開予定)

トラブルシューティング

クロードにサーバーが表示されない

  1. claude_desktop_config.jsonファイルの構文を確認してください

  2. すべてのパスが相対パスではなく絶対パスであることを確認する

  3. Claudeデスクトップを再起動します

ログの表示

MCP 関連の問題については、Claude のログを確認してください。

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

ログは次の場所に保存されます:

  • 一般的な MCP 接続については~/Library/Logs/Claude/mcp.log

  • サーバー固有のログについては、 ~/Library/Logs/Claude/mcp-server-beehiiv-mcp-server.log

安全

  • .envファイルをバージョン管理にコミットしないでください

  • Beehiiv APIキーを安全に保管してください

  • API呼び出しのレート制限の実装を検討する

貢献

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
ParametersJSON Schema
NameRequiredDescriptionDefault
html_contentYes
publication_idYes
subtitleYes
titleYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states it's a creation tool, implying mutation, but lacks details on permissions, side effects (e.g., whether the post is published immediately), error handling, or response format. This is a significant gap for a mutation tool without annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded with the main purpose in the first sentence. The parameter list is structured but could be more integrated; overall, it avoids unnecessary verbosity, though minor improvements in flow are possible.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a mutation tool with no annotations, no output schema, and 0% schema description coverage, the description is incomplete. It lacks crucial details like behavioral traits, return values, and error conditions, making it inadequate for safe and effective agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It lists all four parameters with brief explanations (e.g., 'ID of the publication'), adding basic meaning beyond the schema's titles. However, it doesn't provide deeper context like format constraints or examples, leaving some semantic gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Create a new post') and specifies the resource ('using provided HTML content'), making the purpose evident. However, it doesn't explicitly differentiate from sibling tools like 'get_post' or 'list_posts', which are read operations versus this creation tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a valid publication_id from 'list_publications'), exclusions, or comparisons to siblings like 'get_post' for retrieval, leaving the agent to infer usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_postC
Retrieve a single post by ID.

Args:
    publication_id: ID of the publication
    post_id:        ID of the post
ParametersJSON Schema
NameRequiredDescriptionDefault
post_idYes
publication_idYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states 'retrieve' (implying a read operation) but doesn't cover critical aspects like authentication needs, rate limits, error handling (e.g., what happens if IDs are invalid), or response format. For a tool with zero annotation coverage, this is a significant gap, scoring 2 for minimal transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded: the first sentence states the purpose clearly, followed by a structured 'Args' section. There's no wasted text, but the structure could be slightly improved by integrating the parameter explanations more seamlessly. Overall, it's efficient, earning a 4.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (a read operation with 2 required parameters), lack of annotations, and no output schema, the description is incomplete. It doesn't explain return values, error cases, or behavioral traits like idempotency. For a tool with no structured support, this leaves the agent under-informed, scoring 2 for inadequate completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It lists both parameters ('publication_id' and 'post_id') with brief explanations, adding meaning beyond the schema's basic types. However, it doesn't specify format (e.g., UUID, numeric), constraints, or examples, leaving gaps. This partial compensation justifies a baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Retrieve a single post by ID.' This specifies the verb ('retrieve') and resource ('post'), and distinguishes it from siblings like 'list_posts' (which retrieves multiple posts) and 'get_post_content' (which likely retrieves content details). However, it doesn't explicitly differentiate from 'create_new_post' or 'list_publications', keeping it at 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose 'get_post' over 'list_posts' (e.g., for a specific post vs. browsing) or 'get_post_content' (e.g., for metadata vs. full content). Without such context, the agent lacks explicit usage instructions, scoring 2 for no guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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
ParametersJSON Schema
NameRequiredDescriptionDefault
post_idYes
publication_idYes

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It mentions the tool retrieves content as JSON for template use, which implies a read-only operation, but doesn't disclose behavioral traits such as authentication needs, rate limits, error handling, or whether the retrieval is cached. For a tool with zero annotation coverage, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded: the first sentence states the core purpose, followed by structured sections for 'Args' and 'Returns'. Every sentence earns its place by providing essential information without redundancy, making it highly efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (2 parameters, no annotations, no output schema), the description is partially complete. It covers purpose, parameters, and return value, but lacks behavioral details (e.g., auth, errors) and doesn't fully explain the JSON structure beyond mentioning title, subtitle, and HTML content. Without an output schema, more detail on the return format would be beneficial for completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds meaning by explaining that 'publication_id' and 'post_id' are IDs for the publication and post, respectively, and clarifies their purpose in retrieving content. However, it doesn't provide details on format (e.g., string patterns) or examples, leaving some ambiguity. With 0% schema coverage and 2 parameters, this is above baseline but not fully comprehensive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Retrieve a post's content as JSON') and resource ('post'), distinguishing it from siblings like 'get_post' (likely metadata) and 'create_new_post' (creation). It explicitly mentions the output format ('JSON') and purpose ('to use as a template'), making the purpose highly specific and differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by specifying the output format ('JSON') and purpose ('as a template'), suggesting it's for template creation rather than general post retrieval. However, it doesn't explicitly state when to use this tool versus alternatives like 'get_post' or 'list_posts', nor does it mention any prerequisites or exclusions, leaving some ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_postsB
List all posts for a given publication.

Args:
    publication_id: e.g. 'pub_00000000-0000-0000-0000-000000000000'
ParametersJSON Schema
NameRequiredDescriptionDefault
publication_idYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states it's a list operation but doesn't mention whether it's read-only, paginated, rate-limited, or what permissions are required. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded, with the core purpose stated first followed by parameter details. Every sentence earns its place with no wasted words, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (1 parameter, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose and parameter but lacks details about output format, error handling, or behavioral traits that would make it more complete for agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaningful context for the single parameter by providing an example format ('pub_00000000-0000-0000-0000-000000000000'), which is valuable since schema description coverage is 0%. However, it doesn't explain where to find this ID or what happens if an invalid ID is provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('List') and resource ('posts for a given publication'), making it easy to understand what it does. However, it doesn't explicitly differentiate from sibling tools like 'list_publications' or 'get_post', which would be needed for a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'list_publications' or 'get_post'. It mentions the required parameter but offers no context about appropriate use cases, prerequisites, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_publicationsB

List all publications accessible with this API key.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a read-only operation by using 'List', but fails to detail important traits such as pagination, rate limits, error handling, or the format of returned data. This leaves significant gaps in understanding how the tool behaves beyond basic functionality.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence that directly states the tool's purpose without any unnecessary words or structural fluff. It is front-loaded and efficiently communicates the core functionality, making it easy to parse and understand quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is incomplete for a tool that likely returns a list of publications. It does not cover the return format, potential limitations (e.g., max results), or error conditions. For a listing tool with no structured support, more context is needed to fully guide usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, meaning no parameters are documented in the schema. The description does not add parameter details, which is acceptable here as there are no parameters to explain. It appropriately avoids redundancy, earning a baseline score for tools with zero parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List') and resource ('publications'), specifying that it retrieves all publications accessible with the API key. However, it does not distinguish this tool from sibling tools like 'list_posts', which might serve a similar listing function for different resources, leaving some ambiguity about differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides minimal guidance, stating it lists publications accessible with the API key, but offers no explicit advice on when to use this tool versus alternatives like 'list_posts'. There is no mention of prerequisites, exclusions, or specific contexts for usage, limiting its helpfulness for decision-making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

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

  1. 5 tool updatesv1.0.0
    • First observedcreate_new_post
    • First observedget_post
    • First observedget_post_content
    • First observedlist_posts
    • First observedlist_publications

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 issues

Related MCP Connectors

Related MCP Servers