MCP Server
Connect Intempt to Claude, Cursor, Windsurf and other MCP hosts. Install, authenticate, and choose how much of the tool surface to expose.
MCP Server
The Intempt MCP server lets an AI assistant read and edit your Intempt project in plain language. It speaks the Model Context Protocol, so any MCP-capable host can use it.
It is published on npm as
@intempt-technologies/mcp.
What it can and cannot do
Read this before you plan an integration around it. The ceiling is deliberate, not a gap waiting to be filled.
| Reads your project | Yes. Segments, users, accounts, events, journeys, deals, analytics, brand assets |
| Edits one record at a time | Yes. 51 single-record edit tools |
| Creates anything | No. Not a single create tool is served |
| Sends messages or email | No. No send tool exists |
| Deletes | Yes, one record at a time, with no undo |
| Bulk operations | No |
Asked to create a segment or bulk-delete users, the honest answer is "use the console." There is no tool to approximate it with. See Limits for the full ceiling.
Install
npx -y @intempt-technologies/mcpMost hosts are configured to run that command for you rather than you running it directly. See Host setup for the exact config for Claude Desktop, Claude Code, Cursor, Windsurf, VS Code, Zed and Cline.
The binary name is intempt-mcp-server.
Authenticate
Two ways. Interactive is right for a desktop host, a static token is right for CI.
Interactive. Ask the assistant to log you in, and it runs the login tool.
It opens a browser, you sign in, and the token is stored locally.
Static token. Set INTEMPT_AUTH_TOKEN to a JWT. This skips the interactive
flow entirely, which is what you want in automation where no one is present to
click a browser prompt.
Scope it to an org and project
Every data call runs against one organization and one project. Set both:
export INTEMPT_ORG=your-org
export INTEMPT_PROJECT=your-projectIf your account belongs to exactly one of each, login resolves them for you and
you can skip this. Otherwise set them explicitly, or ask the assistant to switch
with the use_project tool.
Switching project changes what writes touch. The seven generate_* tools persist
a real record into whichever project is active, so confirm the scope before
generating into a project you just switched to.
How many tools you get
A fresh install serves 10 tools, not the full catalogue. The surface is revealed in waves so a new host is not handed 126 tools on day one.
| Adds | Enabled by default | |
|---|---|---|
| Always on | 6 session tools: login, logout, whoami, org and project switching | Yes |
core wave | 4 reads: segments, users, segment members, attribute columns | Yes |
read wave | Detail and list reads across accounts, deals, events, journeys | No |
analytics wave | Funnels, retention, insights, dashboards, brand reads | No |
content wave | The 7 generate_* tools. Each writes a record into the active project | No |
write wave | Every remaining single-record edit, including the 11 deletes | No |
| Full catalogue | 126 tools | No |
The 10 you get out of the box:
login logout whoami list_orgs list_projects use_project
list_segments list_users list_segment_users list_attribute_columnsTo widen it, set INTEMPT_MCP_TOOLS to a comma-separated list of wave names,
exact tool names, or all:
# everything
export INTEMPT_MCP_TOOLS=all
# just add the read wave
export INTEMPT_MCP_TOOLS=read
# a wave plus one specific tool
export INTEMPT_MCP_TOOLS=read,analyze_funnel_overallWaves past core are not equally proven. read and analytics are partially
verified against production; content and write are untested, and write
includes the 11 deletes that have no undo. Tools
lists what each wave contains and how far each has been verified.
Environment variables
| Variable | Default | Description |
|---|---|---|
INTEMPT_ORG | Organization slug. Required | |
INTEMPT_PROJECT | Project slug. Required | |
INTEMPT_AUTH_TOKEN | Static JWT. Skips interactive login | |
INTEMPT_MCP_TOOLS | core | Waves and tool names to enable, or all |
INTEMPT_API_URL | https://api.intempt.com | API gateway URL |
INTEMPT_AUTH_URL | same as INTEMPT_API_URL | Auth service URL. There is no separate auth.intempt.com host |
For remote mode over HTTP instead of stdio, see Host setup.
Natural language in, no IDs
Every tool takes names, emails and descriptions. You do not look up internal IDs and you do not pass them. Ask for "everything about sarah@acme.com" and the server resolves the address to a user itself.
One exception worth knowing: list_users and list_segment_users search
cannot match an email address. Any search term containing @ returns nothing,
so an empty result does not mean the person is absent. Both are default tools, so
you will hit this on a fresh install. It is a backend bug, not a usage error.
