Notta Remote MCP 連携ガイド

MCP 対応の AI クライアントやアプリケーションを、Notta がホストする Remote MCP サーバーに直接接続できます。Notta ワークスペースへのアクセスを許可すると、クライアントから会議のノートを検索したり、完了済みの文字起こしや既存の要約を取得したりできます。フォルダの参照、コンテンツのエクスポート、権限の範囲内でのノート管理も可能です。

Notta Remote MCP は、Streamable HTTP と OAuth 2.0 を使用して HTTPS 経由でアクセスする、クラウド型の連携機能です。ローカル MCP サーバーのダウンロード、インストール、実行や、stdio プロセスの設定は必要ありません。このガイドでは、開発者や技術チーム向けに、MCP クライアントの接続、ユーザー認証、利用可能なツールの呼び出し方法を説明します。

Notta Remote MCP に接続する

Remote MCP のエンドポイントは https://mcp.notta.io/mcp です。トランスポートには、HTTPS 上のステートレスな Streamable HTTP を使用します。ローカルの stdio ではありません。初期化、ツールの検出、ping、通知、ツール呼び出しを含むすべての /mcp リクエストに、Authorization: Bearer <access_token> が必要です。ただし、OPTIONS プリフライトリクエストは対象外です。Bearer トークンがないリクエストには、保護対象リソースのメタデータを示す WWW-Authenticate チャレンジ付きで HTTP 401 が返されます。

エンドポイント URL
MCP / resource / issuer https://mcp.notta.io/mcp
保護対象リソースのメタデータ https://mcp.notta.io/.well-known/oauth-protected-resource/mcp
認可サーバーのメタデータ https://mcp.notta.io/.well-known/oauth-authorization-server/mcp
認可 https://mcp.notta.io/mcp/oauth/authorize
トークン https://mcp.notta.io/mcp/oauth/token
失効 https://mcp.notta.io/mcp/oauth/revoke
OAuth の設定 値
パブリッククライアント ID c_j7uksddnma8z61b7
フロー Authorization Code with PKCE S256
トークン/失効エンドポイントでのクライアント認証 none または client_secret_post。上記のパブリッククライアントでは、client_secret は不要です。
スコープ Notta の認可によって制御されます。MCP メタデータでは、スコープ名は公開されません。

上記のパブリック OAuth クライアントを使用する場合は、トークンエンドポイントの認証方式に none を指定し、client_secret は省略してください。このパブリッククライアント ID は OAuth クライアントの識別子であり、シークレットや Notta ユーザーのアクセストークンではありません。

リモート MCP クライアントを認可するには、ユーザーのブラウザで認可エンドポイントを開きます(GET)。認可リクエストのパラメータを保持したまま、Notta のログインと同意のフローにリダイレクトされます(HTTP 302)。

認可リクエストと認可コードの交換には、実際に使用する同一の redirect_uri を指定してください。URI は絶対 URI である必要があり、空白、埋め込まれた認証情報、フラグメントを含めることはできません。HTTP のコールバック先は、ループバックアドレスに限られます。

  1. response_type=code、client_id、redirect_uri、state、code_challenge、code_challenge_method=S256 を指定して、認可エンドポイントを開きます。コールバック時に state を検証してください。
  2. 以下のフォームを使用して、認可コードをトークンに交換します。返されたトークンを保持し、必要に応じて更新してください。接続を解除する際は、トークンを失効させます。
  3. MCP 接続を初期化し、notifications/initialized を送信した後、tools/list と tools/call を使用します。以降のリクエストには、Content-Type: application/json、Accept: application/json, text/event-stream、およびネゴシエーションで合意した MCP-Protocol-Version を送信してください。

トークンエンドポイントと失効エンドポイントは、Content-Type: application/x-www-form-urlencoded の POST フォームを受け付けます。

操作 必須フィールド 任意フィールド
認可コードの交換 grant_type=authorization_code、client_id、code、code_verifier、redirect_uri resource、client_secret
トークンの更新 grant_type=refresh_token、client_id、refresh_token resource、scope、client_secret
トークンの失効 client_id、token client_secret、token_type_hint(access_token または refresh_token)

client_secret は最大 128 文字の任意のフォームフィールドです。指定した場合、そのまま Notta に転送されます。必須かどうか、および検証方法は、クライアントの登録内容によって決まります。

resource を指定する場合は、https://mcp.notta.io/mcp と一致する必要があります。トークンレスポンスには、access_token、refresh_token、token_type、expires_in(秒)、workspace_id、および任意の scope が含まれます。トークンの失効に成功すると、HTTP 200 と {} が返されます。

利用可能な Remote MCP ツール

