Skip to content

MCP Integration (Model Context Protocol)

Connect Ascend to AI assistants like Claude Desktop, Claude Code, Cursor, and any MCP-compatible client. Once connected, your AI assistant can read, search, and manage your Ascend workspace using natural language.


What Is MCP?

The Model Context Protocol (MCP) is an open standard that lets AI assistants connect to external tools and data sources. Ascend's MCP server exposes your workspace content — pages, databases, contacts, time entries, invoices, and more — so an AI assistant can interact with it directly.

Examples of what you can do:

  • "List all my databases" — browse your workspace
  • "Create a page called Meeting Notes with today's action items" — create content
  • "Show me all rows in the Clients database where Status is Active" — query data
  • "Log 2 hours of work on the Landing Page project" — track time
  • "Create an invoice for Acme Corp from last week's time entries" — generate invoices

Prerequisites

Before you begin

You'll need:

  1. An Ascend API Token (see Public API guide for how to generate one)
  2. Node.js 18+ installed on your machine
  3. A running Ascend instance (local or hosted)
  4. An MCP-compatible client (Claude Desktop, Claude Code, Cursor, etc.)

Quick Start

1. Generate an API Token

  1. Log in to Ascend and click your avatar → Settings
  2. Navigate to API Keys in the sidebar
  3. Click Create New Token, give it a name (e.g. Claude MCP)
  4. Copy the key immediately — it won't be shown again

2. Configure Your MCP Client

Claude Desktop

Open your Claude Desktop config file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Add the Ascend MCP server:

json
{
  "mcpServers": {
    "ascend": {
      "command": "npx",
      "args": ["tsx", "mcp/server.ts"],
      "cwd": "/path/to/your/ascend/project",
      "env": {
        "ASCEND_URL": "https://ascend.optivationai.com",
        "ASCEND_API_TOKEN": "ascend_your_token_here"
      }
    }
  }
}

Claude Code

Add to your Claude Code MCP settings or project .mcp.json:

json
{
  "mcpServers": {
    "ascend": {
      "command": "npx",
      "args": ["tsx", "mcp/server.ts"],
      "cwd": "/path/to/your/ascend/project",
      "env": {
        "ASCEND_URL": "https://ascend.optivationai.com",
        "ASCEND_API_TOKEN": "ascend_your_token_here"
      }
    }
  }
}

3. Start Ascend

Make sure Ascend is running before starting the MCP server:

bash
npm run dev

4. Restart Your MCP Client

Restart Claude Desktop (or your MCP client) to pick up the new configuration. You should see "ascend" listed as a connected tool provider.


Configuration

The MCP server requires two environment variables:

VariableRequiredDescriptionExample
ASCEND_URLYesBase URL of your Ascend instancehttps://ascend.optivationai.com
ASCEND_API_TOKENYesYour API token (starts with ascend_)ascend_abc123...

Keep your token safe

Your API token has the same permissions as your user account. Never commit it to version control or share it publicly.


Available Tools

The MCP server exposes 61 tools across all major Ascend features. Each tool includes a risk classification — your AI assistant will see this context when deciding which tools to use.

Pages

ToolRiskDescription
list_pagesLowList pages in the workspace
get_pageLowRead the full content of a page
create_pageMediumCreate a new page with title and content
update_pageMediumUpdate a page's title or append content
delete_pageHighPermanently delete a page

Databases

ToolRiskDescription
list_databasesLowList databases with title and property summary
get_databaseLowGet database schema including all properties
create_databaseMediumCreate a new database with properties
update_databaseMediumRename a database or update its icon
duplicate_databaseMediumDuplicate a database schema (no rows)
add_database_propertyMediumAdd a new typed property to a database

Database Rows

ToolRiskDescription
list_rowsLowList rows with optional filtering
get_rowLowGet a single row with all property values
create_rowMediumCreate a new row with property values
update_rowMediumUpdate property values on an existing row
delete_rowHighPermanently delete a row
bulk_update_rowsHighUpdate up to 200 rows matching a filter
duplicate_rowMediumDuplicate an existing row
attach_file_to_rowMediumAttach a file URL to a row property

Time Tracking

ToolRiskDescription
list_time_entriesLowList time entries, optionally filtered
create_time_entryMediumLog a manual time entry
update_time_entryMediumUpdate a time entry's duration or note
delete_time_entryHighDelete a time entry
get_time_summaryLowGet total hours, earnings, and count
start_timerMediumStart a live timer
stop_timerMediumStop the running timer
pause_timerLowPause the running timer

