OpenTranscribe MCP について
OpenTranscribe MCPは、アクセス権のある音声を選択した音声認識プロバイダーに送り、共通スキーマの文字起こし結果を返すMCPサーバーです。録音元やプロバイダーを変えても、後続のワークフローを維持したい運用者向けです。
主な機能
- 01Microsoft、ElevenLabs、Groqで音声を文字起こし
- 02モデルとルーティングポリシーの選択
- 03モデル機能の確認とコスト見積もり
- 04文字起こしチャンクの取得または削除
- 05HTTP認証と任意の結果保存
活用シーン
- 01許可された音声ファイルやHTTPS URLを文字起こし
- 02文字起こしの利用側を変えずにプロバイダーを切り替え
- 03コスト、品質、レイテンシーに応じてリクエストを振り分け
- 04文字起こしチャンクの取得または結果の削除
MCP 対応
`/mcp`のMCP Streamable HTTPを通じて、文字起こし、モデル一覧、コスト見積もり、結果の取得と削除のツールを提供します。認証にはベアラートークンまたは外部OIDCを利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx open-transcribe-mcpOT_HOSTLoopback address used by the locally installed server.OT_PORTPort used by the locally installed Streamable HTTP server.OT_SECURITY__BEARER_TOKENシークレットA strong, random token shared with the local MCP client.OT_MICROSOFT__ENDPOINTOptional Microsoft Speech resource endpoint.OT_MICROSOFT__API_KEYシークレットOptional Microsoft Speech API key.OT_ELEVENLABS__API_KEYシークレットOptional ElevenLabs API key.OT_GROQ__API_KEYシークレットOptional Groq API key.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
OpenTranscribe MCP
レコーダーは自分で選び、文字起こしの能力は自由に選びましょう。
OpenTranscribe は、音声を任意の音声認識モデルにルーティングし、プロバイダーに依存しない単一の文字起こしスキーマを返すオープンソースの MCP サーバーです。
その基本となる考え方はシンプルです。優れたレコーダーを購入しても、特定の文字起こしサブスクリプションに縛られるべきではありません。Plaud、スマートフォン、オープンソースのウェアラブルデバイス、またはアクセスが許可されているその他の音声ソースを使い、後続のワークフローを変更せずに Microsoft MAI、ElevenLabs Scribe、または Groq Whisper を選べます。
OpenTranscribe は、ハードウェアの脱獄やアクセス制御の回避は行いません。オペレーターがアクセスを許可されている音声のみを扱います。
仕組み
OpenTranscribe は連携の境界を一定に保ちます。レコーダーが音声ファイルまたは HTTPS URL を提供し、サーバーが要求された音声認識プロバイダーを選択または呼び出し、後続のツールには常に同じ標準的な文字起こし形式が渡されます。
v1 の内容
/mcpでの MCP Streamable HTTP。ステートレス動作に対応し、Bearer 認証または外部 OIDC 認証を利用可能transcribe_audio、list_transcription_models、estimate_transcription_cost、get_transcript_chunk、delete_transcript- Microsoft
MAI-Transcribe-2、ElevenLabsscribe-v2、Groq Whisper のアダプター - 明示的な機能ネゴシエーション、ルーティングポリシー、再試行、可観測なフォールバック
- 対応している場合の HTTPS URL パススルーと、それ以外の場合の上限付きストリーミングプロキシ
- SSRF 対策、署名付き URL の秘匿化、コンテンツのログ記録なし、コストとリソースの制限
- デフォルトでは保持を無効化。オプションでメモリまたは S3 互換の一時結果ストレージを利用可能
- Docker、本番環境向け Scaleway Serverless Containers Terraform、テスト、GitHub Actions CI
Linux デスクトップで
オプションの Debian パッケージ OpenTranscribe Setup には、Python ランタイム、エンジン、ネイティブのセットアップアプリケーションが含まれています。インストールしてプロバイダーキーを追加し、ローカルの MCP クライアントに接続するだけです。Python も uv も設定ファイルも必要ありません。その後、エンジンはクライアントが所有する単一の STDIO プロセスとして実行され、ネットワークソケットを開きません。
以下のホスト版とコマンドライン版の利用方法には影響しません。Linux での OpenTranscribe Setup を参照してください。リリースの検証記録は docs/desktop-acceptance.md にあり、すべてのシナリオは 未テスト から始まります。
10 分で始める
要件:Python 3.12 と uv、または Docker。
git clone https://github.com/fbossiere/open-transcribe-mcp.git
cd open-transcribe-mcp
選択したプロバイダーの設定と、強力なランダム MCP ベアラートークンのみを含む非公開の .env を作成します。Microsoft の場合:
OT_ENVIRONMENT=prod
OT_HOST=127.0.0.1
OT_DEFAULT_PROVIDER=microsoft
OT_DEFAULT_MODEL=MAI-Transcribe-2
OT_MICROSOFT__ENDPOINT=https://YOUR-RESOURCE.cognitiveservices.azure.com
OT_MICROSOFT__API_KEY=YOUR-KEY
OT_SECURITY__AUTH_MODE=bearer
OT_SECURITY__BEARER_TOKEN=YOUR-RANDOM-TOKEN
他のサービスでは、完全な Groq、ElevenLabs、または複数プロバイダーの設定例を使用してください。.env.example は設定項目の一覧なので、使用しない設定は空の URL や数値のまま残さず、省略してください。chmod 600 .env でファイルを保護してください。
サーバーを起動します。
uv sync
uv run open-transcribe-mcp
MCP エンドポイントは http://localhost:8000/mcp です。/healthz と /readyz でプローブを利用できます。
接続したプロバイダーで、付属のバイリンガルな2話者の合成録音を実行します。
uv run python examples/transcribe.py --token YOUR-RANDOM-TOKEN
テスト用音声ファイルと参照トランスクリプトは機密情報を含まず、再配布可能です。独自の音源を使うには、最初の引数として、別の認証済み公開 HTTPS 音声 URL を渡してください。
FastMCP クライアントを接続します。
import asyncio
from fastmcp import Client
async def main() -> None:
async with Client("http://localhost:8000/mcp", auth="YOUR-RANDOM-TOKEN") as client:
models = await client.call_tool("list_transcription_models", {})
print(models)
result = await client.call_tool(
"transcribe_audio",
{
"request": {
"source": {"type": "url", "url": "https://example.org/authorized-audio.mp3"},
"provider": "auto",
"routing_policy": "quality",
}
},
)
print(result)
asyncio.run(main())
プロバイダーを選択しても、レスポンスの仕様は変わりません。provider と model を設定して明示的に切り替えるか、auto と default、quality、cost、latency のいずれかを組み合わせてルーティングします。
上記では、意図的に diarization、timestamps、transcript_style を設定していません。未設定の機能は要求されないため、リクエストは設定済みの任意のモデルにルーティングされ、レスポンスのメタデータに、そのモデルが適用した内容が記録されます。これらを指定すると必須条件になります。たとえば "diarization": True を指定すると、話者識別に対応できないすべてのモデルが除外され、単一話者のトランスクリプトが黙って返されることはありません。プロバイダーと機能を参照してください。
Docker
公開イメージと、クイックスタートで使った非公開の環境ファイルを使用します。
docker run --rm --env-file .env \
-e OT_ENVIRONMENT=prod -e OT_HOST=0.0.0.0 \
-p 127.0.0.1:8000:8000 \
ghcr.io/fbossiere/open-transcribe-mcp:1.2.2
ホストのポートはローカルにバインドされます。リモートでホストする場合は、その前段に HTTPS プロキシを配置してください。docker build -t open-transcribe-mcp:1.2.2 . を実行して、ソースからビルドすることもできます。プロバイダーの認証情報は実行時に渡してください。イメージには s3 エクストラが含まれていますが、設定しない限り結果の保存は無効のままです。
Scaleway にデプロイする
リファレンス用の infra/scaleway モジュールは、非公開イメージレジストリ、0 までスケールダウンする Serverless Container(0~3 インスタンス)、HTTPS イングレス、ヘルスプローブをプロビジョニングします。オプションで、TTL 付きの結果バケットと実行時 ID を追加できます。
-
専用の Scaleway Project と、記載されている IAM 権限を持つデプロイ用 API キーを作成します。デプロイ用シェルに
SCW_ACCESS_KEYとSCW_SECRET_KEYを渡してください。 -
infra/scaleway/terraform.tfvars.exampleを、そのディレクトリ内のterraform.tfvarsにコピーします。プロジェクト ID、プロバイダーキー、認証設定、およびimage_tag = "1.2.2"を入力してください。このテンプレートでは ElevenLabs と Groq を設定します。使用前に ElevenLabs の保持期間の選択を確認してください。 -
レジストリをブートストラップし、公開リリースイメージをレジストリにコピーしてから、デプロイ全体を確認して適用します。
infra/scalewayで次を実行します。terraform init terraform apply -target=scaleway_registry_namespace.this IMAGE_REFERENCE="$(terraform output -raw image_reference)" REGISTRY_ENDPOINT="$(terraform output -raw registry_endpoint)" printf '%s' "$SCW_SECRET_KEY" | docker login "${REGISTRY_ENDPOINT%%/*}" \ --username nologin --password-stdin docker buildx imagetools create --tag "$IMAGE_REFERENCE" \ ghcr.io/fbossiere/open-transcribe-mcp:1.2.2 terraform plan -out=open-transcribe.tfplan terraform apply open-transcribe.tfplan terraform output -raw mcp_endpoint -
/healthz、/readyz、MCP 認証、および短い認証済みのトランスクリプションを1件確認します。Scaleway の完全ガイドでは、リリースダイジェストの検証、既存デプロイの取り込み、OIDC の設定、アップグレード、ロールバック、結果ストアの権限について説明しています。
ブートストラップ時の適用は、新しいインフラストラクチャ向けです。既存のレジストリ、名前空間、コンテナを保持するには、まずそれらを state にインポートし、ID とエンドポイントを維持してください。実際の terraform.tfvars、state、保存済みプランは非公開にしてください。出力が秘匿化されていても、state やプランにはシークレットが含まれる場合があります。リリースを公開しても、Scaleway のデプロイは自動的には更新されません。
設定とサービスの組み合わせ
プロバイダー、MCP 認証、結果の保存先はそれぞれ独立して選択できます。プロバイダーのキーはサーバー上に保持され、ツールの引数として受け付けられることはありません。環境変数や Terraform の設定例、設定の優先順位、キーの権限、トラブルシューティングについては、完全な設定ガイドを参照してください。
| 文字起こしサービス | 設定 | 用途と制限 |
|---|---|---|
| Microsoft のみ | Microsoft のエンドポイントとキー。デフォルトは microsoft / MAI-Transcribe-2 | 話者分離と、整文・逐語の出力に対応 |
| ElevenLabs のみ | ElevenLabs のキー。デフォルトは elevenlabs / scribe-v2 | 話者分離に対応。適格なゼロ保持、または明示的に承認した標準モードを選択 |
| Groq のみ | Groq のキー。デフォルトは groq / Whisper モデル | 逐語文字起こしに対応。話者分離には非対応 |
| 複数のプロバイダー | 各プロバイダーの認証情報。一致するデフォルトの組み合わせを 1 つ設定 | リクエストで設定済みのプロバイダーを選択できます。互換性は順位付けの前に確認されます |
OT_DEFAULT_PROVIDER と OT_DEFAULT_MODEL は優先設定であり、プロバイダーの許可リストではありません。明示的なリクエストでは、ほかの設定済みモデルも選択できます。ホスト型のリクエストでは、デフォルトで一時的なフォールバックが許可されます。音声を 1 つのプロバイダーだけに送信する必要がある場合は、allow_fallback=false を使用してください。フランス語の話者ターンを必須にするには、language=fr、diarization=true、strict_capabilities=true を指定してください。Scribe のレシピを参照してください。Groq はこの要件を満たせないため、話者分離のない文字起こしを黙って返すのではなく、リクエストが拒否されます。
| 認証/保存先 | 必要な設定 | 組み合わせのルール |
|---|---|---|
| HTTP ベアラー | MCP トークン。Terraform では auth_mode = "bearer" | すべてのプロバイダーで使用可能。トークンはプロバイダーのキーとは別です |
| HTTP OIDC | 発行者、JWKS、サービスのオリジン、スコープ、エンタイトルメント。auth_mode = "oidc" | すべてのプロバイダーで使用可能。Keycloak などの外部 ID プロバイダーを使用してください |
| 管理対象デスクトップ STDIO | Setup TOML と Secret Service キーリング | ローカルプロセスの認証。Setup でプロバイダーとプライバシー権限を有効にしてください |
| 結果を保存しない | デフォルトは disabled。Terraform では enable_result_store = false | インライン出力。保存対象またはサイズ超過の自動結果は明示的に失敗します |
| 一時的な S3 結果 | カーソルシークレット。Terraform では enable_result_store = true | インスタンス間でチャンクを共有し、有効期限と削除に対応。追加の IAM 権限が必要です |
| メモリー結果 | OT_RESULT_STORE__BACKEND=memory とカーソルシークレット | ローカル/テスト専用。Scaleway のコールドスタートや複数インスタンスには適しません |
ElevenLabs へのリクエストでは、デフォルトでゼロ保持が指定されます。この設定には、条件を満たす Enterprise アカウントが必要です。標準アカウントでは、プロバイダー側のデータ保持を承認したうえで、OT_ELEVENLABS__ZERO_RETENTION=false を明示的に選択する必要があります。OpenTranscribe の保存を無効にしても、プロバイダー側のデータ保持は無効になりません。設定とデータ保持を参照してください。
通常の HTTP では、作業ディレクトリの .env よりも OT_* 環境変数が優先されます。Terraform は、プライベートな tfvars の非シークレット用マップとシークレット用マップを注入し、本番環境のセキュリティ設定を適用します。管理対象デスクトップモードでは、環境変数の設定は無視されます。キーリングにキーがあっても、それだけでプロバイダーが有効になるわけではありません。キーやデフォルト設定の変更には、再起動または Terraform の適用が必要で、新しいアプリケーションイメージは不要です。新しいアプリケーションバージョンには、公開済みのイメージと、それとは別のデプロイ更新が必要です。
公開とアップグレード
公開プロトコルは、メンテナー向けの運用手順書です。セマンティックバージョニング、バージョンの整合性、ローカルチェック、リリースPR、レビュー済みのmainからの署名付きタグ、自動公開、成果物の検証、および一部失敗後の復旧について説明しています。
Gitタグにはv1.2.2を使用し、Python/MCPメタデータとイメージタグには1.2.2を使用します。ワークフローではPyPI、MCP Registry、GHCR、Linuxパッケージを公開した後、チェックサムと来歴情報を含む不変のGitHubリリースを作成します。各デプロイでは、それぞれ独自のバージョンと構成を選択します。Scalewayをアップグレードするには、選択したリリースをプライベートレジストリにコピーし、image_tag(固定する場合はリリースダイジェストも)を更新して、計画を確認し、適用してエンドポイントを検証します。
セキュリティとプライバシーのデフォルト設定
- ソースにはHTTPSが必須です。
- プライベート、ループバック、リンクローカル、マルチキャスト、予約済み、およびメタデータの宛先は拒否されます。
- リダイレクト先はすべて解決され、検証されます。
- プロキシによるダウンロードでは、HTTPSのSNIと元のHostヘッダーを維持しながら、検証済みのパブリックIPに接続します。
- ソースのダウンロードはバイト数の上限を設けて一時ファイルにストリーミングされ、その後削除されます。
- 署名付きURLのクエリ、音声、文字起こしテキスト、認証ヘッダー、フレーズヒントはログに記録されません。
- プロジェクトのテレメトリは送信されません。
- 結果ストアを明示的に有効化して使用しない限り、文字起こしは保持されません。
- ElevenLabsのゼロ保持リクエストはデフォルトで有効です。無効にする場合は、運用者が明示的に選択する必要があります。
サービスを一般公開する前に、SECURITY.md、脅威モデル、および保持ポリシーをお読みください。
既知の制限事項
OpenTranscribeは現在、セルフホスト型のシングルテナントインストールを対象としています。プロバイダー間の機能の同等性は意図的に保証していません。違いを隠すのではなく、機能ネゴシエーションで明らかにします。リモート入力として利用できるのはURL取り込みのみです。プロバイダーの同期処理に関する制限は引き続き適用されます。OIDCは外部IDプロバイダーに対応しています。非同期ジョブは今後の機能として予定されています。メモリストアは永続性も水平スケーラビリティもありません。S3の検索では、非常に大きなバケットのインデックス作成よりも、シンプルなデプロイ契約を優先しています。結果用のプレフィックスを専用にし、ライフサイクルによる削除を徹底してください。
アプリケーションの制御は、ネットワークポリシーの代わりにはなりません。インターネットに公開する運用者は、許可する送信元ホストを正確に指定するとともに、送信トラフィックのファイアウォールルールを適用してください。
プロバイダーの価格、API、機能は変更されることがあります。リポジトリに含まれるメタデータは参考情報であり、契約上の見積もりではありません。
デスクトップパッケージの対象はamd64版Ubuntu 24.04 LTSであり、現時点では他のリリース、デスクトップ環境、アーキテクチャはサポートしていません。エンドツーエンドの登録実行が記録されているMCPクライアントはないため、OpenTranscribe Setupでは自動登録を未テストとして提示し、登録情報を読み戻して検証します。
録音への同意
OpenTranscribeは運用者から提供された音声を処理します。人を録音して文字起こしする行為には、同意、プライバシー、雇用、電気通信、またはデータ保護に関する法律が適用される場合があります。必要な権利と同意を確保する責任は運用者にあります。
文字起こしの内容は信頼できないデータです。OpenTranscribeはこれを指示として解釈しません。後続のエージェントも同じ境界を維持する必要があります。
ドキュメント
公式ドキュメントサイトは fbossiere.github.io/open-transcribe-mcp です。
- アーキテクチャ
- 設定とサービスの組み合わせ
- プロバイダーと機能
- OIDC 認証
- セキュリティモデル
- プライバシーと保持期間
- Linux での OpenTranscribe のセットアップ
- デスクトップ版リリースの受け入れ
- Scaleway へのデプロイ
- 公開プロトコル
- チュートリアル:Ubuntu で Plaud を使う手順 (PDF)
- Plaud のレシピ
- ChatGPT + Google Drive のレシピ
- 貢献方法
- ガバナンス
- サポート
- 製品および技術仕様の全文
貢献
貢献を歓迎します。貢献ガイドから始めてください。大規模な作業に着手する前に機能に関する Issue を作成し、脆弱性は SECURITY.md に記載された非公開の手順でのみ報告してください。
独立性と商標
OpenTranscribe は、貢献者によって保守されている独立したオープンソースプロジェクトです。Plaud、Microsoft、ElevenLabs、Groq、またはいずれの文字起こしプロバイダーとも提携、承認、支援を受けていません。
Plaud および各プロバイダーの製品名は、それぞれの所有者の商標です。
ライセンス
Apache License 2.0。LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。