Skip to main content

MCP Server Integrations

Status: Production-ready configuration
Last Updated: 2025-12-25
Aligned with: CLAUDE.md Project Values

Table of Contents


Overview

This project uses 5 Model Context Protocol (MCP) servers to enable AI agents to interact with external services:
  1. Vercel - Deployment management, logs, domains, and environment variables ⭐ NEW
  2. Sentry - Error monitoring and issue tracking
  3. GitHub - Repository management and PR automation
  4. Intercom - Customer support and user communication
  5. Supabase - Database queries and project management
Configuration File: ~/.cursor/mcp.json (global) or .cursor/mcp.json (project) Authentication: All servers use secrets from Cursor Cloud Agent Secrets (see Environment Management)

Vercel MCP

Purpose

Deployment management, build logs, domain configuration, environment variables, and project insights for deep Vercel integration.

Capabilities

  • List and manage deployments (preview, production)
  • Access build logs and deployment status
  • Manage environment variables
  • Configure domains and aliases
  • Monitor project health and performance
  • Rollback deployments
  • Access deployment previews and URLs

Authentication

Secret: VERCEL_ACCESS_TOKEN Setup:
  1. Go to: https://vercel.com/account/tokens
  2. Click “Create Token”
  3. Name: “Sanctiv MCP - Full Access”
  4. Select scope: “Full Account” (recommended) or specific team
  5. Set expiration (recommended: no expiration for CI/CD)
  6. Copy token
  7. Add to Cursor Cloud Agent Secrets as VERCEL_ACCESS_TOKEN
Token Format: Vercel API Token (alphanumeric string)

Usage Examples

"Show me recent Vercel deployments"
"What's the status of the latest deployment?"
"List environment variables for production"
"Show me the build logs for deployment xyz"
"What domains are configured for this project?"
"Rollback to the previous deployment"

Integration Benefits

With Vercel MCP, agents can:
  • Debug deployment failures - Access full build logs and error messages
  • Manage environments - View and understand environment variable configuration
  • Monitor deployments - Check deployment status and health
  • Understand infrastructure - See domain configuration and routing

Sentry MCP

Purpose

Error monitoring, issue tracking, and release management for debugging and quality assurance.

Capabilities

  • Query Sentry issues and events in real-time
  • Analyze errors with AI-powered root cause analysis
  • Get fix recommendations from Sentry’s Seer AI
  • Monitor release health and trends
  • Access error context and stack traces

Authentication

Secret: SENTRY_AUTH_TOKEN Setup:
  1. Go to: https://sentry.io/settings/account/api/auth-tokens/
  2. Click “Create New Token”
  3. Name: “Sanctiv MCP - Full Access”
  4. Select scopes: org:read, project:read, event:read, project:releases
  5. Copy token (format: sntryu_...)
  6. Add to Cursor Cloud Agent Secrets as SENTRY_AUTH_TOKEN
Token Format: User Auth Token (sntryu_...) recommended for full access

Usage Examples

"Show me recent Sentry errors"
"Analyze the error with ID 7125653207"
"What's the crash-free rate for the latest release?"
"List unresolved issues in the sanctiv-app project"

GitHub MCP

Purpose

Repository management, pull request automation, issue tracking, and code review assistance.

Capabilities

  • List and search repositories
  • Create and manage pull requests
  • Query and create issues
  • Manage repository settings
  • Code review automation
  • Branch management

Authentication

Secret: GITHUB_PERSONAL_ACCESS_TOKEN Setup:
  1. Go to: https://github.com/settings/tokens
  2. Click “Generate new token” → “Generate new token (classic)”
  3. Name: “Sanctiv MCP - Repository Access”
  4. Select scopes:
    • repo (Full control of private repositories)
    • read:org (Read org membership)
    • read:user (Read user profile data)
  5. Generate and copy token
  6. Add to Cursor Cloud Agent Secrets as GITHUB_PERSONAL_ACCESS_TOKEN
Alternative: If you already have GitHub CLI (gh) authenticated, you can use:
gh auth token  # Get existing token

Usage Examples

"List open pull requests in the sanctiv-app repository"
"Create a new issue for bug tracking"
"Show me the latest commits on main branch"
"What's the status of PR #123?"

Intercom MCP

Purpose

Customer support, user communication, and support ticket management for B2B customer success.

Capabilities

  • Query customer conversations
  • Access user data and attributes
  • Manage support tickets
  • Search conversations and contacts
  • Better context for debugging user issues
  • Access user activity and engagement data

Authentication

Secret: INTERCOM_ACCESS_TOKEN Setup:
  1. Go to Intercom Settings:
  2. In Developer Hub:
    • Go to Your Apps section
    • If you don’t have an app, click New App to create one
    • Name it: “Sanctiv MCP - Support Access”
    • Select your workspace
    • Click Create app
  3. Get Access Token:
    • In your app, go to ConfigureAuthentication
    • You’ll find your Access Token here
    • Copy the token
  4. Add to Cursor Cloud Agent Secrets as INTERCOM_ACCESS_TOKEN
