mcpField
T
Transistor MCP Server

Transistor MCP Server

ローカル
github.com/gxjansenメディア・デザイン119 週間前に更新

Transistor MCP Server について

Transistor MCP Server は、ポッドキャスト運用のために LLM を Transistor.fm API に接続します。番組やエピソードの管理、分析、Webhook、購読者管理に対応します。

主な機能

  1. 01番組とエピソードの管理
  2. 02エピソードの作成と公開
  3. 03ダウンロード分析の確認
  4. 04Webhook と購読者の管理
  5. 05署名付き URL による音声アップロード

活用シーン

  1. 01番組やエピソードの実績確認
  2. 02ポッドキャストエピソードの作成・更新
  3. 03プライベートポッドキャストの購読者管理
  4. 04番組イベントの Webhook 登録

MCP 対応

番組・エピソード管理、分析、Webhook、購読者管理などの Transistor.fm API 操作を MCP ツールとして提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Transistor MCP サーバー

smithery badge

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

利用可能なツール

get_authenticated_user

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

{
  // No parameters needed
}
authorize_upload

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

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

レスポンスには次の情報が含まれます。

  • upload_url:ファイルのアップロードに使用する署名付き S3 URL
  • content_type:アップロード時に使用するコンテンツタイプ(例:"audio/mpeg")
  • expires_in:アップロード URL の有効期限までの秒数
  • audio_url:エピソード作成時に使用する最終 URL
list_shows

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
}

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

list_episodes

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

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

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

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

番組または特定のエピソードの分析データを取得します。日付を指定しない場合、直近 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
}
create_episode

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

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

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

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

番組のすべてのエピソードの分析データを取得します。日付を指定しない場合、直近 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
}
list_webhooks

番組のすべての Webhook を一覧表示します。

{
  "show_id": string            // Required
}
subscribe_webhook

番組の Webhook を購読します。

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

Webhook の購読を解除します。

{
  "webhook_id": string        // Required
}
get_show

ID で番組を取得します。

show_id: string   // Required
update_show

番組を更新します。

show_id: string   // Required
author: string   // Optional
category: string   // Optional
copyright: string   // Optional
description: string   // Optional
explicit: boolean   // Optional
image_url: string   // Optional
keywords: string   // Optional
language: string   // Optional
owner_email: string   // Optional
secondary_category: string   // Optional
show_type: "episodic" | "serial"   // Optional
title: string   // Optional
time_zone: string   // Optional
website: string   // Optional
publish_episode

メタデータを編集せずに、エピソードを公開または予約公開します。

episode_id: string   // Required
status: "published" | "scheduled" | "draft"   // Required
published_at: string   // Optional
get_download_summary

番組またはエピソードの計算済みダウンロード概要を取得します。合計ダウンロード数、1 日あたりの平均、前週比の推移、最多・最少の曜日を返します。

show_id: string   // Required
episode_id: string   // Optional
start_date: string   // Optional
end_date: string   // Optional
compare_episodes

複数のエピソードのダウンロード実績を、合計ダウンロード数順に比較します。

episode_ids: string[]   // Required - array of episode IDs
start_date: string   // Optional
end_date: string   // Optional
list_subscribers

番組の登録者を一覧表示します。

show_id: string   // Required
page: number   // Optional
per: number   // Optional
query: string   // Optional
get_subscriber

ID で登録者を取得します。

subscriber_id: string   // Required
create_subscriber

登録者を作成します。

show_id: string   // Required
email: string   // Required
skip_welcome_email: boolean   // Optional
create_subscribers_batch

1 回のリクエストで複数の登録者を作成します。

show_id: string   // Required
emails: string[]   // Required
skip_welcome_email: boolean   // Optional
update_subscriber

登録者のメールアドレスを更新します。

subscriber_id: string   // Required
email: string   // Required
delete_subscriber

登録者を削除します。subscriber_id、または show_id と email の両方を指定してください。

subscriber_id: string   // Optional - either this, or both show_id + email
show_id: string   // Optional - required with email when no subscriber_id
email: string   // Optional - required with show_id when no subscriber_id

重要な注意事項

  • API リクエストには、(Transistor API リファレンス)に記載されているとおり、10 秒あたり 10 件のレート制限があります。
  • 日付には ISO 形式の yyyy-mm-dd(推奨)を指定できます。Transistor API の dd-mm-yyyy 形式に自動変換されます。また、dd-mm-yyyy 形式も使用できます。
  • ページ番号は 0 から始まります。
  • すべてのエンドポイントで次の機能を利用できます。
    • スパースフィールドセット:fields[resource_type][] を使用して、返すフィールドを指定します。
    • 関連リソースの取り込み:include[] を使用して、関連リソースを 1 回のリクエストで取得します。
  • Include 配列は ["resource_name"] の形式で指定します。
  • Fields オブジェクトでは、リソースタイプごとに返すフィールドを指定します。
  • すべてのツールは、適切なリレーションシップとメタデータを含む 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
  }
});

対応範囲

このサーバーは、番組、エピソード、分析、ダウンロード概要、Webhook、プライベートポッドキャストの購読者管理(GET/POST/PATCH/DELETE /v1/subscribers)を含む、Transistor API のドキュメント化された全機能に対応しています。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。