Skip to main content
Glama

mcp-server-cantrip

Cantrip helps technical founders find their first customers with structured GTM workflows.

  • Nail your ICP — define ideal customer profiles, buyer pains, and value props

  • Research competitors — map the landscape and find where you can win

  • Get next actions — gap analysis tells you exactly what to work on, then does it for you

Works with Claude Code / Claude Desktop / Cursor — any MCP-compatible agent.

Quick start

  1. Get your API key at cantrip.ai (settings)

  2. Add the server:

claude mcp add cantrip -e CANTRIP_API_KEY=your-api-key -- npx -y mcp-server-cantrip
  1. Try this prompt:

"Initialize a Cantrip project for my product: [describe yours in one sentence]"

Configuration

The Quick start command above covers Claude Code. Verify it worked with claude mcp list or the /mcp command inside a session.

Claude Desktop / Cursor / manual JSON

All MCP clients use the same JSON block. Add it to the appropriate config file:

Client

Config file

Claude Code (manual)

~/.claude.json

Claude Code (project-scoped)

.mcp.json in project root

Claude Desktop (macOS)

~/Library/Application Support/Claude/claude_desktop_config.json

Claude Desktop (Windows)

%APPDATA%\Claude\claude_desktop_config.json

Cursor

.cursor/mcp.json (project) or ~/.cursor/mcp.json (global)

{
  "mcpServers": {
    "cantrip": {
      "command": "npx",
      "args": ["-y", "mcp-server-cantrip"],
      "env": {
        "CANTRIP_API_KEY": "your-api-key"
      }
    }
  }
}

Note: The -y flag is required — without it, npx prompts for confirmation which hangs over stdio.

Windows (not WSL): Use "command": "cmd" with "args": ["/c", "npx", "-y", "mcp-server-cantrip"].

Project-scoped with teams: Use "${CANTRIP_API_KEY}" in the env value so each developer sets the key in their shell profile.

Project Context (.cantrip.json)

Each project directory contains a .cantrip.json file that tells Cantrip which project to target:

{
  "project": "my-saas"
}

This file is created automatically by cantrip_init (new project) or cantrip_connect (existing project). The agent manages it — you don't need to create it manually.

Multiple projects on the same machine? Each project directory gets its own .cantrip.json. The agent switches context by working in the right directory.

Related MCP server: @intempt/mcp-server

Examples of How to use Cantrip

After connecting Cantrip, try these prompts in order:

  1. "Initialize a Cantrip project for my product: [one sentence about what you're building]"

  2. "Find my likely ICP and top 3 buyer pains."

  3. "Research 5 competitors and tell me where I can win."

  4. "Give me a one-week GTM plan."

Troubleshooting

Server not found / no tools appear:

  • Run claude mcp list (Claude Code) or /mcp inside a session to check connection status.

  • Make sure the config is in the right file — Claude Code uses ~/.claude.json or .mcp.json, not ~/.claude/mcp.json.

Server hangs on startup:

  • Ensure you have -y in the npx args. Without it, npx waits for interactive confirmation that can never arrive over stdio.

"Cannot reach Cantrip API" errors:

  • Verify CANTRIP_API_KEY is set in the env block of your MCP config.

  • Check that https://api.cantrip.ai is reachable from your network.

Windows "Connection closed" errors:

  • Use "command": "cmd" with "args": ["/c", "npx", "-y", "mcp-server-cantrip"].

Architecture

Agent (Claude, etc.) ── MCP protocol (stdio) ──> mcp-server-cantrip ── HTTPS POST ──> https://api.cantrip.ai

The MCP server is a thin translation layer. It converts MCP tool calls into {command, args, flags} JSON envelopes and POSTs them to the Cantrip API. Zero business logic — identical contract to the CLI and React UI.

Tools (17)

Setup

Tool

Description

cantrip_connect

Connect workspace to a project (reads/writes .cantrip.json)

cantrip_status

Check if the daemon is running

cantrip_init

Create a new project and auto-connect

Core Commands

Tool

Description

cantrip_snapshot

Project overview, drill into entity types

cantrip_next

List gap-analysis opportunities

cantrip_next_prompt

