Modem MCP server · Beta

The MCP server for customer feedback.

Connect Claude Code, Cursor, ChatGPT, or any MCP-compatible client to Modem and ask about your users in plain language (bug reports, feature requests, complaints) without leaving the tool you work in.

SuperwhisperKernelSentryZumperopencodeVLT

See it on your own data.

Pick a time on the next step. Or start free with GitHub.

Setup

Connect your client to mcp.modem.dev

One endpoint, https://mcp.modem.dev/mcp, over Streamable HTTP. Authorization is OAuth, so there is no API key to create or paste. The first connection opens a browser window where you sign in and approve the permissions for one Modem organization. Your client then lists the Modem tools it can see, which is how you know the connection landed.

The server reads your Modem workspace, so connect a source to give it something to answer from. Create one free, or see pricing for what each tier includes.

Claude Code

Terminal
claude mcp add --transport http modem https://mcp.modem.dev/mcp

Run /mcp inside Claude Code and finish the browser authorization.

Cursor

mcp.json
{
    "mcpServers": {
        "modem": {
            "url": "https://mcp.modem.dev/mcp"
        }
    }
}

Save this as ~/.cursor/mcp.json to use Modem everywhere, or as .cursor/mcp.json inside one project. If Cursor asks for a transport type, choose Streamable HTTP.

ChatGPT

Plugin directory
https://chatgpt.com/plugins/plugin_asdk_app_6aa301615af48191a59c3febcdef6ec2

Open the Modem listing, or choose Plugins in ChatGPT and search for Modem. Select install, sign in to Modem, and authorize. In a chat, type @ and choose Modem. Developer mode can also add https://mcp.modem.dev/mcp as a connection with OAuth in Business, Enterprise, and Edu workspaces, where an admin turns it on.

VS Code and GitHub Copilot

mcp.json
{
    "servers": {
        "modem": {
            "type": "http",
            "url": "https://mcp.modem.dev/mcp"
        }
    }
}

Edit the file directly, or run MCP: Add Server from the command palette.

Codex

Terminal
codex mcp add modem --url https://mcp.modem.dev/mcp
codex mcp login modem

The login command opens the same browser flow. Codex stores the server in ~/.codex/config.toml.

opencode

opencode.json
{
    "$schema": "https://opencode.ai/config.json",
    "mcp": {
        "modem": {
            "type": "remote",
            "url": "https://mcp.modem.dev/mcp"
        }
    }
}

Leave the headers field out. opencode prompts you the first time, or you can run opencode mcp auth modem yourself.

Any other MCP client

Connection fields
Name:       modem
URL:        https://mcp.modem.dev/mcp
Transport:  Streamable HTTP
Auth:       OAuth

Use the client’s own remote HTTP setup flow, and pick OAuth when it asks.

Authorization

OAuth 2.0 with PKCE. Clients that support dynamic client registration register themselves, so the whole exchange happens on first connect.

Scopes

data:read covers search. agent:invoke covers agent runs and every write tool together. The organization comes from the token itself, so a tool argument cannot redirect a call to another workspace.

Rate limit

Twenty calls per minute for each tool, counted per organization. Exceeding it returns a retryAfter hint to back off against.

Client-by-client notes, including what to check when a client shows no Modem tools, are in the MCP server documentation. Each block above was checked against its vendor’s own documentation in September 2026. MCP client configuration moves quickly, so check the vendor if a block stops working.

Because coding isn't the slow part

Teams are still spending too many cycles chasing down feedback, curating their backlog, and following up with users. Tedious work often done by a single person who holds all the context and bottlenecks execution. Modem fixes that.

Build what's actually important

Every bug report, every feature request, automatically clustered and prioritized

Unified company & user profiles to understand who matters and who can wait

Spot emerging trends before they become fires

New Conversation

What are the biggest issues my customers are facing?

Darnell
Modem

Here are three conversations from this week with lots of activity and high priority customers:

