Transistor MCP Server

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Allows linking podcast episodes to YouTube videos by providing a video_url parameter when creating or updating episodes.

Servidor MCP de transistores

Este servidor MCP proporciona herramientas para interactuar con la API de Transistor.fm , lo que le permite administrar podcasts, episodios y ver análisis.

Configuración

Agregue el servidor a su archivo de configuración de MCP con su clave API de Transistor:

{ "mcpServers": { "transistor": { "command": "node", "args": ["path/to/Transistor-MCP/build/index.js"], "env": { "TRANSISTOR_API_KEY": "your-api-key-here" } } } }

Herramientas disponibles

obtener_usuario_autenticado

Obtenga detalles de la cuenta de usuario autenticada.

{ // No parameters needed }

autorizar_carga

Obtén una URL prefirmada para subir un archivo de audio. Úsala antes de crear un episodio con un archivo de audio local.

{ "filename": string // Required: Name of the audio file to upload }

La respuesta incluye:

  • upload_url: URL S3 firmada previamente para cargar el archivo
  • content_type: Tipo de contenido que se utilizará al cargar (por ejemplo, "audio/mpeg")
  • expires_in: Tiempo en segundos hasta que expire la URL de carga
  • audio_url: URL final que se utilizará al crear el episodio

lista_muestra

Lista todos los programas de tu cuenta de Transistor.fm, ordenados por fecha de actualización (los más recientes primero). Devuelve una lista paginada con 10 elementos por página.

{ "page": number, // Optional, defaults to 0 (first page) "per": number, // Optional, defaults to 10 items per page "private": boolean, // Optional: filter for private shows "query": string // Optional: search query }

Nota: Todos los parámetros son opcionales. Llamar a este punto final sin parámetros devolverá la primera página de programas.

lista_episodios

Enumere los episodios de un programa específico.

{ "show_id": string, // Required "page": number, // Optional, defaults to 0 "per": number, // Optional, defaults to 10 "query": string, // Optional: search query "status": string, // Optional: "published", "draft", or "scheduled" "order": string // Optional: "desc" (newest first) or "asc" (oldest first), defaults to "desc" }

obtener_episodio

Obtenga información detallada sobre un episodio específico.

{ "episode_id": string, // Required "include": string[], // Optional: array of related resources to include "fields": { // Optional: sparse fieldsets "episode": string[], // Fields to include for episode "show": string[] // Fields to include for show } }

obtener_analíticas

Obtén análisis de un programa o episodio específico. Si no se proporcionan fechas, se muestran los últimos 14 días de forma predeterminada.

{ "show_id": string, // Required "episode_id": string, // Optional: include for episode-specific analytics "start_date": string, // Optional: format "dd-mm-yyyy", required if end_date is provided "end_date": string // Optional: format "dd-mm-yyyy", required if start_date is provided }

crear_episodio

Crear un nuevo episodio.

{ "show_id": string, // Required "title": string, // Required "audio_url": string, // Required "summary": string, // Optional "description": string, // Optional: may contain HTML "transcript_text": string, // Optional: full episode transcript "author": string, // Optional "explicit": boolean, // Optional "image_url": string, // Optional: episode artwork "keywords": string, // Optional: comma-separated list "number": number, // Optional: episode number "season_number": number, // Optional "type": string, // Optional: "full", "trailer", or "bonus" "alternate_url": string, // Optional: override share_url "video_url": string, // Optional: YouTube URL "email_notifications": boolean, // Optional: override show setting "increment_number": boolean // Optional: auto-set next episode number }

actualización_episodio

Actualizar un episodio existente.

{ "episode_id": string, // Required "title": string, // Optional "summary": string, // Optional "description": string, // Optional: may contain HTML "transcript_text": string, // Optional: full episode transcript "author": string, // Optional "explicit": boolean, // Optional "image_url": string, // Optional: episode artwork "keywords": string, // Optional: comma-separated list "number": number, // Optional: episode number "season_number": number, // Optional "type": string, // Optional: "full", "trailer", or "bonus" "alternate_url": string, // Optional: override share_url "video_url": string, // Optional: YouTube URL "email_notifications": boolean // Optional: override show setting }

obtener_todos_los_análisis_de_episodios

Obtén análisis de todos los episodios de un programa. Si no se proporcionan fechas, se muestran los últimos 7 días de forma predeterminada.

{ "show_id": string, // Required "start_date": string, // Optional: format "dd-mm-yyyy", required if end_date is provided "end_date": string // Optional: format "dd-mm-yyyy", required if start_date is provided }

lista_webhooks

Enumera todos los webhooks de un programa.

{ "show_id": string // Required }

suscripción_webhook

Suscríbete a un webhook para ver un programa.

{ "event_name": string, // Required: e.g., "episode_created" "show_id": string, // Required "url": string // Required: URL to receive webhook events }

cancelar suscripción_webhook

Darse de baja de un webhook.

{ "webhook_id": string // Required }

Notas importantes

  • Las solicitudes de API tienen un límite de velocidad de 10 solicitudes cada 10 segundos (según lo prescrito en la ( https://developers.transistor.fm/#:~:text=API requests are rate-limited,to use the API again.)\[Referencia\[Transistor) de la API de Transistor])
  • Las fechas deben estar en formato "dd-mm-aaaa"
  • Los números de página comienzan en 0
  • Todos los puntos finales admiten:
    • Conjuntos de campos dispersos: especifique qué campos devolver mediante fields[resource_type][]
    • Incluir recursos relacionados: utilice include[] para obtener recursos relacionados en una sola solicitud
  • Las matrices de inclusión utilizan el formato ["resource_name"]
  • Los objetos de campos especifican qué campos devolver para cada tipo de recurso
  • Todas las herramientas devuelven datos en formato JSONAPI con relaciones y metadatos adecuados.

Ejemplo de uso

La lista muestra:

// List first page of shows (default behavior) const result = await use_mcp_tool({ server_name: "transistor", tool_name: "list_shows", arguments: {} }); // List shows with pagination and filtering const resultWithParams = await use_mcp_tool({ server_name: "transistor", tool_name: "list_shows", arguments: { page: 1, per: 20, private: true, query: "podcast" } });

Obtener detalles del episodio:

const result = await use_mcp_tool({ server_name: "transistor", tool_name: "get_episode", arguments: { episode_id: "123456", include: ["show"], fields: { episode: ["title", "summary", "description"], show: ["title"] } } });

Obtener análisis del programa:

// Get analytics for the last 14 days (default behavior) const result = await use_mcp_tool({ server_name: "transistor", tool_name: "get_analytics", arguments: { show_id: "123456" } }); // Get analytics for a specific date range const resultWithDates = await use_mcp_tool({ server_name: "transistor", tool_name: "get_analytics", arguments: { show_id: "123456", start_date: "01-01-2024", end_date: "31-01-2024" } }); // Get analytics for a specific episode const episodeAnalytics = await use_mcp_tool({ server_name: "transistor", tool_name: "get_analytics", arguments: { show_id: "123456", episode_id: "789012", start_date: "01-01-2024", end_date: "31-01-2024" } });

Actualización del episodio:

const result = await use_mcp_tool({ server_name: "transistor", tool_name: "update_episode", arguments: { episode_id: "123456", title: "Updated Episode Title", summary: "New episode summary", description: "New detailed description", season_number: 2, episode_number: 5 } });

Obtenga todos los análisis del episodio:

// Get analytics for all episodes for the last 7 days (default behavior) const result = await use_mcp_tool({ server_name: "transistor", tool_name: "get_all_episode_analytics", arguments: { show_id: "123456" } }); // Get analytics for all episodes for a specific date range const resultWithDates = await use_mcp_tool({ server_name: "transistor", tool_name: "get_all_episode_analytics", arguments: { show_id: "123456", start_date: "01-01-2024", end_date: "31-01-2024" } });

Administrar webhooks:

// List webhooks const webhooks = await use_mcp_tool({ server_name: "transistor", tool_name: "list_webhooks", arguments: { show_id: "123456" } }); // Subscribe to webhook const subscription = await use_mcp_tool({ server_name: "transistor", tool_name: "subscribe_webhook", arguments: { event_name: "episode_created", show_id: "123456", url: "https://your-webhook-endpoint.com/hook" } }); // Unsubscribe from webhook const unsubscribe = await use_mcp_tool({ server_name: "transistor", tool_name: "unsubscribe_webhook", arguments: { webhook_id: "webhook123" } });

Obtener usuario autenticado:

const result = await use_mcp_tool({ server_name: "transistor", tool_name: "get_authenticated_user", arguments: {} });

Autorizar la carga de archivos de audio:

// First, get a pre-signed upload URL const auth = await use_mcp_tool({ server_name: "transistor", tool_name: "authorize_upload", arguments: { filename: "my-episode.mp3" } }); // Then use the returned upload_url to upload your file via PUT request // Finally, use the returned audio_url when creating your episode: const episode = await use_mcp_tool({ server_name: "transistor", tool_name: "create_episode", arguments: { show_id: "123456", title: "My New Episode", audio_url: auth.data.attributes.audio_url } });

Aún no implementado

Las siguientes características de la API de Transistor aún no están implementadas:

  • Funcionalidad de Episodios Privados (gestión de suscriptores)
    • OBTENER /v1/suscriptores
    • OBTENER /v1/suscriptores/:id
    • POST /v1/suscriptores
    • POST /v1/suscriptores/lote
    • PARCHE /v1/suscriptores/:id
    • ELIMINAR /v1/suscriptores
    • ELIMINAR /v1/suscriptores/:id
-
security - not tested
A
license - permissive license
-
quality - not tested

Facilita la interacción con la API de Transistor.fm, ofreciendo capacidades para administrar podcasts, episodios y acceder a análisis de manera eficiente.

  1. Configuration
    1. Available Tools
      1. get_authenticated_user
      2. authorize_upload
      3. list_shows
      4. list_episodes
      5. get_episode
      6. get_analytics
      7. create_episode
      8. update_episode
      9. get_all_episode_analytics
      10. list_webhooks
      11. subscribe_webhook
      12. unsubscribe_webhook
    2. Important Notes
      1. Example Usage
        1. Not Yet Implemented
          ID: xyvobqi3am