Connect ContentIn to Claude, ChatGPT, Cursor and your other AI tools

A two-minute setup guide for the ContentIn MCP server. Paste one URL into Claude.ai, Claude Desktop, Claude Code, ChatGPT, Cursor or VS Code, sign in with ContentIn, and your assistant can write in your voice, pull your analytics, schedule and publish — without leaving the conversation. No key to copy.

The MCP server is part of the ContentIn Growth and Pro plans. Everything below assumes you have a Growth or Pro account.

1. Before you start

Two things need to be in place. Both live inside ContentIn.

  1. 1

    A ContentIn Growth or Pro account

    The MCP server is included from the Growth plan; the list_leads and list_my_comments tools need Pro. Every tool checks your plan live on each call, so an account that drops below Growth loses access straight away, with nothing to reconnect or rotate.

  2. 2

    A connected LinkedIn profile

    Publishing, scheduling and analytics all run through the LinkedIn account connected to the ContentIn profile you pick when you connect. Connect it in ContentIn before you start, or the write tools have nowhere to publish and analytics will come back empty.

2. Add the server to your client

Connect with one click

One remote server, the same URL for every client. There's no key to copy and no header to set: you paste the URL, sign in with ContentIn, and you're connected.

Server URL
https://mcp.contentin.io/mcp-server
Transport
Streamable HTTP
Sign-in
ContentIn (OAuth), no key needed
Permissions
read, write, publish

What happens when you connect

  1. Your client opens a ContentIn sign-in page in your browser.
  2. You log in (or are already logged in) and pick which ContentIn profile this connection acts as.
  3. You see what the app asks for and approve. read lets it see your posts, analytics, comments and leads; write lets it draft, save ideas and schedule. publish is asked for separately, the first time the client tries to publish a post.
  4. You're sent back to your client and the tools are ready.

Claude.ai (browser)

In Claude.ai, open Settings → Connectors → Add custom connector, paste the URL below and leave the advanced settings empty. Click Connect, sign in with ContentIn, pick your profile and approve.

https://mcp.contentin.io/mcp-server

Copy it exactly. The path is /mcp-server, not /mcp, and there's nothing to add after it.

Added the connector earlier with a key in the URL? It keeps working until you remove it and reconnect with the plain URL above.

Claude Desktop

Same as Claude.ai: open Settings → Connectors → Add custom connector, paste https://mcp.contentin.io/mcp-server, click Connect and sign in with ContentIn. A connector you add on Claude.ai shows up in Claude Desktop too, so if you've done it once, you're done. No config file to edit.

Claude Code

Add the server with one command in your terminal:

claude mcp add --transport http contentin https://mcp.contentin.io/mcp-server

Then start Claude Code, run /mcp, select contentin and choose Authenticate. Your browser opens the ContentIn sign-in page; approve, and contentin shows as connected with its tools.

ChatGPT

ChatGPT connects to custom MCP servers in developer mode. Turn on developer mode in ChatGPT's settings under Apps, then create a new app or connector, paste https://mcp.contentin.io/mcp-server as the server URL and choose OAuth as the authentication. ChatGPT sends you to the ContentIn sign-in page; approve, and the tools are available in your chats.

Cursor

Add the entry below to ~/.cursor/mcp.json to make it available everywhere, or to .cursor/mcp.json inside a project to scope it to that project. Just the URL, no headers.

{
  "mcpServers": {
    "contentin": {
      "url": "https://mcp.contentin.io/mcp-server"
    }
  }
}

Open Cursor's MCP settings: the contentin server asks you to sign in. Click it, approve on the ContentIn page, and the server shows as connected.

VS Code

Add the server to .vscode/mcp.json in your workspace (or run MCP: Add Server from the command palette and paste the URL):

{
  "servers": {
    "contentin": {
      "type": "http",
      "url": "https://mcp.contentin.io/mcp-server"
    }
  }
}

Start the server when VS Code offers to. It asks to sign in with ContentIn; approve, and the tools are available to Copilot's agent mode.

Any other MCP client

ContentIn speaks the Model Context Protocol over Streamable HTTP, with standard MCP OAuth sign-in. Point any compliant client at https://mcp.contentin.io/mcp-server and it discovers the ContentIn sign-in on its own. There's nothing to install — no local process, no bridge, no plugin per app. If the client can't open a browser, use an API key instead.

Advanced: API keys for CLIs and agents