Add dark mode to the web app
SoniaDarnellBeatriz
HighHigh
DEV-602
Agent is slow when calling Linear tool
RussellRochelleIvo
HighHigh
DEV-589
Improve filter design on team pages
BeatrizRussellSonia
MediumMedium
Ask Something...
#111 • $<$0.001 • 0% • Show Details
Submit
SlackProduct
Sonia
Sonia11:23 AM

I've been encountering frequent timeout errors when trying to search in the web app

Beatriz
Beatriz11:23 AM

@modem can you make a ticket for this, include any other relevant conversations, and assign me?

Modem
Modem11:23 AM

Done! This problem has been mentioned by two external customers as well. I've included a rollup in the ticket.

Linear

Timeout issues when searching in web app

Issue ENG-2831 in Linear

Multiple customers have reported timeout errors when searching in the web app. Here is...

Messageblock-kit-builder
Send

Act on problems you didn't know you had

Get alerted to user concerns as they happen, not days later

Create detailed tickets straight from chat or through automations you set up

Delegate tasks to coding agents with the context they need to be successful

Close the loop at scale

Draft follow-ups to customers when their requests ship

Generate user-tailored release notes from GitHub PRs and Linear tickets

Automate personalized recurring digests, triage reports, and more in plain English

New Conversation

Can you send our customers release notes every Monday at 9am based on what we've merged?

User
Modem

I created a scheduled task to post release notes for your customers based on your team's Github and Linear history:

Post Release Notes

Every Monday at 9am PT

Would you like me to ask you first with the notes for approval?

Ask Something...
#111 • $<$0.001 • 0% • Show Details
Submit

Not just an agent – a multiplayer platform

Modem is your team's AI-native product workspace. Where signal becomes action.

Modem full UI showing topic details, chat, and AI assistant

Built on a real-time discussion graph

Long-term memory sourced from user and team discussions

No tagging, no triaging — it just organizes itself

Semantic search that finds what you mean, not just what you type

What it returns

One topic per problem, with the quotes attached

Modem reads the places your customers already talk, including Slack, Discord, GitHub, Zendesk, Intercom, email, and call transcripts. It groups what it finds into topics as the messages arrive. The MCP server serves those topics, so a question about a login bug comes back as one topic with the people and companies who reported it. The source threads are already merged behind it.

Duplicate reports arrive pre-merged

Reports of the same issue resolve to one topic as they land. The people and companies who raised it come back attached to that topic, so your coding agent can see who hit something from the topic itself.

The original words stay attached

Each topic keeps the customer’s exact quote alongside the person and company behind it. Your agent can quote the report it is acting on.

Reading is separate from writing

Search reads. A second set of tools runs the Modem Agent or edits records, and you grant those as one decision at consent.

The tools

Sixteen tools, in three groups

Your client sees only the tools covered by the scopes you approved at consent. A token scoped to data:read sees only the three read-only tools: search_modem, modem_docs, and modem_skills. The nine write tools are annotated as destructive, so most clients ask you to confirm each call before it runs.

Search and help

data:read

Read-only, and none of them spend agent credits. The two help tools also come with agent:invoke.

  • search_modem

    Ask a natural-language question and get the matching rows back with a short written answer. You can name the columns you want and page through the results.

  • modem_docs

    Search or read Modem’s public docs: setup, integrations, scopes, and the API.

  • modem_skills

    Instructions for using this server’s tools, so your client picks the right one.

Agent runs

agent:invoke

Runs the full Modem Agent, which can reach your connected tools. Runs are asynchronous and continue if your client disconnects. Both starting calls require an idempotency_key, and one turn runs at a time per conversation.

  • modem_agent_invoke

    Start a run with a prompt and an idempotency_key. Returns a conversation ID and run ID.

  • modem_agent_get_run

    Poll for status. Terminal statuses are completed, failed, and cancelled, and a completed run carries the answer.

  • modem_agent_send_message

    Send a follow-up turn once the current run has finished. Needs a fresh key.

  • modem_agent_cancel_run

    Cancel a run. Work the agent already finished is not undone.