Generate a context-rich LLM prompt for an opportunity

cantrip_next_run

Spawn a background agent for an opportunity

cantrip_history

Query the audit trail

Review

Tool

Description

cantrip_review

List items pending review

cantrip_review_accept

Accept an inferred entity

cantrip_review_reject

Reject an inferred entity

cantrip_review_resolve

Resolve an escalation

cantrip_review_dismiss

Dismiss an escalation

Entity CRUD (generic)

Tool

Description

cantrip_entity_list

List entities of a type

cantrip_entity_show

Show entity detail

cantrip_entity_add

Create a new entity

cantrip_entity_edit

Edit an existing entity

Supported entity types: icp, pain_point, value_prop, experiment, channel, competitor, contact

License

MIT

Available Tools

19 tools
cantrip_connectA

Start here. Connect this workspace to a Cantrip project by writing a .cantrip.json file. All subsequent commands will target this project automatically. Call without arguments to check the current connection.

Inputs: project.

cantrip_entity_addA

Create a new entity. Automatically marked as 'accepted'. Fields vary by type:

  • icp: name, description, demographics, jobs_to_be_done, willingness_to_pay, current_alternatives, priority, is_beachhead

  • pain_point: description, severity (low|medium|high|critical), frequency (rare|occasional|frequent|constant), evidence

  • value_prop: framing (required — use instead of 'name'; 'description' is stored in extensions), tagline, evidence

  • channel: name, channel_type, lifecycle_stage (exploring|testing|scaling|maintaining|killed), cac, estimated_reach, conversion_rate (note: 'description' maps to 'notes' column)

  • experiment: title (required — use instead of 'name'), hypothesis, description, status (proposed|designed|active|completed|analyzed|abandoned), success_metrics, outcome_notes, value_prop_id, channel_id

  • competitor: name, description, url, positioning, strengths, weaknesses, pricing_model

  • contact: name, email, phone, company, role, source, url, notes Extra fields (any field not in the schema above) are stored in extensions. After adding entities, pause and confirm with the user before adding more. Pass project to override .cantrip.json — useful in cloud-hosted or multi-project contexts.

Inputs: entity_type (required), name, description, fields, +1 more.

cantrip_entity_editA

Edit an existing entity. Fields vary by type (same as cantrip_entity_add). Pass well-known fields directly, and any additional fields in the 'fields' object. Extra fields are stored in extensions. Pass project to override .cantrip.json — useful in cloud-hosted or multi-project contexts.

Inputs: entity_type (required), id (required), name, description, +2 more.

cantrip_historyA

Query the append-only audit trail of all actions taken on the project. Pass project to override .cantrip.json — useful in cloud-hosted or multi-project contexts.

Inputs: type, entity, since, limit, +1 more.

cantrip_initA

Create a new project and connect this workspace to it. Pass 'brief_text' (product brief as text) to auto-extract ICPs, pain points, and value props as inferred entities (costs 5 credits). Or pass 'brief_path' (absolute file path) and the file will be read locally. Without a brief, the project is created empty (free) and you add entities manually. Writes .cantrip.json automatically after creation. After creating a project, add a few entities and confirm them with the user before going deeper.

Inputs: name (required), description (required), brief_text, brief_path.

cantrip_meter_balanceA

Check remaining credits. Returns available credits, reserved credits (held by in-progress operations), and total balance. Pass project to override .cantrip.json — useful in cloud-hosted or multi-project contexts.

Inputs: project.

cantrip_meter_historyA

View recent credit transactions. Shows usage debits, purchases, and running balance. Pass project to override .cantrip.json — useful in cloud-hosted or multi-project contexts.

Inputs: limit, project.

cantrip_meter_tiersB

View available credit packs. Shows tier name, credits included, and price.

Inputs: no named parameters.

cantrip_nextA

List gap-analysis opportunities — things that would move the project closer to ideal state. Each opportunity has a stable UUID that you can pass to cantrip_next_prompt or cantrip_next_run. Opportunities persist across calls; re-running gap analysis updates existing opportunities rather than replacing them. Review the project snapshot with the user before running opportunities. Pass project to override .cantrip.json — useful in cloud-hosted or multi-project contexts.