Scripts, CLIs and headless agents that can't open a browser to sign in can use an API key instead. The key goes in the X-MCP-Key header on every request.

To create one, open app.contentin.io/profiles, then in the Connections tab find "Connect AI clients" under your connected LinkedIn profile and create a key. It starts with cimcp_ and is scoped to a single profile. You can hold up to five active keys per profile and revoke any of them at any time.

Auth header
X-MCP-Key: YOUR_KEY
Key format
cimcp_…

Claude Code with a key:

claude mcp add --transport http contentin https://mcp.contentin.io/mcp-server --header "X-MCP-Key: YOUR_KEY"

Any client that takes a JSON config with headers:

{
  "mcpServers": {
    "contentin": {
      "type": "http",
      "url": "https://mcp.contentin.io/mcp-server",
      "headers": {
        "X-MCP-Key": "YOUR_KEY"
      }
    }
  }
}

Your key is shown once

When you create an MCP key, ContentIn shows it a single time. Copy it straight into your client config or a password manager. Treat it like a password: anyone holding it can act on that profile. If you lose it or suspect it leaked, revoke it from the same Connections tab and create a new one. Revoking takes effect immediately.

Keys only go in the header. Putting a key in the URL is no longer documented, because credentials in URLs end up in logs and browser history; connectors already set up that way keep working until you reconnect.

3. What you can do

Eleven tools. Your assistant picks the right one from what you ask — you never call them by name.

list_posts

See your posts

Drafts, scheduled posts, published posts and saved ideas — filtered by status, date or a search term.

get_post_analytics

Pull post analytics

Impressions, members reached, reactions, comments, shares and engagement rate for a published post.

list_my_comments

Review the comments you left

The comments you wrote on other people's posts, newest first — with the comment's URN and a direct link, the likes and replies it got, and the post it sits under with its author. Filter by date range or a search term, up to 100 at a time. Read from a daily sync, so the last day can still be missing; history starts when your profile became a paying account with a LinkedIn URL on file. Who reacted to a comment isn't available — only the counts.

list_leads

See who engaged with you

Everyone who reacted to, commented on or shared your own posts: name, headline, profile URL, ContentIn's ICP fit score, lead status, their recent comments and the posts that pulled them in. Filter by lead status, minimum score or last interaction, sort by any of the three, up to 100 at a time. A single reaction is enough to create a lead; an unscored lead means ContentIn hasn't scored it yet, not that they're a poor fit.

write_post_in_my_voice

Write in your voice

Brain-dump the raw material and get back a draft built on the voice model trained on your own posts.

repurpose_post

Repurpose something that worked

Take a post that landed and rework it from a fresh angle instead of repeating yourself.

generate_ideas

Generate ideas

Post ideas drawn from your topics, your audience and what has already resonated for you.

capture_substance

Capture stories and ideas

Save a story, an opinion or a number from any conversation into your substance bank, so future drafts inherit it.

attach_images

Attach images to a post

Add up to 5 images to a draft — pass a public image URL or the file itself — then publish or schedule it as usual. JPG, PNG or WEBP, 8 MB each; one image goes out as a single image, two or more as a LinkedIn multi-image post. GIFs, video and PDFs aren't supported. Fair use: 30 images an hour and 100 a day per key.

schedule_post

Schedule a post

Queue a post for a specific time. Shows you the exact text and waits for your confirmation first.

publish_post

Publish to LinkedIn

Publish immediately. Shows you the exact text and waits for your confirmation — always.

Prompts to start with

Paste any of these into your client once the server is connected.

  • “What have I got scheduled for next week, and what did my last three published posts do?”
  • “I ran a workshop today and two people asked the same question about pricing. Write me a post about it in my voice.”
  • “Save this for later: our churn dropped from 6% to 3.4% after we moved onboarding to a live call.”
  • “Give me five post ideas based on the topics that performed best for me this month.”
  • “Take my best-performing post from the last 90 days and repurpose it from a different angle, then schedule it for Tuesday at 9am CET.”
  • “Attach these two screenshots to the post you just drafted, then schedule it for Tuesday 9am.”
  • “Who engaged with my posts this month, sorted by ICP fit, and which post pulled them in?”
  • “Pull the comments I left last week so I can follow up on the ones that got replies.”

4. What the server will and won't do

Nothing is published or scheduled without your confirmation

