MCP server

The Model Context Protocol is an open standard for connecting LLM agents to external tools and data sources. Capvo ships a hosted MCP server at https://api.capvo.app/mcp that exposes your meetings as a small set of tools an agent can call directly. No scripting, no glue code.

If you use Claude Desktop, Cursor, or any other MCP-aware client, this is the fastest way to bring your transcripts into the conversation.

Setup

Claude Desktop

Open the Claude Desktop config file:

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

Add the capvo entry under mcpServers:

claude_desktop_config.json
{
  "mcpServers": {
    "capvo": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://api.capvo.app/mcp",
        "--header",
        "Authorization:Bearer ${CAPVO_API_KEY}"
      ],
      "env": {
        "CAPVO_API_KEY": "cpv_your_key"
      }
    }
  }
}

Quit Claude Desktop completely and reopen it. The Capvo tools should now appear in the tools menu.

Other MCP clients

Any client that supports remote MCP servers via mcp-remote (or its equivalent) can connect to the same URL. The server expects a standard Authorization: Bearer cpv_your_key header on every JSON-RPC request — pass it through whichever mechanism your client provides (--header, custom headers config, etc.).

Available tools

ToolDescription
list_meetingsList recent meetings with metadata. Supports filtering.
get_meetingFetch one meeting with its full transcript.
search_meetingsSemantic search across all your transcripts.
get_action_itemsPull just the action items extracted from a meeting.

list_meetings

{
  "name": "list_meetings",
  "input": {
    "platform": "meet",
    "created_after": "2026-04-01T00:00:00Z",
    "limit": 20
  }
}
interface ListMeetingsInput {
  platform?: 'meet' | 'zoom' | 'teams' | 'phone' | 'microphone'
  created_after?: string // ISO 8601
  created_before?: string // ISO 8601
  limit?: number // 1..100, default 20
}
 
interface ListMeetingsOutput {
  meetings: Array<{
    id: string
    title: string
    platform: string
    duration_seconds: number
    created_at: string
  }>
  has_more: boolean
}

get_meeting

{
  "name": "get_meeting",
  "input": { "id": "fd1c2b0e-08a2-4ee0-ab26-9f3a7a14b2c1" }
}
interface GetMeetingInput {
  id: string // UUID v4
}
 
interface GetMeetingOutput {
  id: string
  title: string
  platform: string
  duration_seconds: number
  created_at: string
  transcript: Array<{
    speaker: string
    sequence: number
    start_time: number
    content: string
  }>
  summary: string | null
}

search_meetings

{
  "name": "search_meetings",
  "input": { "query": "quarterly forecast", "limit": 5 }
}
interface SearchMeetingsInput {
  query: string
  limit?: number // 1..50, default 10
}
 
interface SearchMeetingsOutput {
  results: Array<{
    note_id: string // UUID v4
    title: string
    snippet: string
    score: number
    start_time: number // seconds into the recording where the match was found
  }>
}

get_action_items

{
  "name": "get_action_items",
  "input": { "id": "fd1c2b0e-08a2-4ee0-ab26-9f3a7a14b2c1" }
}
interface GetActionItemsInput {
  id: string // UUID v4
}
 
interface GetActionItemsOutput {
  action_items: Array<{
    text: string
    assignee: string | null
  }>
}

Configuration

The MCP server reads two configuration values from the environment forwarded by the client:

VariableRequiredDescription
CAPVO_API_KEYYesA valid API key. Same format as the REST API.
CAPVO_DEFAULT_LIMITNoDefault limit for list/search calls (1..100).

The server enforces the same per-key rate limits as the REST API. Tool calls that hit the limit return a structured error the agent can read and back off from.

Example prompts

Once the server is wired up, you can ask Claude things like:

  • "List my meetings from this week with the design team."
  • "Find every meeting where we talked about the Q3 budget. Quote the relevant lines."
  • "Summarize my last call with Maya and pull out the action items assigned to me."

The agent will call the appropriate tools, stitch the results together, and answer. You stay in control of which key it uses and which meetings it can see.