Inputs: project.

cantrip_next_promptA

Generate a context-rich LLM prompt for an opportunity. Returns a ready-to-use prompt with all relevant ontology context baked in. Zero credit cost. Pass project to override .cantrip.json — useful in cloud-hosted or multi-project contexts.

Inputs: id (required), project.

cantrip_next_runA

Execute an enrichment opportunity with AI. Runs the LLM-powered enrichment inline — either updating existing entities' missing fields (targeted) or generating new entities (bulk). Returns when complete with a summary of what was created or updated. Parallelism: you may run different loop types concurrently (e.g. enrich ICPs + enrich competitors), but the daemon blocks concurrent runs of the same loop type for safety. Pass project to override .cantrip.json — useful in cloud-hosted or multi-project contexts.

Inputs: id (required), project.

cantrip_projectA

Manage projects. Actions:

  • list (default): List all projects in the current team.

  • update: Update a project's name or description. Uses the connected project unless 'slug' is provided.

  • delete: Delete a project and all its data. Uses the connected project unless 'slug' is provided.

Inputs: action, slug, name, description.

cantrip_reviewA

List all items pending review (inferred entities and open escalations). Pass project to override .cantrip.json — useful in cloud-hosted or multi-project contexts.

Inputs: project.

cantrip_review_acceptA

Accept an inferred entity, marking it as verified ground truth. Pass project to override .cantrip.json — useful in cloud-hosted or multi-project contexts.

Inputs: id (required), project.

cantrip_review_dismissA

Dismiss an inferred entity or open escalation. For entities: removes from review queue without accepting or rejecting (kept for history). For escalations: closes without resolving. Pass project to override .cantrip.json — useful in cloud-hosted or multi-project contexts.

Inputs: id (required), project.

cantrip_review_rejectA

Reject an inferred entity (soft-delete, kept for history). Pass project to override .cantrip.json — useful in cloud-hosted or multi-project contexts.

Inputs: id (required), project.

cantrip_review_resolveA

Resolve an open escalation with a resolution message. Pass project to override .cantrip.json — useful in cloud-hosted or multi-project contexts.

Inputs: id (required), resolution (required), project.

cantrip_snapshotA

Browse project data at three zoom levels. No args: project overview with entity counts by type and review state, gaps, and review queue size. entity_type only: list all entities of that type (e.g. 'icps', 'pain-points', 'channels'). entity_type + entity_id: show full detail for one entity. This is the primary tool for listing and inspecting entities. Pass project to override .cantrip.json — useful in cloud-hosted or multi-project contexts.

Inputs: entity_type, entity_id, project.

cantrip_statusA

Check daemon health, authentication, and current project. Returns daemon reachability, authenticated identity (user, team), and the active project from .cantrip.json. When CANTRIP_API_KEY is missing, returns setup instructions with config examples for common MCP clients.

Inputs: no named parameters.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.9/5.0

    Scored across 19 tools

    Disambiguation4/5

    Most tools have distinct purposes, but some overlap exists. For example, cantrip_next_prompt and cantrip_next_run are both related to opportunities but serve different functions, which could cause confusion. However, the descriptions clarify their roles, and other tools like cantrip_entity_add vs. cantrip_entity_edit are clearly differentiated.

    Naming Consistency5/5

    All tool names follow a consistent snake_case pattern with a 'cantrip_' prefix, and verbs like 'add', 'edit', 'list', 'run' are used predictably. For instance, cantrip_entity_add, cantrip_entity_edit, and cantrip_review_accept all adhere to the same naming convention, making the set easy to navigate.

    Tool Count4/5

    With 19 tools, the count is slightly high but reasonable for a comprehensive project management and analysis server. It covers connection, entity management, review processes, and analytics, which justifies the number, though it might feel a bit heavy for some users.

    Completeness5/5

    The tool set provides complete coverage for managing Cantrip projects, including project initialization, entity CRUD operations, review workflows, gap analysis, and system status checks. There are no obvious gaps; all core lifecycle stages from setup to maintenance are supported.

    Related MCP Connectors

    Related MCP Servers