@intempt/mcp-server
MCP server for Intempt GrowthOS — AI content generation, brand management, knowledge base, and user/account lookup through natural language.
Works with Claude Desktop, Claude Code, Cursor, Windsurf, VS Code (Copilot), Zed, Cline, and any MCP-compatible client.
Quick Start
Run directly (no install):
npx @intempt/mcp-server
Or install globally:
npm install -g @intempt/mcp-server
intempt-mcp-server
Requires Node.js >= 18.
Setup by Platform
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"intempt": {
"command": "npx",
"args": ["-y", "@intempt/mcp-server"],
"env": {
"INTEMPT_ORG": "your-org",
"INTEMPT_PROJECT": "your-project"
}
}
}
}
Claude Code
claude mcp add intempt -- npx -y @intempt/mcp-server
Set your org and project:
export INTEMPT_ORG=your-org
export INTEMPT_PROJECT=your-project
Cursor
Open Cursor Settings > MCP Servers > Add:
{
"mcpServers": {
"intempt": {
"command": "npx",
"args": ["-y", "@intempt/mcp-server"],
"env": {
"INTEMPT_ORG": "your-org",
"INTEMPT_PROJECT": "your-project"
}
}
}
}
Windsurf
Edit ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"intempt": {
"command": "npx",
"args": ["-y", "@intempt/mcp-server"],
"env": {
"INTEMPT_ORG": "your-org",
"INTEMPT_PROJECT": "your-project"
}
}
}
}
VS Code (GitHub Copilot)
Add to your workspace .vscode/mcp.json:
{
"servers": {
"intempt": {
"command": "npx",
"args": ["-y", "@intempt/mcp-server"],
"env": {
"INTEMPT_ORG": "your-org",
"INTEMPT_PROJECT": "your-project"
}
}
}
}
Zed
Edit ~/.config/zed/settings.json:
{
"context_servers": {
"intempt": {
"command": {
"path": "npx",
"args": ["-y", "@intempt/mcp-server"],
"env": {
"INTEMPT_ORG": "your-org",
"INTEMPT_PROJECT": "your-project"
}
}
}
}
}
Cline
Open Cline Settings > MCP Servers > Add Custom Server:
{
"mcpServers": {
"intempt": {
"command": "npx",
"args": ["-y", "@intempt/mcp-server"],
"env": {
"INTEMPT_ORG": "your-org",
"INTEMPT_PROJECT": "your-project"
}
}
}
}
Authentication
Interactive Login (Device Flow)
Say "log me in to Intempt" in your AI assistant. The server opens a browser link for Google, Microsoft, or Apple sign-in. Credentials persist at ~/.intempt/mcp-auth.json and tokens auto-refresh.
Static Token (CI / Automation)
Set INTEMPT_AUTH_TOKEN to skip interactive login:
{
"env": {
"INTEMPT_AUTH_TOKEN": "your-jwt-token",
"INTEMPT_ORG": "your-org",
"INTEMPT_PROJECT": "your-project"
}
}
Tools (22)
Content Generation
Powered by Blu Chat AI. Each tool generates production-ready marketing content.
| Tool | Example prompt |
|---|---|
generate_email | "Write a cold outreach email for enterprise SaaS buyers" |
generate_sms | "Flash sale SMS with 20% off code SPRING20, ends Friday" |
generate_push_notification | "Abandoned cart reminder for running shoes" |
generate_landing_page | "Landing page for our spring sale with hero, features, and CTA" |
generate_slack_message | "Team announcement about hitting 10k active users" |
generate_text | "Product description for our analytics dashboard" |
generate_image | "Hero image for a summer sale campaign" |
Knowledge Base
| Tool | Example prompt |
|---|---|
list_knowledge | "What's in the AI knowledge base?" |
add_knowledge | "Add https://acme.com/pricing to the knowledge base" |
Brand
| Tool | Example prompt |
|---|---|
get_brand | "Show me our brand voice and style guidelines" |
get_personas | "Show me all our buyer personas" |
create_persona | "Create a persona: VP Marketing at mid-market SaaS, cares about ROI" |
Lookup
| Tool | Example prompt |
|---|---|
lookup_user | "Tell me everything about sarah@acme.com" |
lookup_account | "Show me the Acme Corp account" |
Summaries
AI-generated user and account insights.
| Tool | Example prompt |
|---|---|
summarize_user | "Summarize sarah@acme.com" |
summarize_account | "Summarize the Acme Corp account" |
Outreach
Draft personalized messages and replies.
| Tool | Example prompt |
|---|---|
draft_message | "Draft an email for sarah@acme.com about our new feature" |
reply_to_email | "Reply to thread xyz with a friendly follow-up" |
Email QA
| Tool | Example prompt |
|---|---|
preflight_email | "Check this email HTML before I send it" |
Auth
| Tool | Example prompt |
|---|---|
login | "Log me in to Intempt" |
logout | "Log me out" |
whoami | "Which account am I connected to?" |
Environment Variables
Core
| Variable | Default | Description |
|---|---|---|
INTEMPT_ORG | — | Organization slug (required) |
INTEMPT_PROJECT | — | Project slug (required) |
INTEMPT_AUTH_TOKEN | — | Static JWT token (skips interactive login) |
INTEMPT_API_URL | https://api.intempt.com | API gateway URL |
INTEMPT_AUTH_URL | https://auth.intempt.com | Auth service URL |
HTTP Transport
| Variable | Default | Description |
|---|---|---|
MCP_TRANSPORT | stdio | Set to http for remote mode |
MCP_PORT | 3010 | HTTP server port |
MCP_SERVER_URL | http://localhost:3010 | Public URL for OAuth callbacks |
MCP_CLIENT_ID | intempt-mcp | OAuth client ID |
MCP_DEFAULT_PROVIDER | google | Default social login provider |
HTTP Transport (Remote Mode)
For shared infrastructure, multi-user environments, or Claude Connectors:
MCP_TRANSPORT=http MCP_PORT=3010 npx @intempt/mcp-server
This starts an HTTP server with OAuth 2.1 (PKCE) at http://localhost:3010.
Endpoints:
| Endpoint | Auth | Description |
|---|---|---|
POST /mcp | Bearer | MCP JSON-RPC |
GET /mcp | Bearer | SSE streaming |
DELETE /mcp | Bearer | Session teardown |
GET /health | None | Health check ({"status":"ok","sessions":N}) |
GET /.well-known/oauth-authorization-server | None | OAuth discovery |
Docker
Build and run the HTTP transport in a container:
docker build -t intempt-mcp .
docker run -p 3010:3010 \
-e INTEMPT_ORG=your-org \
-e INTEMPT_PROJECT=your-project \
intempt-mcp
Or with docker compose:
INTEMPT_ORG=your-org INTEMPT_PROJECT=your-project docker compose up
Pull from GHCR (after CI publishes):
docker pull ghcr.io/intempt/mcp-server:latest
CI/CD
Two GitHub Actions workflows:
.github/workflows/ci.yml — Build & Test
Runs on every push to main and on pull requests. Tests against Node.js 18, 20, and 22.
.github/workflows/publish.yml — Publish on Tag
Triggered by version tags (v*). Publishes to three registries:
- npm —
npm publish --access public(requiresNPM_TOKENsecret) - GitHub Packages — scoped
@intemptpackage (usesGITHUB_TOKEN) - GHCR — Docker image with semver tags (uses
GITHUB_TOKEN)
Release workflow:
npm version patch # or minor, major
git push && git push --tags
The tag push triggers the publish workflow which builds, tests, and publishes to all three registries.
Required secrets:
| Secret | Where to set | Purpose |
|---|---|---|
NPM_TOKEN | GitHub repo > Settings > Secrets | npm publish |
GITHUB_TOKEN | Automatic | GitHub Packages + GHCR |
Development
git clone https://github.com/intempt/mcp-server.git
cd mcp-server
npm install
npm run build
npm test
npm run dev # TypeScript watch mode
Publishing Manually
npm
npm publish --access public
The prepublishOnly hook runs tsc automatically.
GitHub Packages
echo "@intempt:registry=https://npm.pkg.github.com" >> .npmrc
npm publish
Docker (GHCR)
docker build -t ghcr.io/intempt/mcp-server:latest .
docker push ghcr.io/intempt/mcp-server:latest
License
MIT