# spokenmd/spoken [Health: Active]

**Category:** 🎙️ Speech-to-Text  
**Repository:** https://github.com/spokenmd/spoken  
**GitHub Stars:** 5  
**npm Downloads (last month):** 493  
**Views:** 5  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/spokenmd-spoken

## Description
Fetch published podcast transcripts as clean Markdown with real speaker names (not "Speaker 1") via the Spoken API. Search episodes, get transcripts, check credit balance.

## Tools
Capabilities this server exposes over MCP:

- **search_podcasts** — Search published podcast episodes by text query, or paste an episode URL (Spotify, YouTube, etc.). Returns matching episodes with their id, title, podcast, podcast_id, and date. Use the id with get_transcript, or the podcast_id with list_episodes to get the show's whole back-catalog. Does not consume credits.
- **get_transcript** — Fetch a podcast episode's transcript as clean Markdown with real speaker names and timestamps. Pass an episode id from search_podcasts. Costs 1 credit on the first fetch of an episode; repeat fetches are free and errors are never charged.
- **list_episodes** — List a podcast's entire back-catalog (every episode, newest first). Pass a podcast_id from a search_podcasts result. Returns each episode's id, title, and date — fetch any with get_transcript. Use this to transcribe a whole show. Does not consume credits itself; transcribing the returned episodes costs 1 credit each (repeat fetches are free), so make sure the key has enough credits before looping.
- **get_balance** — Check the current Spoken credit balance, account email, and recent usage for the configured API key. Does not consume credits.
- **list_following** — The shows this key is kept current on. Every charged fetch makes its show a follow: the five most-fetched shows from the last 180 days are followed automatically (source 'fetch'), and up to 25 more can be declared with follow_podcast (source 'explicit'). Muted shows are listed separately. Use list_new_episodes to see what is new on them. Does not consume credits; the demo key has nothing to follow with.
- **follow_podcast** — Declare a follow for a show, or clear a mute. Pass a podcast_id from search_podcasts. A declared follow stays until unfollow_podcast, regardless of fetch activity, and does not use one of the five automatic slots. For a show never fetched, what counts as new starts from its newest episode now. Does not consume credits.
- **unfollow_podcast** — Mute a show: it leaves the followed list and later fetches do not re-add it. follow_podcast reverses it. Pass a podcast_id from list_following. Does not consume credits.
- **list_new_episodes** — What is new on the shows this key follows: for each show, the episodes released in the last 90 days that are newer than the newest one already fetched from it (up to 10 per show), each with a transcript_url. Episodes with no transcript are left out. Fetch any with get_transcript (1 credit each on first fetch); a fetch raises that show's floor, so the next call lists only what came after. Refreshed hourly, so a show followed moments ago may be empty until its first poll. Does not consume credits.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "spoken": {
    "command": "npx",
    "args": ["-y","spoken-mcp"]
  }
}
```

## Documentation

## What the spokenmd/spoken MCP server does

The spokenmd/spoken MCP server connects MCP-compatible agents to Spoken, an API for retrieving transcripts from published podcasts. Retrieved transcripts are returned as Markdown with timestamps and resolved speaker names where available, making them suitable for summarization, search, RAG chunking, and other text-based workflows.

The service is focused on retrieval, not speech recognition. It does not require an agent to upload audio, run diarization, or map anonymous labels such as “Speaker 1.” Search can use ordinary text or a pasted Spotify or YouTube URL. A separate episode-listing operation can return the full back catalog for a podcast when its podcast ID is known.

## Tools and capabilities

The spokenmd/spoken MCP server exposes four tools:

- `search_podcasts`: Finds episodes from a text query or Spotify/YouTube URL.
- `list_episodes`: Lists a podcast’s episodes using its `podcast_id`.
- `get_transcript`: Retrieves an episode transcript as Markdown with speaker names and timestamps.
- `get_balance`: Checks the remaining credit balance.

Searches and episode listings do not consume credits. The first transcript fetch costs one credit, while repeat fetches are free. Responses from the underlying API include credit usage headers, and failed calls are not charged according to the service description. The MCP tool set does not expose the API’s checkout or top-up endpoints.

## Setup and configuration

Install the server through npm and configure it as a stdio MCP server:

```json
{
  "mcpServers": {
    "spoken": {
      "command": "npx",
      "args": ["-y", "spoken-mcp"],
      "env": {
        "SPOKEN_API_KEY": "pt_your_key"
      }
    }
  }
}
```

The spokenmd/spoken MCP server reads credentials from `SPOKEN_API_KEY`. If the variable is omitted, it uses the `pt_demo` key. That demo key supports searching fully, but transcript access is limited to the demo episode. A real key can be obtained from spoken.md; the API uses pay-per-use credits rather than a subscription.

The repository also documents running from source with `npm install`, `npm run build`, and `node dist/index.js`, with the API key supplied in the environment. The package is documented for Claude Desktop, Cursor, and Cline, and the repository describes the service as usable with MCP-compatible agents.

## Limitations and notes

This server depends on Spoken’s external API and an API key. It works with already-published podcasts; it is not a general-purpose speech-to-text server for uploaded audio. Transcript retrieval consumes credits on the first fetch, so agents should account for credit availability when processing many episodes. Use `get_balance` to inspect remaining credits before larger retrieval tasks.

The useful workflow is usually to search first, identify an episode ID, and then request its transcript. For archiving a show, an agent can list the back catalog and fetch episodes individually. Transcript quality and speaker-name resolution depend on what Spoken provides for the selected published podcast; the material does not specify coverage guarantees for every show.

_Full upstream README: https://allmcps.com/mcp/spokenmd-spoken/readme_