Alternative Path: Settings → Integrations → Developer Hub → Your Apps → [Your App] → Configure → Authentication Important: This is different from mobile SDK keys (EXPO_PUBLIC_INTERCOM_*). The MCP server needs an API Access Token from Developer Hub, not SDK keys from Install settings.

Usage Examples

"Show me recent support conversations"
"Find conversations from user with email [email protected]"
"What support issues are unresolved?"
"Show me conversations tagged with 'bug'"

Supabase MCP

Purpose

Database queries, schema management, and project information access for backend operations.

Capabilities

  • Query Supabase databases
  • Manage database schemas
  • Access project information
  • Execute SQL queries (with proper permissions)
  • Monitor database health

Authentication

Secrets: SUPABASE_ACCESS_TOKEN and SUPABASE_PROJECT_REF Setup:
  1. Get Access Token:
  2. Get Project Reference:
    • Go to: Supabase Dashboard → Your Project → Settings → General
    • Find “Reference ID” (e.g., qpviktnoleojfskietat)
    • Add to Cursor Cloud Agent Secrets as SUPABASE_PROJECT_REF
Security Note: The MCP server will have access to your database. Ensure proper RLS policies are in place. Consider using read-only tokens for production.

Usage Examples

"Query the journal_entries table for the last 10 entries"
"Show me the database schema for the organizations table"
"What's the total number of users in the database?"
"List all tables in the public schema"

Configuration

MCP Server Configuration

All MCP servers are configured in ~/.cursor/mcp.json (global configuration):
{
  "mcpServers": {
    "sentry": {
      "command": "npx",
      "args": ["-y", "@sentry/mcp-server"],
      "env": {
        "SENTRY_AUTH_TOKEN": "${SENTRY_AUTH_TOKEN}"
      }
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_PERSONAL_ACCESS_TOKEN}"
      }
    },
    "intercom": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-intercom"],
      "env": {
        "INTERCOM_ACCESS_TOKEN": "${INTERCOM_ACCESS_TOKEN}"
      }
    },
    "supabase": {
      "command": "npx",
      "args": ["-y", "@supabase/mcp-server-supabase"],
      "env": {
        "SUPABASE_ACCESS_TOKEN": "${SUPABASE_ACCESS_TOKEN}",
        "SUPABASE_PROJECT_REF": "${SUPABASE_PROJECT_REF}"
      }
    },
    "vercel": {
      "url": "https://mcp.vercel.com/sse"
    }
  }
}

Secret Management

All secrets are managed via Cursor Cloud Agent Secrets:
SecretServicePurpose
VERCEL_ACCESS_TOKENVercelDeployment management
SENTRY_AUTH_TOKENSentryError monitoring
GITHUB_PERSONAL_ACCESS_TOKENGitHubRepository access
INTERCOM_ACCESS_TOKENIntercomCustomer support
SUPABASE_ACCESS_TOKENSupabaseDatabase access
SUPABASE_PROJECT_REFSupabaseProject identifier
Setup:
  1. Open Cursor Settings → Cloud Agents → Secrets
  2. Add each secret listed above
  3. Restart Cursor to load MCP servers
See Environment Management for detailed setup instructions.

Troubleshooting

MCP Server Not Loading

Symptoms: MCP server doesn’t appear in Cursor chat Solutions:
  1. Verify .cursor/mcp.json exists and is valid JSON
  2. Check secrets are set in Cursor Cloud Agent Secrets
  3. Restart Cursor IDE completely
  4. Check Cursor logs for MCP server errors

Authentication Errors

Symptoms: MCP server reports authentication failures Solutions:
  1. Verify token is correct (no extra spaces, full token copied)
  2. Check token hasn’t expired (regenerate if needed)
  3. Verify token has correct scopes/permissions
  4. For GitHub: Ensure token has repo scope for private repos
  5. For Intercom: Ensure using Access Token, not SDK key

Package Not Found Errors

Symptoms: npx can’t find MCP server package Solutions:
  1. Verify package name is correct in .cursor/mcp.json
  2. Check npm registry is accessible
  3. Try running manually: npx -y @sentry/mcp-server (replace with your server)
  4. Check package exists on npm: https://www.npmjs.com/

Supabase Connection Issues

Symptoms: Supabase MCP can’t connect to database Solutions:
  1. Verify SUPABASE_PROJECT_REF is correct (not project URL)
  2. Check SUPABASE_ACCESS_TOKEN is valid account token
  3. Ensure project is active in Supabase Dashboard
  4. Verify RLS policies allow access (if querying data)

Vercel Connection Issues

Symptoms: Vercel MCP can’t access deployments or projects Solutions:
  1. Verify VERCEL_ACCESS_TOKEN is correct (alphanumeric token)
  2. Check token has “Full Account” scope or correct team access
  3. Ensure token hasn’t expired (check token settings)
  4. Verify you have access to the specific project/team
  5. Try running manually: npx -y @robinson_ai_systems/vercel-mcp to test
Common Vercel MCP Issues:
  • “Unauthorized” error - Token is invalid or expired
  • “Project not found” - Check project name matches exactly
  • “Rate limited” - Vercel API has rate limits; wait and retry
  • Build logs empty - Deployment may still be in progress

