MCP Server
The Plain MCP server at https://mcp.plain.com/mcp provides AI tools access to your Plain workspace. You will authenticate it via the same account you use to access the web app, so it will have the same context as your user.
Setup
ChatGPT
To use the Plain MCP in ChatGPT you will have to add a "Custom App".
Navigate to "Settings" -> "Apps"
At the bottom next to "Advanced Settings" select "Create app"
You should see a form asking for details about your app now. The only required fields are the "Name" and "MCP Server URL". For the name enter "Plain" and the URL is
https://mcp.plain.com/mcp.Click "Create"
If you don't see "Advanced Settings" in the "Apps" settings menu, you might need to reach out to your administrator to enable adding "Custom Apps" for your team.
Cursor
You can add the Plain MCP to Cursor via your Cursor config at ~/.cursor/mcp.json
{ "mcpServers": { "plain": { "type": "remote", "url": "https://mcp.plain.com/mcp" } } }
Then, navigate to "Cursor Settings" -> "Tools & MCP" and click "Connect" next to the Plain MCP to authenticate.
Claude.ai
Navigate to "Customize" → "Connectors"
Click the ➕ icon, then choose "Add custom connector"
Add a custom connector named "Plain" with the Remote MCP server URL
https://mcp.plain.com/mcpClick the "Connect" button next to the newly created Plain connector to authenticate.
If you're on a Claude Team plan, you may need to reach out to your administrator to add this custom connector for you.
Claude Code
Adding the Plain MCP to claude-code can be done via the mcp-remote helper package which involves adding the following to your ~/.claude.json configuration.
"mcpServers": { "plain": { "command": "npx", "args": ["-y", "mcp-remote", "https://mcp.plain.com/mcp"], "enabled": true } }
Unfortunately claude-code does not support refreshing OAuth tokens yet. A workaround until that is implemented is to use the mcp-remote npm package.
Next time you start claude-code, it will launch a browser window asking you to authenticate with your Plain account and select the workspace you'd like to connect. Run the /mcp command and select the plain MCP to see more details.
Authentication
Plain MCP uses OAuth to allow your MCP server connection to share the same context as your normal web app user. No additional managing of permissions required. This means replies to threads will appear as though they come from your user.
After successfully authenticating, your client should receive both an accessToken as well as a refreshToken. It is the client's responsibility to do the actual refreshing. Most agentic coding applications support this now, but we have had issues with claude-code in particular. That is why we recommend using the 'mcp-remote' package and setup detailed above, instead of passing only the URL as a "remote" mcp server in claude's configuration.
Available tools
Your MCP client will be able to do all of the following via the Plain MCP Server:
Fetch My Assigned Threads: List threads assigned to a specific user (active by default).
Reply To Thread: Send a reply to a thread (email, Slack, or form-origin thread).
Add Labels: Add selected labels to a thread.
Assign Thread: Assign a thread to a user, machine user, or yourself.
Change Thread Priority: Set a thread priority (urgent, high, normal, or low).
Create Note: Add an internal agent-only note to a customer or thread.
Fetch Customer Details: Get full profile details for a specific customer.
Fetch Customers: List customers with pagination (excluding spam by default).
Fetch Customer Threads: List threads for a specific customer.
Fetch Labels: List all labels available for use with other queries.
Fetch My User: Get the currently authenticated user profile.
Fetch My Workspace: Get the currently authenticated workspace details.
Fetch Thread Details: Get full thread details plus timeline entries.
Fetch Threads: List threads with flexible filters and pagination.
Fetch User By Email: Find a Plain user by email address.
Mark Thread As Done: Mark a thread as resolved/done.
Mark Thread As Todo: Reopen or set a thread back to active/todo.
Search Customers: Search customers by name, email, or external ID.
Search Threads: Search threads by text with optional filters.
Snooze Thread: Snooze a thread until later with a reason/duration.
Unassign Thread: Remove the current assignee from a thread.
Fetch Tenants: List tenants with pagination.
Fetch Tenant Details: Get full details for a specific tenant, including tenant fields.
Search Tenants: Search tenants by name or external ID.
Upsert Tenant: Create a new tenant or update an existing one.
Help Center
Get Help Centers: List help centers with pagination so users can select a help-center ID.
Get Help Center Articles: List articles for a specific help center with pagination.
Get Help Center Article: Fetch full details for a specific help-center article by ID.
Get Help Center Article By Slug: Fetch full details for a specific help-center article by slug.
Upsert Help Center Article: Create a new help-center article or update an existing one.
Use cases
Automate end-of-day queue handoff: "Summarize all in-progress threads with latest timeline context, reassign to the on-call team with priority labels, and post a handoff brief to Slack."
Seamless shift transitions with zero context loss.
Keep your help center in sync with support patterns: "Identify the top recurring thread topics this week, draft or update help center articles to cover gaps, and flag outdated articles for review."
Documentation that evolves with real customer pain points.
Detect churn-risk accounts proactively: “Find accounts with rising thread volume + repeated unresolved issues; create follow-up tasks and notify owners.”
Earlier intervention before escalations.