Skip to main content
Glama
gxjansen
by gxjansen

トランジスタMCPサーバー

鍛冶屋のバッジ

この MCP サーバーは、 Transistor.fm API と対話するためのツールを提供し、ポッドキャストやエピソードを管理したり、分析を表示したりできるようにします。

構成

Transistor API キーを使用して、サーバーを MCP 設定構成ファイルに追加します。

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

利用可能なツール

認証済みユーザーを取得する

認証されたユーザー アカウントの詳細を取得します。

{
  // No parameters needed
}

アップロードの承認

音声ファイルをアップロードするための署名付きURLを取得します。ローカルの音声ファイルを使ってエピソードを作成する前に、このURLを使用してください。

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

回答には以下が含まれます:

  • upload_url: ファイルをアップロードするための署名済みS3 URL

  • content_type: アップロード時に使用するコンテンツタイプ(例:「audio/mpeg」)

  • 有効期限: アップロード URL の有効期限が切れるまでの時間 (秒)

  • audio_url: エピソードを作成するときに使用する最終 URL

リスト_ショー

Transistor.fmアカウント内のすべての番組を、更新日順(新しい順)にリストします。1ページあたり10件のページ区切りリストを返します。

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

注: すべてのパラメータはオプションです。パラメータを指定せずにこのエンドポイントを呼び出すと、番組の最初のページが返されます。

エピソード一覧

特定の番組のエピソードを一覧表示します。

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

エピソードを取得する

特定のエピソードに関する詳細情報を取得します。

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

取得アナリティクス

番組または特定のエピソードの分析情報を取得します。日付が指定されていない場合は、過去14日間のデータがデフォルトになります。

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

エピソードを作成

新しいエピソードを作成します。

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

アップデートエピソード

既存のエピソードを更新します。

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

すべてのエピソード分析を取得する

番組の全エピソードの分析情報を取得します。日付が指定されていない場合は、過去7日間がデフォルトになります。

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

ウェブフック一覧

ショーのすべての Webhook を一覧表示します。

{
  "show_id": string            // Required
}

subscribe_webhook

番組のウェブフックをサブスクライブします。

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

購読解除ウェブフック

Webhook の登録を解除します。

{
  "webhook_id": string        // Required
}

重要な注意事項

  • API リクエストは、10 秒あたり 10 リクエストまでに制限されます ( https://developers.transistor.fm/#:~:text=API%20requests%20are%20rate%2Dlimited,to%20use%20the%20API%20again.)\[Transistor%5C%5BTransistor) API リファレンス] で規定されているとおり)

  • 日付は「dd-mm-yyyy」形式で入力する必要があります

  • ページ番号は0から始まります

  • すべてのエンドポイントは以下をサポートします:

    • スパースフィールドセット: fields[resource_type][]を使用して返すフィールドを指定します。

    • 関連リソースのインクルード: include[]を使用して、1回のリクエストで関連リソースを取得します。

  • インクルード配列は["resource_name"]形式を使用します

  • フィールドオブジェクトは、各リソースタイプに対してどのフィールドを返すかを指定します。

  • すべてのツールは、適切な関係とメタデータを含むJSONAPI形式でデータを返します。

使用例

リストには以下が表示されます:

// 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"
  }
});

エピソードの詳細を見る:

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"]
    }
  }
});

番組分析を取得:

// 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"
  }
});

エピソードを更新:

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
  }
});

すべてのエピソード分析を取得:

// 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"
  }
});

Webhook を管理する:

// 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"
  }
});

認証されたユーザーを取得する:

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

オーディオファイルのアップロードを承認:

// 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
  }
});

まだ実装されていません

次の Transistor API 機能はまだ実装されていません。

  • プライベートエピソード機能(登録者管理)

    • /v1/subscribers を取得する

    • /v1/subscribers/:id を取得する

    • POST /v1/subscribers

    • POST /v1/subscribers/batch

    • /v1/subscribers/:id にパッチを適用する

    • /v1/subscribers を削除する

    • /v1/subscribers/:id を削除

A
license - permissive license
-
quality - not tested
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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