Transistor MCP Server について
Transistor MCP Serverは、ポッドキャスト制作者やアカウント運用担当者向けに、Transistor.fm APIを操作するツールを提供します。番組・エピソード管理、分析、文字起こし、アップロード、Webhook、購読者の操作に対応し、コミュニティ版は現在積極的に保守されていません。
主な機能
- 01番組とエピソードの一覧・検索
- 02エピソードの作成・更新・公開
- 03音声のアップロードと文字起こし管理
- 04番組・エピソードの分析情報を取得
- 05番組のWebhookを管理
- 06非公開ポッドキャストの購読者を管理
活用シーン
- 01ポッドキャストのエピソードを準備・公開
- 02番組やエピソードの実績を確認
- 03文字起こしと音声ファイルをアップロード
- 04非公開ポッドキャストの購読者リストを管理
MCP 対応
Transistor.fmの番組、エピソード、分析、文字起こし、Webhook、アップロード、購読者の操作ツールをMCPクライアントに公開します。このコミュニティ版はAPIキーを使用し、READMEでは積極的な保守を終了したと記載されています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
23掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
Transistor MCP サーバー
Transistor.fm API 用の MCP サーバーです。AI エージェントから、ポッドキャスト、エピソード、分析、トランスクリプト、Webhook を管理できます。
重要
Transistor は公式 MCP サーバーを公開しました:mcp.transistor.fm。 リモートサーバー(インストール不要)で、API キーではなく OAuth で認証し、今後の API v2 の基盤として Transistor チームが保守しています。ほとんどの方にとってはこちらが適しています。まずはこちらをご利用ください。
公式サーバーの提供開始に伴い、このコミュニティサーバーは積極的な保守を終了しました。引き続き動作し、ローカルで API キーを使うサーバーを特に必要とする場合(たとえば、OAuth のブラウザーフローが使いにくいヘッドレス環境や自動化環境)には引き続き役立ちます。バグ修正の PR は歓迎します。機能のリクエストは公式サーバーにお寄せください。

