Lenny Rachitsky Podcast Transcripts MCP Server

Tags

registry.modelcontextprotocol.io

Configuration

{
  "mcpServers": {
    "lenny-rachitsky-podcast": {
      "url": "https://lenny-rachitsky.run.mcp.com.ai/mcp",
      "type": "http"
    }
  },
  "requiresAuth": false,
  "requiresOAuth": false
}

Available Tools (8)

getEpisodes

List episodes - Lists episodes with parsed frontmatter (guest, title, duration, youtube_url, etc.) and their canonical resource URIs.

Input Schema
{
  "type": "object",
  "properties": {
    "sort": {
      "enum": [
        "recent",
        "views",
        "title"
      ],
      "type": "string"
    },
    "limit": {
      "type": "integer",
      "maximum": 200,
      "minimum": 1
    },
    "cursor": {
      "type": "string",
      "description": "Opaque pagination cursor"
    },
    "x-hapi-auth-state": {
      "type": "string"
    }
  }
}

getEpisodesGuest

Get an episode card (metadata + key URIs)

Input Schema
{
  "type": "object",
  "required": [
    "guest"
  ],
  "properties": {
    "guest": {
      "type": "string"
    },
    "x-hapi-auth-state": {
      "type": "string"
    }
  }
}

getEpisodesGuestMetadatajson

Get episode metadata as JSON (frontmatter)

Input Schema
{
  "type": "object",
  "required": [
    "guest"
  ],
  "properties": {
    "guest": {
      "type": "string"
    },
    "x-hapi-auth-state": {
      "type": "string"
    }
  }
}

getEpisodesGuestTranscriptformat

Get transcript in a specific format - Returns the transcript in the requested format: - md: markdown (may include or exclude frontmatter based on include_frontmatter) - txt: clean text (best for LLM ingestion) - json: structured form (metadata + transcript text)

Input Schema
{
  "type": "object",
  "required": [
    "guest",
    "format"
  ],
  "properties": {
    "guest": {
      "type": "string"
    },
    "format": {
      "enum": [
        "md",
        "txt",
        "json"
      ],
      "type": "string"
    },
    "x-hapi-auth-state": {
      "type": "string"
    },
    "include_frontmatter": {
      "type": "boolean"
    }
  }
}

getEpisodesGuestChunks

List chunk descriptors for an episode - Returns chunk boundaries and URIs for chunk retrieval. Chunks may be computed on-demand using size/overlap parameters.

Input Schema
{
  "type": "object",
  "required": [
    "guest"
  ],
  "properties": {
    "size": {
      "type": "integer",
      "maximum": 20000,
      "minimum": 200
    },
    "guest": {
      "type": "string"
    },
    "overlap": {
      "type": "integer",
      "maximum": 5000,
      "minimum": 0
    },
    "x-hapi-auth-state": {
      "type": "string"
    }
  }
}

getEpisodesGuestChunksChunkIdtxt

Get a specific transcript chunk as plain text

Input Schema
{
  "type": "object",
  "required": [
    "guest",
    "chunkId"
  ],
  "properties": {
    "guest": {
      "type": "string"
    },
    "chunkId": {
      "type": "integer",
      "minimum": 0
    },
    "x-hapi-auth-state": {
      "type": "string"
    }
  }
}

getSearch

Search episodes and transcripts - Searches across metadata (D1) and transcript text (Vectorize). Returns matches as resources, including per-hit URIs pointing to episode cards and transcript chunks. Note: pagination cursor applies to metadata search only. Example (vector search with filters): GET /search?q=pricing&mode=vector&guest=Marty%20Cagan&keywords=pricing,monetization&top_k=5

Input Schema
{
  "type": "object",
  "required": [
    "q"
  ],
  "properties": {
    "q": {
      "type": "string"
    },
    "mode": {
      "enum": [
        "metadata",
        "transcript",
        "vector",
        "both"
      ],
      "type": "string"
    },
    "guest": {
      "type": "string"
    },
    "limit": {
      "type": "integer",
      "maximum": 200,
      "minimum": 1
    },
    "title": {
      "type": "string"
    },
    "top_k": {
      "type": "integer",
      "maximum": 200,
      "minimum": 1
    },
    "cursor": {
      "type": "string",
      "description": "Opaque pagination cursor"
    },
    "keywords": {
      "type": "string"
    },
    "namespace": {
      "type": "string"
    },
    "episode_slug": {
      "type": "string"
    },
    "x-hapi-auth-state": {
      "type": "string"
    }
  }
}

postSearch

Search episodes and transcripts (POST body) - Same search as GET /search, but parameters are provided in the request body. This is useful for longer filter payloads.

Input Schema
{
  "type": "object",
  "required": [
    "undefinedBody"
  ],
  "properties": {
    "undefinedBody": {
      "type": "object",
      "required": [
        "q"
      ],
      "properties": {
        "q": {
          "type": "string"
        },
        "mode": {
          "enum": [
            "metadata",
            "transcript",
            "vector",
            "both"
          ],
          "type": "string"
        },
        "guest": {
          "type": "string"
        },
        "limit": {
          "type": "integer",
          "maximum": 200,
          "minimum": 1
        },
        "title": {
          "type": "string"
        },
        "top_k": {
          "type": "integer",
          "maximum": 200,
          "minimum": 1
        },
        "cursor": {
          "type": "string"
        },
        "keywords": {
          "type": "string"
        },
        "namespace": {
          "type": "string"
        },
        "episode_slug": {
          "type": "string"
        }
      }
    },
    "x-hapi-auth-state": {
      "type": "string"
    }
  }
}
Lenny Rachitsky Podcast Transcripts MCP Server by ai.com.mcp | RouterMCP