Record maintenance

agent:invoke

Changes Modem records directly, without a run. Each call acts as you, under your existing role in the organization, enforced the same way as the dashboard.

  • update_topic

    Change one topic: priority, lifecycle state, issue type, keywords, or archived status.

  • bulk_update_topics

    Apply one change across up to 100 topics.

  • merge_topics

    Merge up to 50 source topics into a target topic.

  • create_companies

    Create up to 50 companies, each with a name and a domain.

  • update_companies

    Update up to 50 companies: name, primary domain, logo, VIP status, or external links.

  • merge_companies

    Merge source companies into the one you keep.

  • add_people_to_company

    Associate people with a company.

  • update_people

    Update up to 50 people: display name, email, description, VIP status, or external links.

  • merge_people

    Merge source people into the one you keep.

Name the columns and the rows come back in that shape

Your client fills these arguments in, so you rarely write them by hand. Ask for columns and the result validates the rows against them under schema. A limit pages the result and usually adds a cursor while rows remain, and every result carries a traceId to quote if you contact support.

// arguments
{
  "question": "Topics with the most feedback from VIP companies in the last 30 days",
  "limit": 25,
  "columns": [
    { "name": "topic_id", "type": "string" },
    { "name": "title", "type": "string" },
    { "name": "feedback_count", "type": "number" }
  ]
}

// result
{
  "answer": "Three topics account for most VIP feedback this month.",
  "rows": [
    {
      "topic_id": "3f9d2a10-8c4e-4b7a-9f21-6e5d0c1b2a34",
      "title": "SSO login loop after session expiry",
      "feedback_count": 11
    }
    // ... 2 more rows
  ],
  "rowCount": 3,
  "complete": true,
  "schema": { "valid": true, "errors": [] },
  "traceId": "..."
}

Every parameter, result field, error code, and limit is documented in the MCP tool reference.

Worked example

Search first, then write

The write tools take IDs, so a search comes first. Find the records, then act on them. Full parameters for every call below are in the tool reference.

  1. 1

    Ask for the topics

    Call search_modem with a question such as "topics about the old billing page with feedback in the last 30 days", and pass the columns you need, each with a name and a type. The result reports whether the rows satisfied that shape.

  2. 2

    Take the IDs from the rows

    Topic IDs are UUIDs; company and person IDs are numeric strings. search_modem is how you turn a name or a description into the IDs the write tools expect, which is why it runs ahead of every write.

  3. 3

    Apply the change

    Call bulk_update_topics with up to 100 of those IDs to archive or re-prioritize them in one call, or update_topic for a single change. Merges cannot be undone from the client, so check the target before approving.

  4. 4

    Hand off anything that leaves Modem

    Write tools stay inside Modem. Anything that reaches further, such as opening a Linear issue, goes through modem_agent_invoke with a prompt describing the context and the action, plus a required idempotency_key. Then poll modem_agent_get_run for the result.

Choosing a tool

search_modem or an agent run

Start with search_modem and escalate to an agent run when the task needs more than a lookup.

search_modemmodem_agent_invoke
What it doesAnswers one natural-language question about your workspace.Runs the full Modem Agent, which reasons across several steps and can call the tools you have connected.
Scope it needsdata:read. This is the only scope search_modem needs.agent:invoke, the same scope that gates all nine write tools.
What it costsFree. It reads the workspace directly.Bills against your organization’s agent credit allowance, which the pricing page sets out per tier.
When you get the answerIn the same call, with paging for longer result sets.The call returns a conversation ID and a run ID straight away, and you poll for the result.
How far it reachesEverything in your Modem workspace. Topics, people, and companies, plus the messages behind them and the issues and pull requests linked to them.Beyond Modem, into your connected tools, acting on your behalf.
Reach for it whenYou want a lookup or the list of IDs you are about to act on.The task takes several steps, or it has to create or send something outside Modem.
FAQ

