開発者

Musael MCPサーバー

MCPクライアントを、書き手のMusaelプロジェクトに接続します。サーバーはStreamable HTTPを使い、OAuthサインインか個人用アクセストークンを受け付けます。

サーバー

サーバーURL
https://app.musael.com/api/mcp?lang=ja
トランスポート
Streamable HTTP、ステートレスなJSONレスポンス。JSON-RPCメッセージはPOSTで送ります。GETとDELETEは405を返します。
サーバー名
musael

認証

すべてのリクエストにAuthorization: Bearer <token>ヘッダーが必要です。トークンがない場合、または取り消された、期限切れの、誤ったトークンの場合、サーバーはOAuthメタデータを指すWWW-Authenticateヘッダーつきで401を返します。

OAuthサインイン

ChatGPT、Claude、Cursor、VS Codeなど、サインインで接続するクライアント向け。クライアントは、MCP認可仕様に従って、401レスポンスからすべてを検出します:

  • 保護されたリソースのメタデータ(RFC 9728): https://app.musael.com/.well-known/oauth-protected-resource/api/mcp
  • 認可サーバーのメタデータ(RFC 8414): https://app.musael.com/.well-known/oauth-authorization-server
  • 動的クライアント登録(RFC 7591):シークレットのない公開クライアントのみ。リダイレクトアドレスは、HTTPS、ループバックのみのHTTP、またはアプリのスキーム。
  • PKCEつき認可コード(S256のみ)。書き手がサインインし、「読み取りのみ」か「読み取りと追加」とプロジェクトを選んで、許可またはキャンセルします。
  • アクセストークンは1時間、リフレッシュトークンは90日間有効で、使うたびに変わります。
  • スコープ:read、suggest(書き手には「読み取りと追加」と表示されます)。

個人用アクセストークン

Codex、Claude Code、スクリプトなど、手動で設定するクライアント向け。書き手がMusaelの「設定 → 連携アプリ」でトークンを作成し、名前、プロジェクト、アクセス範囲、有効期限を選びます。

  • トークンはsti_で始まり、表示は一度きりです。Musaelはそのハッシュのみを保持します。
  • アカウントは最大20個の有効なトークンを持てます。取り消すと、トークンは直ちに無効になります。
  • Authorizationヘッダーで送ってください。URLには決して入れないでください。

アクセスと制限

  • 各呼び出しは、接続した書き手として、その時点で持つアクセス権の範囲内で、接続に選ばれたプロジェクトに対して行われます。
  • 書き手のテキストを変更または削除するツールはありません。追加するツールは新しい幕、章、シーン、世界観の項目を作り、suggest_editは、書き手がMusael上で承認または却下する提案を残します。
  • すべてのツールは常に一覧に表示されます。プランまたは接続が許可しないツールは、理由を返し、何もしません。
  • 1トークンあたり5分で最大300回の呼び出し。200,000文字を超える応答は切り詰められ、章またはシーンを一つずつ読むようメモが添えられます。

ツール

15個のツール。本の本文の読み取りと編集の提案は、Pressプランで利用できます。

ツールできることプランアクセス
list_projectsこの接続で見えるプロジェクトを、ワークスペース、書き手のロール、シーン、最終更新とともに。最初に使ってください。ほかのツールはすべて、プロジェクトIDが必要です。すべてのプラン読み取り
get_profile接続中のMusaelアカウント:変わらないID、名前、メールアドレス。すべてのプラン読み取り
get_outlineプロジェクトの構造:巻、幕、あらすじつきの章、状態・視点・語数つきで読む順に並んだシーン、未完了のタスク。すべてのプラン読み取り
create_projectアイデアから新しいプロジェクトを作成。幕、章、あらすじつきの空のシーン、世界観の項目を含みます。すべてのプラン読み取りと追加
add_to_plan既存のプロジェクトへの新しい幕、章、シーン。すべてのプラン読み取りと追加
add_world_entries新しいキャラクター、場所、物、勢力。すでにある名前はそのままにします。すべてのプラン読み取りと追加
read_scene1つのシーンをMarkdownで。章、状態、視点、場所、あらすじつき。Press読み取り
read_chapter章のすべてのシーンを順番に、Markdownで。Press読み取り
search_projectシーンと世界観の中の語を、短い抜粋とともに。Press読み取り
list_world世界観の項目を種類別に。別名、タグ、ノートの冒頭つき。Press読み取り
get_world_entry1つの世界観の項目を全文で:ノート、関係、記録された事実、それに言及するシーン。Press読み取り
get_timeline世界観の出来事を物語の順に、それぞれを示すシーンとともに。順序が入れ替わっているものを示します。Press読み取り
get_style_report固定ルールによる、AIを使わないシーンのスタイルレポート。Press読み取り
get_reader_stats公開された本の読者を章ごとに、オーナーと編集者向けに。Press読み取り
suggest_edit箇所の置き換え案、またはコメント。書き手が承認した場合にのみ、テキストが変わります。Press読み取りと追加

表をすべて見るには、横にスクロールしてください。

例

MUSAEL_TOKENに個人用アクセストークンを設定します。initializeの後にnotifications/initializedを送り、ツールを一覧するか呼び出します。

初期化

curl https://app.musael.com/api/mcp?lang=ja \
  -H "Authorization: Bearer $MUSAEL_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"example","version":"1.0.0"}}}'

ツールを一覧

curl https://app.musael.com/api/mcp?lang=ja \
  -H "Authorization: Bearer $MUSAEL_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","method":"notifications/initialized"}'

curl https://app.musael.com/api/mcp?lang=ja \
  -H "Authorization: Bearer $MUSAEL_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'

ツールを呼び出す

curl https://app.musael.com/api/mcp?lang=ja \
  -H "Authorization: Bearer $MUSAEL_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"list_projects","arguments":{}}}'

Codex

# ~/.codex/config.toml
[mcp_servers.musael]
url = "https://app.musael.com/api/mcp?lang=ja"
bearer_token_env_var = "MUSAEL_TOKEN"

Claude Code

claude mcp add --transport http --scope user musael https://app.musael.com/api/mcp?lang=ja --header "Authorization: Bearer $MUSAEL_TOKEN"

トークンなし

HTTP/2 401
www-authenticate: Bearer realm="Musael", resource_metadata="https://app.musael.com/.well-known/oauth-protected-resource/api/mcp"

{"error":"TOKEN_INVALID"}