Best Practices

Verify-Then-Rube Pattern (CRITICAL for Rube/Composio)

Problem: When using Rube/Composio for GitHub PR operations, agents may fetch data from the wrong PR if they rely on conversation history or assumptions. Pattern: Always verify context before executing Rube tools.
# Step 1: Verify current branch
git branch --show-current
# Output: feat/genesis-command-center

# Step 2: Get verified PR number from branch
gh pr list --head feat/genesis-command-center --json number,title
# Output: [{"number": 291, "title": "feat: Genesis Command Center"}]

# Step 3: Use VERIFIED PR number in Rube tools
RUBE_MULTI_EXECUTE_TOOL with pull_number: 291  # ← VERIFIED
When to Apply:
Rube ToolRequires Verify-Then-Rube?
GITHUB_LIST_REVIEW_COMMENTS_ON_A_PULL_REQUEST✅ Yes
GITHUB_LIST_REVIEWS_FOR_A_PULL_REQUEST✅ Yes
GITHUB_LIST_ISSUE_COMMENTS✅ Yes
GITHUB_GET_PULL_REQUEST✅ Yes
SUPABASE_BETA_RUN_SQL_QUERY⚠️ Only if querying PR-specific data
Lesson Learned: On PR #291, agent fetched comments from #156 and #162 before user corrected the context. See docs/philosophy/lessons-learned.yaml Lesson #17. Integration with /ship workflow: The ship.yaml workflow now includes a verify_pr_context step in Phase 1 that validates the PR number before fetching comments.

Resolving PR Comment Threads via GraphQL

Capability: ✅ Rube CAN resolve PR review threads using GITHUB_RUN_GRAPH_QL_QUERY! How it works:
  1. Get thread IDs (not comment IDs!) using GraphQL query:
query {
  repository(owner: "Sanctiv", name: "sanctiv-app") {
    pullRequest(number: 291) {
      reviewThreads(first: 25) {
        nodes { id isResolved }
      }
    }
  }
}
  1. Resolve thread using mutation with PRRT_ thread ID:
mutation {
  resolveReviewThread(input: {threadId: "PRRT_kwDOQNB3Hs5oP-uG"}) {
    thread { id isResolved }
  }
}
⚠️ Important Notes:
ID PrefixTypeUse For
PRRT_Review ThreadresolveReviewThread mutation
PRRC_Review CommentGITHUB_CREATE_A_REPLY_FOR_A_REVIEW_COMMENT
Workflow for addressing PR comments:
  1. Fix the issue in code
  2. Get thread ID via GraphQL query (look for PRRT_ prefix)
  3. Resolve thread via GraphQL mutation
  4. (Optional) Reply to comment with ”✅ Fixed in commit xyz”
Type Coercion Note: When using variables with integers, hardcode values in the query string to avoid float coercion issues (e.g., pullRequest(number: 291) instead of pullRequest(number: $number)).

Full-Fetch Pattern for PR Comments (Lesson #18)

Problem: Using default per_page values (often 10 or 30) when fetching PR comments causes agents to miss comments, leading to incomplete reviews. Pattern: Always use per_page: 100 (maximum) when fetching PR comments.
// ❌ BAD - May miss comments
GITHUB_LIST_REVIEW_COMMENTS_ON_A_PULL_REQUEST({
  owner: 'Sanctiv',
  repo: 'sanctiv-app',
  pull_number: 291
  // per_page defaults to 10-30
})

// ✅ GOOD - Gets ALL comments
GITHUB_LIST_REVIEW_COMMENTS_ON_A_PULL_REQUEST({
  owner: 'Sanctiv',
  repo: 'sanctiv-app',
  pull_number: 291,
  per_page: 100  // ← Always specify maximum
})
Tools that need per_page: 100:
ToolDefaultRisk
GITHUB_LIST_REVIEW_COMMENTS_ON_A_PULL_REQUEST30Miss later comments
GITHUB_LIST_REVIEWS_FOR_A_PULL_REQUEST30Miss reviews
GITHUB_LIST_ISSUE_COMMENTS30Miss comments
GITHUB_LIST_COMMITS30Miss commits
Lesson Learned: On PR #291, agent used per_page: 10 and saw only 10/38 comments, missing the DEFAULT_ORG_ID violation entirely. See docs/philosophy/lessons-learned.yaml Lesson #18.

Security

  • ✅ Use minimum required scopes for tokens
  • ✅ Rotate tokens periodically
  • ✅ Use read-only tokens when possible (Supabase)
  • ✅ Never commit tokens to git
  • ✅ Use Cursor Cloud Agent Secrets (not local files)

Performance

  • ✅ MCP servers are loaded on Cursor startup
  • ✅ Unused servers can be removed from mcp.json to reduce startup time
  • ✅ Queries are cached by MCP servers when possible

Maintenance

  • ✅ Keep MCP server packages updated (npx -y uses latest)
  • ✅ Monitor token expiration dates
  • ✅ Review MCP server logs for errors
  • ✅ Test MCP functionality after token rotation


Maintained by: All contributors
Review frequency: After any MCP server changes
Last audit: 2026-01-06