Skip to main content
Glama
gxjansen
by gxjansen

Servidor MCP de transistores

insignia de herrería

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"
      }
    }
  }
}

Related MCP server: MCP Spotify Server

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%20requests%20are%20rate%2Dlimited,to%20use%20the%20API%20again.)\[Referencia%5C%5BTransistor) 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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/gxjansen/Transistor-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server