Beehiiv MCP Server
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
설치
아직
uv설치하지 않았다면 설치하세요:
지엑스피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프로젝트 루트에
.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
특정 게시물에 대한 자세한 정보를 검색합니다.
get_post(publication_id: str, post_id: str)게시물_내용_가져오기
게시물의 전체 HTML 콘텐츠를 검색합니다.
새 게시물 만들기
beehiiv 플랫폼에 새 게시물을 작성합니다(Enterprise 전용)
작동 원리
Claude Desktop을 통해 이 서버와 상호 작용하는 경우:
클라이언트가 귀하의 질문을 Claude에게 보냅니다.
Claude는 사용 가능한 Beehiiv 도구를 분석하고 어떤 도구를 사용할지 결정합니다.
클라이언트는 이 MCP 서버를 통해 선택한 도구를 실행합니다.
결과는 Claude에게 다시 전송됩니다.
Claude는 자연어 응답을 공식화합니다.
응답이 표시됩니다
(곧 영상이 공개됩니다)
문제 해결
Claude에 서버가 표시되지 않음
claude_desktop_config.json파일 구문을 확인하세요.모든 경로가 상대 경로가 아닌 절대 경로인지 확인하세요.
Claude Desktop을 다시 시작하세요
로그 보기
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 호출에 대한 속도 제한 구현을 고려하세요
기여하다
X의 hmu ( https://x.com/reymerekar7 )
Available Tools
5 toolscreate_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
| Name | Required | Description | Default |
|---|---|---|---|
| html_content | Yes | ||
| publication_id | Yes | ||
| subtitle | Yes | ||
| title | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| post_id | Yes | ||
| publication_id | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| post_id | Yes | ||
| publication_id | Yes |
TDQS
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.
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.
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.
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.
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.
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'
| Name | Required | Description | Default |
|---|---|---|---|
| publication_id | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
5 tool updates
v1.0.0- First observed
create_new_post - First observed
get_post - First observed
get_post_content - First observed
list_posts - First observed
list_publications
TDQS
Scored across 5 tools
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.
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.
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.
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
Related MCP Connectors
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
A Model Context Protocol server for Wix AI tools
The official Model Context Protocol server for Ambee. It gives any MCP-compatible AI assistant — Claude, ChatGPT, Cursor, VS Code, Ollama, and more direct access to live air quality, pollen, and weather data. To get started, including information on signing up and obtaining your Ambee key, check out the Ambee documentation on https://docs.ambeedata.com
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceThis server implements the Model Context Protocol to facilitate meaningful interaction and understanding development between humans and AI through structured tools and progressive interaction patterns.57-
- FlicenseNot gradedqualityDmaintenanceA Python server implementing the Model Context Protocol that exposes tools for querying external APIs, compatible with Claude Desktop and ChatGPT Desktop.-
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables AI assistants to programmatically interact with the Hashnode API for creating, updating, searching, and retrieving blog content.7MIT
- AlicenseAqualityDmaintenanceA Model Context Protocol server providing tools for DB queries, API calls, file I/O, and text transformations, enabling AI agents like Claude to perform real-world actions.10MIT