Notta Remote MCP は、認証済みクライアントに以下のツールを提供します。すべての操作は、接続した Notta アカウントのワークスペース権限の範囲内に制限されます。引数欄では必須引数を先に記載し、任意引数には「任意」と明記しています。出力欄には、data 内の主なフィールドを記載しています。この連携によって、アカウントが Notta で持っている権限を超える権限がクライアントに付与されることはありません。

ツール 分類 引数 出力・権限・動作
auth_user_info 読み取り {} アカウントの uid と nickname。
record_list 読み取り 任意:folder_id、cursor、page_size 閲覧可能なノートの一覧を含む record_list と、page_size、next_cursor。フォルダを省略すると、閲覧可能なすべてのフォルダが対象になります。"0" はルートを指定します。
record_search 読み取り keyword。任意:cursor、page_size インデックス化された名前/文字起こしの検索結果と、record_id、record_name、next_cursor。インデックスを利用できない場合、一致する結果が返されないことがあります。
record_status 読み取り record_id 文字起こしのステータス。
record_view 読み取り record_id 文字起こしの内容:text、attr.speaker_name、attr.start_time、attr.stop_time(時刻は秒単位)。speaker_name は話者の表示名です。取得できない場合は空文字列になります。文字起こしが完了している必要があります。
record_access 読み取り record_ids access_result:ユーザーが管理できるノートの共有設定。結果に含まれないノートでも、閲覧できる場合があります。
folder_list 読み取り 任意:folder_id、cursor、page_size ID、名前、親 ID を含む folder_list と、page_size、next_cursor。親フォルダを省略すると閲覧可能なフォルダが対象になります。"0" を指定するとルートが対象になります。それ以外の ID を指定すると、そのフォルダの子フォルダが対象になります。
summary_batch 読み取り record_ids summary_result:record_id と Markdown 形式の結果。既存の要約を読み取ります。空の場合、利用可能な要約はありません。
export_status 読み取り task_id タスクのステータス。Success の場合、download_url、download_url_expire_time、file_name が含まれることがあります。
export_status_list 読み取り 任意:page_size、cursor、status ユーザーのワークスペース内のエクスポート:task_id、record_id、status を含む task_list と、next_cursor。
record_trash 書き込み record_id ノートをゴミ箱に移動します。ゴミ箱への移動権限が必要です。record_restore で元に戻せます。
record_restore 書き込み record_id。任意:folder_id ノートを復元します。復元権限と復元先への権限が必要です。フォルダを省略するか "0" を指定すると、ルートに復元します。
export_create 書き込み record_id、file_type。任意:export_options、extra_info エクスポートタスクを作成し、task_id を返します。エクスポート権限が必要です。
record_delete 慎重な扱いが必要な書き込み record_id、confirm: true すでにゴミ箱にあるノートを完全に削除します。削除権限が必要です。この操作は元に戻せません。

引数:ID は文字列で、folder_id は十進数表記です。keyword は空でない文字列を指定します。record_access.record_ids は、空文字列と完全に一致する重複を除去した後で、空でない一意の ID を 1~10 個含む必要があります。summary_batch.record_ids は、空でない入力要素を 1~10 個受け付けます。各要素にはカンマ区切りの ID を含めることができ、重複する要素もこの上限に数えられます。page_size は 1~100 の整数で、既定値は 20 です。next_cursor は変更せずに cursor として渡し、同じフィルタを使用してください。使用しない任意フィールドは省略します。未知のフィールドと null は受け付けません。完全な入力スキーマは tools/list で取得できます。

結果:ツールが成功すると、{error_code: 0, message: string, data: JSON value} が、structuredContent と JSON エンコードされた content[].text の両方に返されます。ゴミ箱への移動、復元、削除では操作結果が返されますが、success フィールドが含まれるとは限りません。HTTP ステータスだけで判断せず、JSON-RPC の error とツールの isError を確認してください。

エクスポートの引数

file_type には、txt、docx、pdf、srt、excel、media(元の音声/動画)のいずれかを指定します。media の場合は、export_options と extra_info を省略してください。

export_options の各フィールドはすべて任意で、数値の 0/1 のフラグです。

フィールド 1 の場合に含まれる内容
show_time タイムスタンプ
include_transcription 文字起こし
include_notes 既存の AI要約
show_original 原文
show_translation 既存の翻訳

原文と翻訳の両方を無効にすることはできません。検証時の既定値は、原文が 1、翻訳が 0 です。SRT にはこの既定値が適用されます。それ以外の省略された設定には、Notta の既定値が使用されます。extra_info の任意フィールドは、language(文字列、例:en-US)と timezone(IANA タイムゾーン、例:Asia/Tokyo)です。

ステータスと書き込み操作の扱い

