トランジスタ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"
}
}
}
}
利用可能なツール
認証済みユーザーを取得する
認証されたユーザー アカウントの詳細を取得します。
{
// 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
}
重要な注意事項
使用例
リストには以下が表示されます:
// 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 を削除