> ## Documentation Index
> Fetch the complete documentation index at: https://docs.shipstar.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# MCP Overview

> Use Shipstar's published content directly from LLM agents via the Model Context Protocol

Shipstar exposes its content endpoints as [Model Context Protocol](https://modelcontextprotocol.io) (MCP) tools so LLM agents — Claude Desktop, Cursor, Windsurf, custom agents, and anything else that speaks MCP — can read your published changelogs, blog posts, and knowledge base articles natively, without you having to build a REST client.

Same data, same guarantees (only published, completed content is returned), same API tokens that protect the V1 REST API — but surfaced as typed tools the model can call directly.

## Endpoint

The MCP server is mounted on the main Shipstar backend using the **Streamable HTTP** transport.

```
POST https://api.shipstar.ai/mcp
```

## Authentication

Every request to `/mcp` must include a valid Shipstar API token in the `Authorization` header — the same tokens you use with the [V1 REST API](/api-reference/authentication). Create one in the dashboard at **Settings → API Tokens** (`/dashboard/console`).

```
Authorization: Bearer sk_live_...
```

Requests without a token, or with an invalid/expired token, return `401 Unauthorized`.

## Connecting from Claude Desktop

Add the server to your `claude_desktop_config.json`, including the bearer token as a custom header:

```json theme={null}
{
  "mcpServers": {
    "shipstar": {
      "url": "https://api.shipstar.ai/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_TOKEN"
      }
    }
  }
}
```

Restart Claude Desktop and the six Shipstar tools will be available in any chat.

## Connecting from Cursor / Windsurf

Both editors accept the same MCP server configuration. Add an entry with the URL above and the tools will appear in the agent sidebar.

## Available Tools

### Generation (kick off content from commits)

| Tool                                                                   | Description                                          |
| ---------------------------------------------------------------------- | ---------------------------------------------------- |
| [`generate_changelog`](/mcp/generation/generate-changelog)             | Generate a public changelog from recent commits      |
| [`generate_blog_post`](/mcp/generation/generate-blog-post)             | Generate a blog post (optionally steered by an idea) |
| [`generate_blog_post_ideas`](/mcp/generation/generate-blog-post-ideas) | Brainstorm blog post angles (synchronous)            |
| [`generate_feature_page`](/mcp/generation/generate-feature-page)       | Generate a marketing feature landing page            |
| [`generate_kb_articles`](/mcp/generation/generate-kb-articles)         | Generate a set of knowledge base articles            |

Generation tools (except `generate_blog_post_ideas`) return a pending `content_id` and run in the background. Poll the read tools below — or the V1 REST API — for the finished output.

### Read (fetch published content)

| Tool                                                   | Description                                    |
| ------------------------------------------------------ | ---------------------------------------------- |
| [`list_changelogs`](/mcp/changelog/list-changelogs)    | List all published changelogs, newest first    |
| [`get_changelog`](/mcp/changelog/get-changelog)        | Fetch a single changelog by slug               |
| [`list_blog_posts`](/mcp/blog/list-blog-posts)         | List all published blog posts, newest first    |
| [`get_blog_post`](/mcp/blog/get-blog-post)             | Fetch a single blog post by slug               |
| [`list_kb_article_sets`](/mcp/kb/list-kb-article-sets) | List all published knowledge base article sets |
| [`get_kb_article_set`](/mcp/kb/get-kb-article-set)     | Fetch a single KB article set by slug          |

## Use Cases

<CardGroup cols={2}>
  <Card title="Release-aware support bots" icon="headset">
    Point a support agent at `list_changelogs` / `get_changelog` so it can answer "what's new this week?" and cite the exact release that shipped a feature — without you having to copy release notes into a knowledge base.
  </Card>

  <Card title="Docs-grounded coding agents" icon="code">
    Let a coding agent (Cursor, Claude Code, Windsurf) pull your latest blog walkthroughs and KB articles on demand. The agent grounds its answers in your published guidance instead of hallucinating APIs.
  </Card>

  <Card title="Marketing copy research" icon="pen-nib">
    When drafting landing pages, ads, or email campaigns, have Claude fetch recent changelogs and blog posts to pull accurate product details, quotes, and screenshots from material you already shipped.
  </Card>

  <Card title="Investor / exec updates" icon="chart-line">
    Ask an agent to summarise the last N changelogs into a weekly or monthly update. The tool output is structured, so the model doesn't have to scrape your website.
  </Card>

  <Card title="Internal knowledge lookups" icon="book">
    Expose `list_kb_article_sets` / `get_kb_article_set` to an internal agent so employees can ask "how do I X?" in Slack and get answers drawn from your published KB.
  </Card>

  <Card title="Cross-tool content reuse" icon="arrows-rotate">
    Any agent framework that speaks MCP (LangGraph, Agent SDK, Mastra, custom) can pull Shipstar content as a read-only data source without you writing a bespoke REST client.
  </Card>
</CardGroup>

## How it works under the hood

The MCP tools call directly into the same `app.services.content` layer that powers the V1 REST endpoints. That means:

* **One source of truth.** Any bug fix or behaviour change in the content service automatically flows to both transports.
* **Only published content is returned.** Drafts, pending items, and wrong-type rows are filtered out at the service layer.
* **Graceful skipping of invalid data.** List endpoints skip rows whose stored JSON is malformed rather than failing the whole call.

If you need finer control (pagination, RSS feeds, custom filtering) or you're building a non-agent integration, use the [V1 REST API](/api-reference/overview) directly.