この MCP サーバーは、Transistor.fm API を操作するツールを提供し、ポッドキャストやエピソードの管理、分析情報の確認ができます。上のデモに表示されているデータはサンプルであり、実際のアカウントの値ではありません。
フォークに関するお知らせ: 元のサーバーはGuido X Jansen(gxjansen/Transistor-MCP)によって構築されました。API 全体との互換性を実現するための対応(ドキュメントに記載されたすべてのパラメーター、応答のトリミング、検索)、
get_download_summaryおよびcompare_episodes分析ツール、ISO 日付の処理、トランスクリプト対応は、こちらで貢献され、すでに上流にマージされています。このリポジトリはパッケージ化され、npm で公開されたビルド(transistor-mcp)です。MIT ライセンスと元の著作権表示はLICENSEに保持されています。
概要
Conor Bronsdon が、Chain of Thought ポッドキャストの制作ワークフロー用に構築しました。公式サーバーが公開されるまでは、エピソードの作成、トランスクリプトのアップロード、分析データの取得に使用されていました。Conor は、AI インフラストラクチャと、実務者が実際にそれをどのように構築しているかを扱う番組 Chain of Thought のホストです。クリエイター向けのその他のツールはai-tools-for-creatorsをご覧ください。X では@ConorBronsdonをフォローしてください。
関連ツール:
- substack-mcp:投稿の閲覧と Substack 下書きの管理
- podcastindex-mcp:Podcast Index の検索とゲスト出演の追跡
- op3-mcp:OP3 のダウンロード数、リスナーの地域、利用アプリのレポート
- apple-podcasts-mcp:Apple Podcasts Connect から再生数、フォロワー数、エピソードごとのリスニングデータを取得
- gsc-mcp:Google Search Console の検索パフォーマンス、キーワード、サイトマップを照会
- podcast-benchmark:公開データのみを使って、番組を同種の番組と比較
設定
公式サーバーを使いますか? インストールは不要です。次の設定を Claude Code に追加してください。
claude mcp add --transport http transistor https://mcp.transistor.fm
次に /mcp を実行して Transistor にサインインします。OAuth に対応したリモートサーバーをサポートする他の MCP クライアントは、https://mcp.transistor.fm を直接指定できます。
代わりにこのコミュニティサーバーを実行する場合は、Transistor API キーを使って、MCP 設定ファイルに追加してください。
{
"mcpServers": {
"transistor": {
"command": "npx",
"args": ["-y", "transistor-mcp"],
"env": {
"TRANSISTOR_API_KEY": "your-api-key-here"
}
}
}
}
または、ローカルのクローンから実行します(npm install && npm run build の実行後)。
{
"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
}
型付きエラー
Transistor.fm API へのツール呼び出しが失敗した場合、一般的な Axios エラーではなく、isError: true を介して、ステータスに応じた人間が読みやすいメッセージを返します。内部では、TransistorApiClient が単一のレスポンスインターセプター(src/errors.ts を参照)で、認証エラー(401/403)、レート制限(429)、バリデーションエラー(400)、未検出(404)、サーバーエラー(5xx)など、すべての HTTP エラーを型付きエラークラスにマッピングします。そのため、表示されるメッセージには常にエラーの種類が示され、認証エラーの場合は TRANSISTOR_API_KEY 環境変数も案内されます。
重要な注意事項
- API リクエストは 10 秒あたり 10 件にレート制限されています((https://developers.transistor.fm/#:~:text=API%20requests%20are%20rate%2Dlimited,to%20use%20the%20API%20again.)[Transistor API reference] に定められています)
- 日付は "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
}
});
publish_episode
エピソードを公開、予約、または非公開にします。
{
"episode_id": string, // Required
"status": string, // Required: "published", "scheduled", or "draft"
"published_at": string // Optional: date/time in the podcast's time zone (required for "scheduled")
}
get_show
単一の番組の詳細を取得します。
{
"show_id": string // Required
}
update_show
番組のメタデータを更新します。
{
"show_id": string, // Required
"author": string, // Optional
"category": string, // Optional: primary podcast category
"copyright": string, // Optional
"description": string, // Optional
"explicit": boolean, // Optional
"image_url": string, // Optional: show artwork URL
"keywords": string, // Optional: comma-separated
"language": string, // Optional: e.g. "en"
"owner_email": string, // Optional
"secondary_category": string, // Optional
"show_type": string, // Optional: "episodic" or "serial"
"title": string, // Optional
"time_zone": string, // Optional
"website": string // Optional
}
list_subscribers
プライベートポッドキャストの購読者を一覧表示します。
{
"show_id": string, // Required
"page": number, // Optional
"per": number, // Optional
"query": string // Optional: search filter
}
get_subscriber
単一の購読者の詳細を取得します。
{
"subscriber_id": string // Required
}
create_subscriber
プライベートポッドキャストに購読者を追加します。
{
"show_id": string, // Required
"email": string, // Required
"skip_welcome_email": boolean // Optional (default false)
}
create_subscribers_batch
複数の購読者を一度に追加します。
{
"show_id": string, // Required
"emails": string[], // Required: array of email addresses
"skip_welcome_email": boolean // Optional (default false)
}
update_subscriber
購読者のメールアドレスを更新します。
{
"subscriber_id": string, // Required
"email": string // Required: new email address
}
delete_subscriber
ID、または番組とメールアドレスで購読者を削除します。
{
"subscriber_id": string, // Optional: delete by subscriber ID
"show_id": string, // Optional: use with email instead of subscriber_id
"email": string // Optional: use with show_id instead of subscriber_id
}
コントリビューション
公式の Transistor MCP が公開されたため、このサーバーは現在メンテナンスモードです。バグ報告やバグ修正の PR は引き続き歓迎します。ツール名と実行しようとしていたリクエストを記載して Issue を作成するか、リポジトリをフォークして npm install && npm run build を実行し、変更内容とその理由を説明した PR を作成してください。新機能のリクエストは、Transistor が積極的に開発している公式サーバーにお寄せください。
免責事項
このアカウントで表明されるすべての見解、意見、声明は、私個人のものであり、個人としての立場で述べています。これらは Modular の見解、立場、方針を反映するものではなく、そのように解釈されるべきでもありません。このアカウントは、いかなる形でも Modular と提携、承認、または公認されていません。
ライセンス
MIT。このリポジトリは gxjansen/Transistor-MCP のフォークです。Guido X Jansen による元の著作権表示は LICENSE に保持されています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。