Common questions about the Modem MCP server

Is there an MCP server for customer feedback?

Yes. The Modem MCP Server runs at https://mcp.modem.dev/mcp over Streamable HTTP with OAuth, and any MCP-compatible client can connect to it. Modem reads the places your customers talk, including Slack, Discord, GitHub, Zendesk, Intercom, email, and call transcripts, and groups what they say into topics. A question about a login bug comes back as one topic with the people and companies who reported it and their original quotes. The server is in Beta, so the tool surface can still change.

Is there a Modem plugin for ChatGPT?

Yes. Modem Labs Inc. publishes Modem in ChatGPT’s plugin directory at https://chatgpt.com/plugins/plugin_asdk_app_6aa301615af48191a59c3febcdef6ec2. Select install, sign in to Modem, and authorize one organization. In a chat, type @ and choose Modem, then ask something like "Summarize the three highest-priority open topics and who’s affected." The plugin uses this same server and the same two OAuth scopes as every other client.

How do I connect Claude Code to customer feedback?

Run claude mcp add --transport http modem https://mcp.modem.dev/mcp in your terminal, then type /mcp inside Claude Code and finish the browser authorization. Once it connects you should see the Modem tools listed, and you can ask about your customers in the session you are already coding in. The server reads your Modem workspace, so connect a source to give it something to answer from.

What do I need before I can connect to the Modem MCP server?

A Modem account with access to the organization you want to query, and an MCP client that supports remote Streamable HTTP servers with OAuth. Connect at least one source as well, since that is what the server reads. Modem starts free, and the pricing page covers what each tier includes.

Does the Modem MCP server work with Cursor and ChatGPT?

Yes, along with VS Code, GitHub Copilot, Codex, opencode, and any client supporting remote Streamable HTTP servers with OAuth. In Cursor, add an entry with the url https://mcp.modem.dev/mcp to ~/.cursor/mcp.json or to a project .cursor/mcp.json. In ChatGPT, install Modem from the plugin directory. Developer mode is a manual alternative in Business, Enterprise, and Edu workspaces, where an admin turns it on.

Do I need an API key for the Modem MCP server?

No. Authorization is OAuth 2.0 with PKCE, so the token lives in your client and refreshes itself. The first connection opens a browser window where you sign in and approve the requested permissions for one Modem organization. Clients that support dynamic client registration register themselves.

What permissions does the Modem MCP server ask for?

Two scopes. data:read is the read-only option and covers search_modem, plus the two help tools, modem_docs and modem_skills. agent:invoke covers the two help tools, the four agent-run tools, and all nine write tools together, as one decision. Every write is then checked against your own role in the organization, so an approved token stays inside the access your account already has.

Are there rate limits on the Modem MCP server?

Twenty tool calls per minute, counted per organization and per tool. Each of the sixteen tools gets its own allowance, and going over returns a rate-limit error with a retryAfter hint your client should back off against. Agent runs draw on your organization’s agent credit allowance on top of that, while search_modem answers straight from your workspace and stays free.

What tools does Modem's MCP server expose?

Sixteen. One search tool, search_modem, which answers a natural-language question about your workspace and is read-only. Two read-only help tools: modem_docs, which searches Modem’s public docs, and modem_skills, which tells your client how to use the other tools. Four agent-run tools (modem_agent_invoke, modem_agent_get_run, modem_agent_send_message, modem_agent_cancel_run) that run the Modem Agent asynchronously and can reach your connected tools. Nine record-maintenance tools that write to Modem: update_topic, bulk_update_topics, merge_topics, create_companies, update_companies, merge_companies, add_people_to_company, update_people, and merge_people.

Close the product gap

Everyone sees what customers need. Nobody waits. Ship at the speed of code.

Hand reaching out
Wireframe hand reaching out