Contacts & Jobs

ToolRiskDescription
list_contactsLowList contacts with name, email, organization
get_contactLowGet full contact details
create_contactMediumCreate a new contact
update_contactMediumUpdate an existing contact
list_jobsLowList active jobs/services
get_jobLowGet job details including rates
create_jobMediumCreate a new job with billing config
update_jobMediumUpdate a job's name or rate

Invoicing

ToolRiskDescription
list_invoicesLowList invoices, filter by status
get_invoiceLowGet full invoice details
create_invoiceMediumCreate a draft invoice from time entries
update_invoice_statusHighChange invoice status (draft/sent/paid/void)

Workspaces, Views, Templates & More

ToolRiskDescription
list_workspacesLowList team workspaces
create_workspaceMediumCreate a new workspace
update_workspaceMediumUpdate workspace name, icon, or description
list_viewsLowList views for a database
create_viewMediumCreate a table, kanban, or calendar view
update_viewMediumUpdate a view's name, type, or config
list_templatesLowList reusable page templates
create_templateMediumCreate a reusable page template
apply_templateMediumCreate a new page from a template
search_workspaceLowFull-text search across pages and rows
list_tagsLowList all tags
create_tagLowCreate a new tag
tag_entityLowApply a tag to a page or row

Inbox & Alerts

ToolRiskDescription
list_inbox_itemsLowList inbox notifications
mark_inbox_item_readLowMark a notification as read
dismiss_inbox_itemLowDismiss a notification
list_alertsLowList system alerts
acknowledge_alertMediumAcknowledge an open alert
resolve_alertMediumMark an alert as resolved
create_alert_ruleMediumCreate an SLA alert rule
link_notification_to_entityLowLink a notification to a page or row
quick_create_from_inboxMediumCreate a page from a notification

Resources

In addition to tools, the MCP server exposes Ascend content as browsable resources. Your AI assistant can read these to understand your workspace structure.

Resource URIDescription
ascend://workspacesList all team workspaces
ascend://workspace/{id}Workspace with its pages and databases
ascend://page/{id}Full page content
ascend://database/{id}Database schema and properties

Prompt Templates

The server includes pre-built prompts for common workflows:

PromptArgumentsDescription
summarize-pagepageIdFetches a page and asks for a summary
analyze-databasedatabaseIdFetches schema + sample rows and asks for analysis
workspace-overviewworkspaceIdFetches workspace contents and asks for an overview

Running Manually

You can also run the MCP server directly from the terminal:

bash
ASCEND_URL=https://ascend.optivationai.com ASCEND_API_TOKEN=ascend_... npm run mcp

Or without the npm script:

bash
ASCEND_URL=https://ascend.optivationai.com ASCEND_API_TOKEN=ascend_... npx tsx mcp/server.ts

Testing with MCP Inspector

The MCP Inspector is an interactive tool for testing MCP servers:

bash
ASCEND_URL=https://ascend.optivationai.com ASCEND_API_TOKEN=ascend_... \
  npx @modelcontextprotocol/inspector npx tsx mcp/server.ts

This opens a browser UI where you can:

  • Browse all registered tools and their schemas
  • Execute tools with custom parameters
  • Read resources
  • Test prompt templates

Risk Classifications

Each tool has a risk level that your AI assistant can see:

LevelMeaningExamples
LowRead-only operations, safe to runlist_pages, get_database, search_workspace
MediumCreates or modifies datacreate_page, update_row, start_timer
HighDestructive or irreversible operationsdelete_page, delete_row, bulk_update_rows

INFO

High-risk tools are still available, but your AI assistant will typically ask for confirmation before executing them.


Troubleshooting

ProblemSolution
"Failed to connect to Ascend API"Ensure Ascend is running at the URL in ASCEND_URL
"Unauthorized" (401)Check your ASCEND_API_TOKEN is correct and not expired
"Team not found" (404)Your token's user may not be a member of any team
Tools not appearing in ClaudeRestart Claude Desktop after changing config
MCP server exits immediatelyCheck stderr output for error details

Debug mode

Run the MCP server directly in your terminal to see error output:

bash
ASCEND_URL=https://ascend.optivationai.com ASCEND_API_TOKEN=ascend_... npx tsx mcp/server.ts

All diagnostic messages are written to stderr.


Security

  • The MCP server authenticates with your personal API token
  • All requests go through Ascend's standard permission system
  • The server inherits your user's team membership and role
  • No data is stored locally — everything flows through the Ascend API
  • The MCP server runs as a local process on your machine

Related guides: