npm package: @houtini/contentmarketingideas
Description: MCP server for Content Marketing Ideas — editorial briefs, SEO data, article generation, and corpus management
Latest version: 1.0.0

# Content Marketing Ideas MCP Server

An [MCP (Model Context Protocol)](https://modelcontextprotocol.io/) server for [Content Marketing Ideas](https://contentmarketingideas.co) -- the editorial copilot that monitors your content sources, generates strategic briefs, and produces voice-matched articles.

This server gives AI assistants (Claude, Cursor, Windsurf, etc.) access to your briefs, sources, articles, corpus, GSC data, and growth plans.

## Setup

### 1. Create an account

Sign up at [contentmarketingideas.co](https://contentmarketingideas.co).

### 2. Generate an API key

Go to **Dashboard > Account** and find the **API & MCP Server** card. Click **Generate API Key**. Copy the key -- it's only shown once.

### 3. Configure your MCP client

#### Claude Desktop / Claude Code

Add to your MCP settings (`claude_desktop_config.json` or `.mcp.json`):

```json
{
  "mcpServers": {
    "contentmarketingideas": {
      "command": "npx",
      "args": ["-y", "@houtini/contentmarketingideas"],
      "env": {
        "CMI_API_KEY": "cr_your_api_key_here"
      }
    }
  }
}
```

#### Cursor / Windsurf

Add to your MCP configuration:

```json
{
  "contentmarketingideas": {
    "command": "npx",
    "args": ["-y", "@houtini/contentmarketingideas"],
    "env": {
      "CMI_API_KEY": "cr_your_api_key_here"
    }
  }
}
```

## Environment variables

| Variable | Required | Description |
|----------|----------|-------------|
| `CMI_API_KEY` | Yes | Your API key (starts with `cr_`) |
| `CMI_API_URL` | No | API base URL (defaults to production) |

## Available tools

### Sources
| Tool | Description |
|------|-------------|
| `list_sources` | List content sources, optionally filtered by site |
| `get_source` | Get source details and item count |
| `add_source` | Add RSS, YouTube, Reddit, podcast, or news source |
| `update_source` | Rename or set keyword filters |
| `delete_source` | Remove a source |
| `detect_source` | Auto-detect source type from URL |

### Briefs
| Tool | Description |
|------|-------------|
| `list_briefs` | List editorial briefs with filters (site, status, signal type, search) |
| `get_brief` | Full brief detail: synthesis, enrichment, keywords, signals |
| `brief_feedback` | Submit feedback (thumbs_up, thumbs_down, made_this, already_covered) |
| `delete_brief` | Delete a brief |
| `generate_draft` | Generate a voice-matched draft from a brief |
| `get_draft` | Get the generated draft text |

### Articles
| Tool | Description |
|------|-------------|
| `list_articles` | List articles for a site |
| `get_article` | Full article with markdown, outline, research |
| `create_article` | Create from a brief or custom prompt |
| `update_article` | Edit title, markdown, keywords, notes |
| `delete_article` | Delete an article |
| `generate_article` | Queue for AI generation |
| `regenerate_article` | Regenerate a failed/completed article |
| `publish_article` | Publish to WordPress |
| `get_publish_status` | Check WordPress publish status |
| `get_article_provenance` | Source attribution and entity chain |

### WordPress
| Tool | Description |
|------|-------------|
| `get_wordpress_status` | Check connection status |
| `save_wordpress_credentials` | Connect WordPress |
| `delete_wordpress_credentials` | Disconnect WordPress |

### RAG Corpus
| Tool | Description |
|------|-------------|
| `list_corpus_documents` | List indexed documents |
| `delete_corpus_document` | Remove a document |
| `search_rag` | Semantic + keyword hybrid search |
| `rag_stats` | Corpus statistics |
| `populate_corpus` | Index URLs into corpus |
| `populate_site` | Index a site via sitemap |
| `populate_youtube` | Index YouTube channel transcripts |
| `get_coverage` | Brief-vs-corpus coverage report |
| `get_coverage_explore` | Topic Explorer data with clusters |

### Growth & GSC
| Tool | Description |
|------|-------------|
| `get_growth_plan` | Get cached growth plan |
| `generate_growth_plan` | Generate new growth plan |
| `gsc_sync` | Sync Google Search Console data |
| `gsc_summary` | 28-day performance summary |
| `gsc_queries` | Top queries with metrics |
| `gsc_opportunities` | High-impression low-position queries |
| `gsc_daily_summary` | Daily metrics for trends |
| `gsc_declining_queries` | Queries losing performance |
| `gsc_growing_queries` | Queries gaining performance |
| `gsc_declining_pages` | Pages losing performance |
| `gsc_growing_pages` | Pages gaining performance |

### Account & Sites
| Tool | Description |
|------|-------------|
| `get_account` | Account details, plan, usage, limits |
| `list_sites` | Your sites with counts |
| `create_site` | Add a new site |
| `update_site` | Update site name/URL |
| `delete_site` | Remove a site |
| `update_site_schedule` | Set delivery frequency and hour |
| `list_account_emails` | Delivery email recipients |
| `add_account_email` | Add email recipient |
| `delete_account_email` | Remove email recipient |
| `get_profile` | Site voice profile |
| `trigger_profile` | Generate/refresh site profile |
| `trigger_ingestion` | Run source ingestion |
| `trigger_synthesis` | Generate briefs from content |
| `list_deliveries` | Email delivery history |

## Security

Your API key provides access only to your own account data. All requests are authenticated server-side -- no user ID is needed or accepted. The API enforces ownership checks on every resource access.

## License

MIT