Both write tools are two-step by design. Your assistant calls the tool once and gets back the exact text plus a short-lived confirmation token; it has to show you that text and get your explicit go-ahead before the second call actually does anything. The token expires after five minutes, works once, and stops working if the post changed in between — so an assistant can't quietly queue something behind your back.

Every connection is scoped to one profile, and revocable

Each connected app (and each API key) acts for one ContentIn profile and carries no access to anything else on your account. Your LinkedIn password is never involved. Publishing is a separate permission your client asks for the first time it publishes. Revoke a connection or key from the Connections tab on the Profiles page at any time and it stops working immediately.

There's a daily call limit

Each connection has a daily ceiling on tool calls, which resets at 00:00 UTC. It's generous enough for normal work and exists to stop a runaway assistant from looping through your quota. If you hit it, the tools tell you so rather than failing silently.

Your plan is checked on every call

The server re-reads your plan on each request rather than trusting a snapshot from when you connected. That means access is always accurate — and if you upgrade, the tools start working without you doing anything.

Privacy

A connected app can only reach the one ContentIn profile you picked when you approved it: that profile's posts, drafts, ideas, analytics, comments and leads, within the permissions you granted. It can't see your other profiles, your billing details or your LinkedIn password. What the app does with the data it reads is governed by that app's own terms. You can see every connected app and revoke its access at any time in ContentIn under Profiles → Connections; revoking takes effect immediately. For how ContentIn handles your data, read our privacy policy.

5. Troubleshooting

The ContentIn sign-in page doesn't open
Check the URL is exactly https://mcp.contentin.io/mcp-server, with no trailing slash and nothing after it. Some clients only start the sign-in when you trigger it: in Claude Code run /mcp, select contentin and choose Authenticate; in Cursor and VS Code use the sign-in prompt on the server entry. If a pop-up blocker is on, allow pop-ups for your client and try again.
I connected the wrong profile
Revoke the connection in ContentIn under Profiles → Connections, then reconnect from your client and pick the right profile on the sign-in page. To work with two profiles, add the server twice under different names and approve each one for a different profile.
My client asks me to approve again when it publishes
That's expected the first time. Publishing to LinkedIn is a separate permission: your client asks for it on the first publish, you approve it on the ContentIn page, and it isn't asked again for that connection.
"Invalid key" when using an API key
Re-copy the key in ContentIn: open app.contentin.io/profiles, switch to the Connections tab and find "Connect AI clients" under your connected LinkedIn profile. The most common cause is a truncated paste or a stray space at the start or end of the header value. Keys start with cimcp_. If you no longer have the key, create a new one (the original is only ever shown once) and revoke the old one while you're there.
"Plan too low" or "Requires Pro" when the tools are called
The MCP server is included from the ContentIn Growth plan, and the server checks your plan live on every call. list_leads and list_my_comments need Pro and return an upgrade hint on Growth; every other tool works on Growth. If you've just upgraded, the tools start working on the next call — no need to reconnect or restart your client. If you're not on Growth yet, start a trial and the same connection works the moment the plan is active.
I hit the rate limit
Each connection has a daily call ceiling that resets at 00:00 UTC. Wait for the reset, or spread the work out. If an assistant burned through it in a loop, it's worth checking what it was retrying — the limit exists precisely to make that visible.
The server connects but there are no posts or analytics
Check that the profile you picked when you connected has a connected LinkedIn account, and that you have posts in ContentIn. Analytics are collected on a schedule and only for posts published through a connected LinkedIn account, so a post published a few minutes ago will honestly report that it hasn't been measured yet rather than showing zeroes.
My client can't see the server at all
Quit and reopen the client after editing its config — some clients only read MCP configuration at startup. Then check the JSON is valid (a trailing comma is the usual culprit) and that the URL is exactly https://mcp.contentin.io/mcp-server with no trailing slash. In Claude Code, run /mcp to see the connection status.
Scheduling was rejected because of the time
Times need an explicit UTC offset — 2026-08-04T09:00:00+02:00 or 2026-08-04T07:00:00Z. A bare local time is refused on purpose, because ContentIn can't know your timezone and guessing would publish hours off. Tell your assistant your timezone once and it will handle the format from there.

Not on Growth yet?

The MCP server is included from the ContentIn Growth plan — nothing to buy separately. Start a trial, connect your AI client with one click, and your assistant is writing in your voice a couple of minutes later.

New to the Model Context Protocol? Read the LinkedIn MCP definition in our glossary, or try the free AI LinkedIn post generator first — no login required.