完全に削除する場合は、confirm: true を設定する前に、対象のノートごとにユーザーの明示的な承認を得る必要があります。それ以外の書き込み操作も、ユーザーが許可した依頼に従って実行してください。

操作 ステータスに応じた処理
文字起こし NotStart/Transcribing:処理待ちまたは処理中です。
Transcribed:読み取り可能です。
Failed:失敗を報告します。
エクスポート NotStart/Processing:task_id を保持します。推奨ポーリング間隔は 2 秒以上です。
Success:返されたリンクと有効期限を使用します。
Failed/Expired/NotExist:ポーリングを停止します。

エクスポート一覧の status には、上記のエクスポートのステータスのうち、NotExist 以外を指定できます。一覧の情報が最新でない場合があるため、現在のステータスや更新された署名付きリンクを取得するには、export_status を使用してください。書き込みがタイムアウトした場合は、再試行する前にノートまたはタスクの状態を確認します。export_create を繰り返すと、タスクが重複して作成されることがあります。失敗した呼び出しは自動的には再試行されません。

エラー

ツールの呼び出しが失敗すると、isError: true が設定されます。content[].text には、error_code、message、および request_id、required_scope、retry_after(秒)を含む data が返されることがあります。検証エラーはプレーンテキストの場合もあります。OAuth エラーでは、error と error_description が使用されます。

HTTP ステータス 対処方法
400/404/405/413/415 パラメータ、ルート、メソッド、リクエスト本文のサイズ、またはコンテンツタイプを修正します。
401/403 トークンを更新するか再接続します。または、不足しているスコープやアクセス権を確認・解消します。
429 Retry-After に従い、再試行までの待ち時間を設けます。
500/502/503/504 サービス障害またはタイムアウトです。再試行する前に、書き込み操作の結果を確認してください。

主な業務エラーコードは、100001(認可)、100002(スコープ)、100003/120001(レート制限)、100013(パラメータ)、110002(文字起こし未完了)、130001~130003(ノート/フォルダのアクセス権または存在に関するエラー)です。それ以外のエラーでは、メッセージとリクエスト ID を保持してください。

制限

レート制限は、接続先の OpenAPI によって適用されます。以下のサイズとタイムアウトの既定値は、デプロイ設定によって変更される場合があります。

制限項目 既定値
リクエスト本文 MCP:64 KiB。OAuth フォーム:16 KiB、最大 16 パラメータ。
接続先からの単一レスポンス 8 MiB。サイズを超えるレスポンスは失敗します。
接続先への呼び出しのタイムアウト 1 回の呼び出しにつき 15 秒。1 回のツールリクエストで、複数回の呼び出しが行われる場合があります。

Retry-After またはツールの retry_after が返された場合は、その値に従ってください。文字起こしの取得には、分割取得(チャンク化)のオプションはありません。

Remote MCP のリクエスト例

以下は、リモートクライアントが OAuth 認証と MCP の初期化を完了した後に、https://mcp.notta.io/mcp に送信する JSON-RPC リクエスト本文の例です。RECORD_ID と TASK_ID は、アクセスが許可されたワークスペースから返された ID に置き換えてください。「Notta Remote MCP に接続する」で説明した HTTP ヘッダーを含めます。以下は説明用の例であり、実際のお客様の会議データは含まれていません。

ノートを検索する

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "record_search",
    "arguments": {
      "keyword": "project review",
      "page_size": 20
    }
  }
}

返された record_id を record_status に渡します。文字起こしのステータスが Transcribed になったら record_view を呼び出してください。既存の要約を読み取るには、summary_batch を使用します。この手順では、新しい要約は作成されません。

ノートをエクスポートする

この書き込み操作は、ユーザーが許可したエクスポートに対してのみ実行してください。

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "export_create",
    "arguments": {
      "record_id": "RECORD_ID",
      "file_type": "pdf"
    }
  }
}

返された task_id を保存し、ステータスを確認します。

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "export_status",
    "arguments": {
      "task_id": "TASK_ID"
    }
  }
}

タスクが処理待ちまたは処理中の間は、ステータスの確認間隔を 2 秒以上空けてください。Success の場合は、返されたダウンロードリンクと有効期限を使用します。Failed、Expired、NotExist の場合は、ポーリングを停止してください。

リモートクライアントのプライバシーとサポート

Notta Remote MCP は、要求された会議データと有効期限付きのエクスポートリンクを、認証済みのサードパーティー MCP クライアントに返します。認可する前に、そのクライアントのデータの取り扱いを確認してください。Notta の プライバシーポリシー、 利用規約、および ヘルプセンターもご確認ください。サポートに問い合わせる際は、リクエスト ID を記載してください。ただし、Bearer トークン、リフレッシュトークン、非公開の会議内容は絶対に含めないでください。

このセクションの記事

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています
共有