npm package: @linwheel/mcp-server
Description: MCP server for LinWheel — AI-powered LinkedIn content engine. Draft, schedule, and publish posts from Claude Code.
Latest version: 0.1.0

<div align="center">

<img src="https://img.shields.io/badge/MCP-Model_Context_Protocol-5A67D8?style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0id2hpdGUiPjxwYXRoIGQ9Ik0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0tMiAxNWwtNS01IDEuNDEtMS40MUwxMCAxNC4xN2w3LjU5LTcuNTlMMTkgOGwtOSA5eiIvPjwvc3ZnPg==&logoColor=white" alt="MCP" />

# @linwheel/mcp-server

### Draft, schedule, and publish LinkedIn posts from Claude.

[![npm](https://img.shields.io/badge/npm-@linwheel/mcp--server-CB3837?style=for-the-badge&logo=npm&logoColor=white)](https://www.npmjs.com/package/@linwheel/mcp-server)
[![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?style=for-the-badge&logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge)](https://opensource.org/licenses/MIT)

**Your LinkedIn publishing workflow, inside your editor.**

[Quick Start](#-quick-start) · [Tools](#-tools) · [Configuration](#-configuration) · [Dashboard](https://www.linwheel.io/dashboard)

---

</div>

## The Problem

You write in your editor. You think in your editor. But to publish on LinkedIn, you context-switch to a browser, reformat everything, schedule manually, and hope you remembered to add that follow-up comment.

## The Solution

**LinWheel MCP** brings LinkedIn publishing into Claude Code. Draft a post, generate a carousel, schedule it for Tuesday at 9:45 AM, attach a follow-up comment — all without leaving your terminal.

> *"Draft a post about our new API design patterns. Schedule it for tomorrow at 10 AM. Add a carousel. Attach a comment with the docs link at T+30."*

One prompt. Four tools. Zero context switches.

---

## ⚡ Quick Start

### 1. Install

```bash
npx -y @linwheel/mcp-server
```

### 2. Get an API key

1. **Sign up** at [linwheel.io/login](https://www.linwheel.io/login)
2. Go to **[Settings](https://www.linwheel.io/settings)**
3. Click **Generate API Key** — copy the `lw_sk_...` key (shown once)

### 3. Configure Claude Code

```bash
claude mcp add linwheel -- npx -y @linwheel/mcp-server
```

Then add your key to `.mcp.json`:

```json
{
  "mcpServers": {
    "linwheel": {
      "command": "npx",
      "args": ["-y", "@linwheel/mcp-server"],
      "env": {
        "LINWHEEL_API_KEY": "lw_sk_your_key_here"
      }
    }
  }
}
```

### 4. Verify

Restart Claude Code, then:

> *"List my LinWheel posts"*

If it works, you're in.

---

## 🛠️ Tools

22 tools across 5 categories. Claude picks the right one — just describe what you want.

### Content Creation

| Tool | What it does |
|------|-------------|
| `linwheel_draft` | Create a post draft |
| `linwheel_analyze` | Score text for LinkedIn potential |
| `linwheel_reshape` | Reshape content through 7 angles (contrarian, field note, etc.) |
| `linwheel_refine` | Polish text with light / medium / heavy intensity |
| `linwheel_split` | Break long content into a post series |
| `linwheel_bundle` | Create post + image + carousel atomically |

### Publishing

| Tool | What it does |
|------|-------------|
| `linwheel_posts_list` | List drafts with filters |
| `linwheel_post_get` | Get full post details |
| `linwheel_post_update` | Edit post text and settings |
| `linwheel_post_approve` | Approve for auto-publish |
| `linwheel_post_schedule` | Set publication time |

### Visual Content

| Tool | What it does |
|------|-------------|
| `linwheel_post_image` | Generate cover image |
| `linwheel_post_carousel` | Create typographic carousel slides + PDF |
| `linwheel_post_carousel_companion` | Auto-generate carousel from post text |
| `linwheel_post_carousel_status` | Check carousel state |
| `linwheel_post_carousel_schedule` | Schedule carousel publication |

### Engagement

| Tool | What it does |
|------|-------------|
| `linwheel_post_comment` | Attach auto-firing follow-up comment |
| `linwheel_post_comments_list` | List queued comments |
| `linwheel_post_comment_update` | Edit a scheduled comment |
| `linwheel_post_comment_delete` | Remove a scheduled comment |

### Configuration

| Tool | What it does |
|------|-------------|
| `linwheel_voice_profiles` | Manage writing voice profiles |
| `linwheel_brand_styles` | Manage brand style templates |

---

## 🔧 Configuration

### Environment Variables

| Variable | Required | Default | Description |
|----------|:--------:|---------|-------------|
| `LINWHEEL_API_KEY` | ✅ | — | Your API key (`lw_sk_...`) |
| `LINWHEEL_BASE_URL` | | `https://www.linwheel.io` | API endpoint |
| `LINWHEEL_SIGNING_SECRET` | | — | HMAC signing secret (optional) |
| `LINWHEEL_TIMEOUT_MS` | | `60000` | Request timeout in ms |

### Claude Desktop

Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):

```json
{
  "mcpServers": {
    "linwheel": {
      "command": "npx",
      "args": ["-y", "@linwheel/mcp-server"],
      "env": {
        "LINWHEEL_API_KEY": "lw_sk_your_key_here"
      }
    }
  }
}
```

---

## 🚀 No API Key?

Start without a key and the server exposes a single `linwheel_setup` tool that walks you through setup. Just ask Claude:

> *"Help me set up LinWheel"*

---

## 📋 Example Workflows

**Daily publishing habit:**
> *"Draft a field note about today's debugging session. Schedule for tomorrow at 9 AM ET. Generate a carousel. Add a comment with the repo link at T+30."*

**Content planning:**
> *"Show me all scheduled posts for next week. Move the Tuesday post to Thursday. Add a contrarian follow-up for Wednesday."*

**Batch creation:**
> *"Take this blog post and reshape it into 3 LinkedIn angles. Draft all three. Schedule them for Mon/Wed/Fri at 10 AM."*

---

## 🏗️ Architecture

```
┌─────────────────┐     ┌──────────────────┐     ┌─────────────────┐
│   Claude Code   │────▶│  MCP Server      │────▶│  LinWheel API   │
│   (your editor) │◀────│  (stdio)         │◀────│  (linwheel.io)  │
└─────────────────┘     └──────────────────┘     └────────┬────────┘
                                                          │
                                                 ┌────────▼────────┐
                                                 │    LinkedIn     │
                                                 │    (publish)    │
                                                 └─────────────────┘
```

The MCP server is a thin client. All heavy lifting (LLM calls, image generation, PDF compilation, LinkedIn API) happens server-side on LinWheel.

---

## 📖 Links

| Resource | URL |
|----------|-----|
| **Dashboard** | [linwheel.io/dashboard](https://www.linwheel.io/dashboard) |
| **Full Setup Guide** | [docs/mcp-setup.md](https://github.com/Peleke/linwheel/blob/main/docs/mcp-setup.md) |
| **Agent API Reference** | [docs/agent-api-setup.md](https://github.com/Peleke/linwheel/blob/main/docs/agent-api-setup.md) |
| **GitHub** | [github.com/Peleke/linwheel](https://github.com/Peleke/linwheel) |

---

<div align="center">

Built with [Model Context Protocol](https://modelcontextprotocol.io) · Powered by [Claude](https://claude.ai)

</div>