Milanote by Cotlet について
Milanote by Cotletは、技術ユーザー向けのセルフホスト型Milanote API・MCPサーバーです。ローカルのChromeセッションでワークスペースにアクセスし、ボード、カード、ToDoリスト、共有、エクスポートをREST APIやPythonからも操作できます。
主な機能
- 01ボードと階層構造の閲覧
- 02ノート、リンク、ToDoリストの管理
- 03ラベル、コメント、共有の操作
- 04複数形式でのボードのエクスポート
- 05REST APIとPythonからの呼び出し
活用シーン
- 01ボード内のノートやカードの検索
- 02指定ボードへの参考リンクの追加
- 03期日付きToDoリストへの作業項目の整理
- 04ボードとサブボードのMarkdown出力
MCP 対応
stdioまたはHTTP経由でMCPクライアントにMilanoteツールを提供し、読み取り専用モードにも対応します。内容や共有状態を変更するツールは、実行前の確認をクライアントに促す設定です。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://cotlet.dev/mcp/v1/milanote/connectclaude mcp add --transport http dev-cotlet-milanote https://cotlet.dev/mcp/v1/milanote/connect{"mcpServers":{"dev-cotlet-milanote":{"type":"http","url":"https://cotlet.dev/mcp/v1/milanote/connect"}}}Cursor で開く{"servers":{"dev-cotlet-milanote":{"type":"http","url":"https://cotlet.dev/mcp/v1/milanote/connect"}}}VS Code で開く{"mcpServers":{"dev-cotlet-milanote":{"type":"http","url":"https://cotlet.dev/mcp/v1/milanote/connect"}}}{"mcpServers":{"dev-cotlet-milanote":{"serverUrl":"https://cotlet.dev/mcp/v1/milanote/connect"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://cotlet.dev/mcp/v1/milanote/connecthttps://cotlet.dev/mcp/v1/milanote認証が必要ツール
詳細
Milanote API とセルフホスト型 MCP サーバー
ご自身のパソコンで、ご自身の Google Chrome のセッションを使って実行する Milanote API と Milanote MCP サーバーです。Cotlet の本番環境で運用している 31 個の Milanote ツールのうち 30 個に対応しています。ボード、ノート、リンク、期限付きの ToDo リスト、列、ラベル、ゴミ箱、コメント、共有、エクスポートを利用できます。
Milanote には公開 API も公式 MCP サーバーもありません。このリポジトリでは、その両方を利用できます。
- Claude Code、Claude Desktop、Cursor、Codex、その他すべての MCP クライアント向け MCP サーバー。stdio または HTTP 経由で利用できます。セットアップ
http://127.0.0.1:8787/api/v1/milanoteの REST API。OpenAPI ドキュメントは/docsにあります。セットアップ- Python:
call("get_board", board_id="1XiqwC1Mir4d4N")と、すぐに使える 9 個のスクリプトをexamples/に用意しています。
自分で実行したい技術者向けです。非商用利用に限ります(ライセンス)。サーバー上で 24 時間 365 日稼働させたい場合や、Milanote がアプリを変更しても動作し続ける環境が必要な場合、チームやビジネスで使う場合は、cotlet.dev のホスト版をご利用ください。
git clone https://github.com/cotletdev/milanote-api-mcp-server.git && cd milanote-api-mcp-server
python3 -m venv .venv && . .venv/bin/activate && pip install -e .
milanote-mcp connect # reads your Milanote session from Chrome
milanote-mcp call list_boards
claude mcp add milanote -- "$PWD/.venv/bin/milanote-mcp" mcp
目次
- 仕組み
- 必要条件
- インストール
- Chrome の接続
- MCP サーバー
- REST API
- Python とサンプルスクリプト
- 30 個すべてのツール
- 設定
- セキュリティと Milanote アカウント
- エラー
- セルフホスト版とホスト版
- よくある質問
- ライセンス
仕組み
AI agent (MCP) / script (REST, Python) ──▶ milanote-mcp on your computer ──your Milanote cookies──▶ milanote.com
▲
milanote-mcp connect ───────┘ reads them once from your Chrome (DevTools Protocol)
- いつもと同じように、ご自身の Chrome で Milanote にサインインします。
milanote-mcp connectを実行すると、Chrome DevTools Protocol 経由で Chrome に接続し、milanote.com の Cookie とブラウザーのタイムゾーンを読み取り、~/.config/milanote-api-mcp/session.jsonに保存します。このファイルを読み取れるのはご自身のユーザーだけです。パスワードを参照したり保存したりすることはありません。- 読み取りには、Milanote の Web アプリが
app.milanote.com/apiで使用する JSON エンドポイントへのリクエストを使います。変更は、Web アプリが使用するのと同じ socket.io チャネルを通じて、通常の HTTP ポーリングで送信されます。すべての通信は、Chrome の TLS フィンガープリントを複製する curl_cffi を使い、ご自身の Cookie 経由で行われます。ヘッドレスブラウザーは起動しません。
Milanote のセッション Cookie は約 1 か月間有効です。Milanote からサインアウトされた場合、Chrome がリモートデバッグを有効にした状態で開いていれば、サーバーが再び Cookie を読み取ります。
必要条件
- Python 3.11 以降。
- Google Chrome 144 以降。Milanote にサインインしてください。デバッグポートを使えば、どの Chrome または Chromium でも動作します。
- macOS、Linux、または Windows。
- Milanote のすべてのプラン。無料アカウントは 100 枚のカードまでです。Milanote に拒否された場合、ツールがその旨を通知します。共有されたボードを変更するには、そのボードへの編集権限が必要です。
インストール
git clone https://github.com/cotletdev/milanote-api-mcp-server.git
cd milanote-api-mcp-server
python3 -m venv .venv
. .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e .
milanote-mcp --version
uv を使う場合:uv venv && uv pip install -e . を実行し、その後 uv run milanote-mcp ... を実行します。
AI エージェント(Claude Code、Codex、Cursor)を使ってセットアップしますか?このフォルダーを開き、リポジトリのセットアップを依頼してください。AGENTS.md にすべての手順が記載されており、Chrome での操作が必要な手順だけを案内します。
更新するには、git pull && pip install -e . を実行します。ホスト版の Milanote ツールへの変更は、すべてこのリポジトリにも反映しています。
Chrome の接続
オプション A:普段使いの Chrome(推奨)
-
Chrome で
chrome://inspect/#remote-debuggingを開き、リモートデバッグをオンにします。Chrome はこのコンピューター上のプログラムからの DevTools 接続を受け付けるようになり、接続ごとに確認を求めます。 -
app.milanote.com にサインインしていることを確認します。
-
次を実行します。
milanote-mcp connect -
Chrome が接続を許可するか確認します。許可をクリックします。
Saved 8 Milanote cookies to /Users/you/.config/milanote-api-mcp/session.json
Signed in to Milanote as Ana Lopez
その後、リモートデバッグをオフに戻すことができます。Milanote からサインアウトされたあと、サーバーが新しいセッションを自動的に取得するようにするには、オンのままにしておきます。
connect は、Chrome のデフォルトのプロファイルフォルダーにある DevToolsActivePort ファイルを探します。Chrome Beta、Canary、またはカスタムのプロファイルフォルダーを使う場合は、--profile-dir "<folder>" を渡します。
オプション B:デバッグポートを開いた Chrome
Chrome はデフォルトのプロファイルでデバッグポートを開かないため、別のプロファイルを起動して、そこで一度 Milanote にサインインしてから接続します。
# macOS
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --remote-debugging-port=9222 --user-data-dir="$HOME/.chrome-milanote"
# Linux
google-chrome --remote-debugging-port=9222 --user-data-dir="$HOME/.chrome-milanote"
# Windows
"C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 --user-data-dir="%USERPROFILE%\.chrome-milanote"
milanote-mcp connect --cdp http://127.0.0.1:9222
--cdp には ws:// DevTools URL も指定できます。たとえば、SSH トンネル経由で接続した別のマシン上の Chrome の URL を指定できます。
オプション C:Cookie を手動で貼り付ける
Chrome がないサーバーの場合:Chrome で app.milanote.com の DevTools を開き、Application > Cookies > https://app.milanote.com を選択して、__Secure-milanote.session_token の値をコピーし、次を実行します。
milanote-mcp connect --token # paste it, input is hidden
# or, without a session file:
export MILANOTE_AUTH_TOKEN=...
貼り付けたトークンは自動では更新されません。Milanote からサインアウトされたら、新しいトークンを貼り付けてください。時刻はこのマシンのタイムゾーンで表示されます。
セッションはいつでも次のコマンドで確認できます。
milanote-mcp status
MCP サーバー
MCP サーバーには、各ツールの入力スキーマ、エージェント向けの説明、ヒントが記載されています。読み取りツールには読み取り専用のマークが付き、コメント、招待、公開、削除を行うツールには、クライアントが実行前に確認を求めるようマークが付いています。
Claude Code
claude mcp add milanote -- /path/to/milanote-api-mcp-server/.venv/bin/milanote-mcp mcp
# read only:
claude mcp add milanote -- /path/to/milanote-api-mcp-server/.venv/bin/milanote-mcp mcp --read-only
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json(macOS)または %APPDATA%\Claude\claude_desktop_config.json(Windows):
{
"mcpServers": {
"milanote": {
"command": "/path/to/milanote-api-mcp-server/.venv/bin/milanote-mcp",
"args": ["mcp"]
}
}
}
Cursor
~/.cursor/mcp.json。Claude Desktop と同じブロックを使います。すぐに使えるコピーは mcp.json にあります。
Codex
~/.codex/config.toml:
[mcp_servers.milanote]
command = "/path/to/milanote-api-mcp-server/.venv/bin/milanote-mcp"
args = ["mcp"]
HTTP 経由
milanote-mcp serve は、URL を受け取るクライアント向けに、http://127.0.0.1:8787/mcp でストリーミング可能な HTTP 経由の MCP も提供します。
milanote-mcp serve
claude mcp add --transport http milanote http://127.0.0.1:8787/mcp
次のようなことをエージェントに依頼できます。
Brand refresh の Moodboard サブボードに参考リンクを 12 件追加し、すでにあるものはスキップしてください。
Novel outline ボードと各章のサブボードを Markdown として ./outline にエクスポートしてください。
通話のメモはこちらです。合意した日付を付けて、アクションアイテムを Q1 campaign の ToDo リストに追加してください。
カラーパレットについてのメモはどこに保存しましたか?
REST API
milanote-mcp serve # http://127.0.0.1:8787, MCP at /mcp, docs at /docs
各ツールには /api/v1/milanote 以下に独自のルートがあり、cotlet.dev のホスト型 API と同じパスを使うため、どちらかを対象に書いたコードをもう一方でも使えます。パスの各部分とクエリ文字列が引数となり、JSON ボディで残りの引数を追加します。
curl 'http://127.0.0.1:8787/api/v1/milanote/boards'
curl 'http://127.0.0.1:8787/api/v1/milanote/boards/1XiqwC1Mir4d4N'
curl -X POST http://127.0.0.1:8787/api/v1/milanote/boards/1XiqwC1Mir4d4N/notes \
-H 'Content-Type: application/json' \
-d '{"text": "Kickoff moved to Tuesday."}'
名前でツールを指定し、ボディを引数として渡します。
curl -X POST http://127.0.0.1:8787/api/v1/milanote/tools/export_board -d '{"board_id": "1XiqwC1Mir4d4N", "format": "markdown"}'
GET /api/v1/milanote/tools:すべてのツールと、そのルート、入力スキーマ、回答例を返します。GET /docs:対話型の OpenAPI ドキュメントです。GET /openapi.jsonはスキーマを返し、n8n、Postman、または生成されたクライアントで利用できます。- 回答は JSON です。リストの取得が途中で終わった場合は
has_more: trueが返されます。残りを取得するにはlimitを大きくしてください。
サーバーは 127.0.0.1 のみでリッスンします。別のデバイスからアクセスするにはトークンを設定します。以降、すべてのリクエストに Authorization: Bearer <token> が必要になります。
MILANOTE_MCP_TOKEN=$(openssl rand -hex 24) milanote-mcp serve --host 0.0.0.0
Python とサンプルスクリプト
Python から直接実行でき、サーバーは不要です。
from milanote_api_mcp import call
boards = call("list_boards")["boards"]
board = call("get_board", board_id=boards[0]["id"])
call(
"add_todo_list",
board_id=board["board_id"],
title="This week",
tasks=[{"text": "Send the brief", "due_date": "2026-10-28"}, {"text": "Book the photographer"}],
)
または、シェルからツールを 1 つ実行します:milanote-mcp call get_board board_id=1XiqwC1Mir4d4N。JSON オブジェクトを使うこともできます。
すぐに使えるスクリプトは examples/ にあります。どのスクリプトも --help を指定でき、一覧を表示するスクリプトは JSON を出力するか、--out file.csv/--out file.json に保存します。
| スクリプト | 機能 |
|---|---|
list_boards.py | Home または任意のボードから、--depth で指定した階層までのボードをツリー形式で表示します。 |
search_boards.py | すべてのボードを検索し、一致したカードをそれぞれのボード名とパスとともに表示します。 |
export_boards.py | ボードとそのサブボードを Markdown、テキスト、Word、PDF、PNG にエクスポートします。ボードごとに 1 ファイルを作成し、階層に沿ったフォルダーに保存します。 |
board_card_counts.py | ボードごとのカード数を種類別に表示します。多い順に並べ、無料プランの上限の使用状況も表示します。 |
open_tasks.py | ボードとそのサブボードにあるすべての ToDo リストから、未チェックのタスクを期限が近い順に表示します。--due-before を指定できます。 |
save_links.py | URL のリストをリンクカードとして保存します。ボードにすでにある URL はスキップします。まず --dry-run を実行できます。 |
add_todo_list.py | テキストファイルから ToDo リストを作成します。1 行につき 1 つのタスクを指定し、任意で期限を YYYY-MM-DD HH:MM 形式で設定できます。 |
add_note.py | --text、ファイル、または標準入力からノートカードを作成します。 |
publish_board.py | ボードの読み取り専用リンクを有効にして表示します。--off で無効にできます。 |
python examples/export_boards.py --board 1XiqwC1Mir4d4N --dir ./outline
python examples/save_links.py --board 1XiqwC1Mir4d4N --file links.txt --dry-run
定期実行する場合は、コンピューターの電源が入っている間、自分のコンピューター上の cron を利用できます:0 18 * * 5 cd ~/milanote-api-mcp-server && .venv/bin/python examples/export_boards.py --board 1XiqwC1Mir4d4N --dir ~/backups/milanote。
30 個のツールすべて
board_id は list_boards で取得する ID、またはボードの URL(https://app.milanote.com/1XiqwC1Mir4d4N/...)です。ツールが追加するカードはボードの Unsorted パネルに配置されます。これは Milanote がアップロードを配置する場所と同じなので、キャンバス上のカードを覆うことはありません。milanote-mcp tools はこの一覧を出力し、milanote-mcp tools --json は入力スキーマも表示します。
ボード
| ツール | アクセス | REST ルート | 機能 |
|---|---|---|---|
list_boards | 読み取り | GET /boards | 1 つのボード内のボードを一覧表示します。デフォルトでは Home 上のボードを、タイトル、ID、リンクとともに表示します。 |
list_recent_boards | 読み取り | GET /boards/recent | ボードツリー内の場所を問わず、最近開いたボードを新しい順に表示します。 |
search_boards | 読み取り | GET /boards/search | Milanote の検索アイコンのように、すべてのボードを対象にテキストでボードとカードを検索します。 |
get_board | 読み取り | GET /boards/{board_id} | ボード上のすべてのカードを取得します:ノート、リンク、画像、ファイル、ToDo リスト、カラム、サブボード。 |
create_board | 書き込み | POST /boards | Home 上、または別のボード内に新しいボードを作成します。 |
rename_board | 書き込み | PATCH /boards/{board_id} | ボードのタイトルを変更します。 |
duplicate_board | 書き込み | POST /boards/{board_id}/duplicate | サブボードも含め、ボード上のすべての内容をテンプレートとして複製します。 |
export_board | 読み取り | GET /boards/{board_id}/export | エクスポートメニューと同様に、ボードを Markdown、プレーンテキスト、Word、PDF、PNG としてエクスポートします。 |
カード
| ツール | アクセス | REST ルート | 説明 |
|---|---|---|---|
add_note | 書き込み | POST /boards/{board_id}/notes | プレーンテキストのノートカードをボードの未整理パネルに追加します。 |
edit_note | 書き込み | PATCH /boards/{board_id}/notes/{card_id} | ノートカードのテキストを置き換えます。 |
add_link | 書き込み | POST /boards/{board_id}/links | ウェブアドレスのリンクカードを、ページのタイトルとプレビューとともに未整理に追加します。 |
add_todo_list | 書き込み | POST /boards/{board_id}/todo-lists | タスクを含むToDoリストカードを未整理に追加します。各タスクには任意で期限の日付と時刻を設定できます。 |
set_task_done | 書き込み | PUT /boards/{board_id}/cards/{card_id}/tasks/{task}/done | ToDoリスト内のタスクを1つチェック、またはチェック解除します。 |
add_column | 書き込み | POST /boards/{board_id}/columns | カードをスタックにまとめるための空の列をボードに追加します。 |
カードの整理
| ツール | アクセス | REST ルート | 説明 |
|---|---|---|---|
move_card | 書き込み | POST /boards/{board_id}/cards/{card_id}/move | カードまたはサブボードを別のボードに移動するか、列に入れる、または列から出します。 |
set_card_color | 書き込み | PUT /boards/{board_id}/cards/{card_id}/color | ノート、ToDoリスト、リンク、ファイル、列の上部にあるバーに色を付けるか、色を消します。 |
add_label | 書き込み | POST /boards/{board_id}/cards/{card_id}/labels | カードにラベルを付けます。新しい名前の場合はラベルを作成します。 |
list_labels | 読み取り | GET /labels | カードに付けられるラベルと、その名前および色を一覧表示します。 |
ゴミ箱
| ツール | アクセス | REST ルート | 説明 |
|---|---|---|---|
trash_cards | 書き込み | POST /boards/{board_id}/cards/trash | Deleteキーを押したときと同様に、カードまたはサブボードをゴミ箱に移動します。 |
list_trash | 読み取り | GET /trash | ゴミ箱に移動したカードとボード、およびそれぞれの移動元のボードを一覧表示します。 |
restore_card | 書き込み | POST /trash/{card_id}/restore | カードまたはボードをゴミ箱から取り出し、元の場所に戻します。 |
コメント
| ツール | アクセス | REST ルート | 説明 |
|---|---|---|---|
add_comment | 書き込み | POST /boards/{board_id}/comments | ボードにコメントカードを追加するか、コメントスレッドに返信します。自分の名前で投稿されます。 |
edit_comment | 書き込み | PATCH /boards/{board_id}/comments/{comment_id} | 自分が書いたコメントのテキストを置き換えます。 |
delete_comment | 書き込み | DELETE /boards/{board_id}/comments/{comment_id} | 自分が書いたコメントを全員から削除します。 |
共有
| ツール | アクセス | REST ルート | 説明 |
|---|---|---|---|
get_sharing | 読み取り | GET /boards/{board_id}/sharing | ボードを開ける人(オーナー、編集者)と、設定を含む読み取り専用リンクを確認します。 |
invite_editor | 書き込み | POST /boards/{board_id}/editors | メールで相手を招待し、ボードとその中のボードを編集できるようにします。 |
remove_editor | 書き込み | DELETE /boards/{board_id}/editors | ボードへのアクセス権を取り消すか、相手が承諾していない招待をキャンセルします。 |
publish_board | 書き込み | POST /boards/{board_id}/publish | ボードの読み取り専用リンクを有効にします。このリンクは、サインアップしなくても誰でも開けます。 |
unpublish_board | 書き込み | DELETE /boards/{board_id}/publish | ボードの読み取り専用リンクを無効にします。リンクを持っていた人は、ボードを開けなくなります。 |
アカウント
| ツール | アクセス | REST ルート | 説明 |
|---|---|---|---|
get_usage | 読み取り | GET /usage | アカウントで使用しているカードの数を、カードの種類別に無料プランの上限と照らして確認します。 |
このバージョンにはありません
| ツール | 理由 |
|---|---|
upload_image | ホスト版では、Cotletのファイル処理を通じて、画像をリンク、アップロード、またはbase64として渡します。このリポジトリにはまだその機能がありません。画像はMilanoteにアップロードするか、ホスト版のツールを使用してください。 |
意図的に実装していないもの:Milanoteのサインイン、メールアドレス、パスワード、プロフィール設定、プランおよび請求。
設定
| 変数 | デフォルト | 説明 |
|---|---|---|
MILANOTE_MCP_HOME | ~/.config/milanote-api-mcp | session.json の保存フォルダーです。 |
MILANOTE_AUTH_TOKEN | milanote-mcp connect の代わりに使用する、Milanote の __Secure-milanote.session_token Cookie です。 | |
MILANOTE_PROXY | Milanote へのすべてのリクエストに使用するプロキシです。例:http://user:pass@host:port | |
MILANOTE_MCP_READ_ONLY | 1 を指定すると、Milanote を変更するすべてのツールが非表示になり、使用できなくなります(--read-only と同じです)。 | |
MILANOTE_MCP_TOKEN | serve で必要となるベアラートークンです。127.0.0.1 以外で待ち受ける場合に必要です。 | |
MILANOTE_MCP_HOST、MILANOTE_MCP_PORT | 127.0.0.1、8787 | serve のアドレスです。 |
セキュリティと Milanote アカウント
- パスワードがこのコードに渡ることはありません。 Cookie のみを読み取り、milanote.com の Cookie だけを対象とします。
- セッションファイルはご自身で管理してください。
session.jsonはモード 0600 で作成されます。このファイルを持つ人は Milanote であなたとして操作できるため、Git や共有フォルダーに置かないでください。 - デフォルトではローカルで動作します。
serveは127.0.0.1にバインドされ、MILANOTE_MCP_TOKENがない場合は別のアドレスを拒否します。 - milanote.com のみを対象とします。 milanote.com 以外へのリクエストとリダイレクトは拒否されます。
- 読み取り専用モード。
--read-onlyまたはMILANOTE_MCP_READ_ONLY=1を指定すると、9 つの読み取りツールのみが公開されます。 - 一部の操作は他の人に影響します。 コメントにはあなたの名前が表示され、
invite_editorは招待する人にメールを送信し、publish_boardはリンクを知っている人なら誰でもボードを閲覧できるようにします。MCP クライアントはこれらの操作を実行する前に確認を求めますが、スクリプトは確認しません。 - ゴミ箱への移動は元に戻せますが、コメントは元に戻せません。
trash_cardsはカードをボードのゴミ箱に移動し、restore_cardはカードを元に戻します。delete_commentは全員のコメントを削除します。
エラー
REST API は {"error": "<code>", "message": "..."} を返します。MCP サーバーはツールエラーとして同じコードとメッセージを返します。
| ステータス | コード | 対処方法 |
|---|---|---|
| 401 | auth_required、auth_expired | セッションがないか、Milanote からサインアウトされています。Chrome で Milanote にサインインし、milanote-mcp connect を実行してください。 |
| 403 | scope_denied | サーバーが読み取り専用で動作しています。 |
| 403 | target_blocked | Milanote がリクエストを拒否したか、ボット確認を表示しました。Chrome で app.milanote.com を一度開いてから、再試行してください。 |
| 422 | invalid_input | 引数が不足しているか、正しくありません。メッセージに該当する引数が示されます。 |
| 429 | rate_limited | Milanote がアカウントの利用を制限しています。数分待ってください。 |
| 502 | target_error | Milanote がエラーを返しました。たとえば、無料プランのカード数上限に達した場合や、アプリが変更された場合です。最新のツールを取得するには git pull を実行するか、issue を作成してください。 |
| 504 | timeout | Milanote が時間内に変更を確認できませんでした。変更が反映されている可能性があるため、再試行する前にボードを確認してください。 |
セルフホストとホステッド
| このリポジトリ | Cotlet、ホステッド版 | |
|---|---|---|
| ツール | 30 | 31、upload_image を含む |
| 実行場所 | コンピューターが起動している間は、お使いのコンピューター上 | クラウド上、24 時間 365 日 |
| Milanote セッション | ご自身の Chrome、ローカルファイル内の Cookie | EU 内の専用 Cloud Browser、AES-256-GCM で暗号化されたプロファイル |
| Milanote のアプリが変更された場合 | 修正後に git pull を一度実行 | お客様に代わって修正。すべてのツールを毎日テスト |
| 承認 | MCP クライアントが呼び出しごとに確認 | コメント、招待、公開、ゴミ箱への移動は OK を待機。ツールごとに切り替え可能 |
| 対応環境 | お使いのマシン上の MCP クライアント、ローカルスクリプト | Claude.ai と ChatGPT のコネクター、n8n、Make、Zapier、任意の HTTP クライアント |
| 利用対象 | 非商用目的での個人利用 | チーム、企業、代理店 |
| 料金 | 無料 | クレジットカード不要の 7 日間無料トライアル(2,000 クレジット付き)。その後は 5,000 クレジットで $29 からの買い切りパック |
ホステッド版では、成功した呼び出しは 20~30 クレジット(ほとんどのツールは 25 クレジット)を使用し、失敗した呼び出しは無料です。また、Cloud Browser でエージェント向けアプリを有効にしている間は、1 日あたり 50 クレジットを使用します。料金の詳細。
よくある質問
Milanote に公式 API はありますか? いいえ。Milanote には公開 API、Webhook、公式 MCP サーバーはありません(2026 年 10 月確認)。公開 API と MCP サーバーは、公開ロードマップで要望として挙げられています。コンテンツを取り出す方法は、ボードごとにエクスポートボタンを使うことだけです。詳細はこちら:cotlet.dev/integrations/milanote-api-mcp-server。
Claude、ChatGPT、Cursor で使える Milanote MCP サーバーはありますか?
はい。この MCP サーバーはお使いのマシン上で動作します。Claude Code、Claude Desktop、Cursor、Codex では milanote-mcp mcp を実行してください。ChatGPT と Claude.ai のコネクターには公開 HTTPS URL が必要です。ホスト型 Milanote MCP サーバーを使えば、その URL を利用できます。
Milanote のボードを Markdown にエクスポートできますか?
はい。サブボードも対象にできます。python examples/export_boards.py --board <board URL> --dir ./outline を実行すると、階層に沿ったフォルダーに、ボードごとの Markdown ファイルが作成されます。--format を使えば、Word、PDF、PNG、プレーンテキストも同様にエクスポートできます。
すべてのボードをバックアップできますか?
cron から Home の各ボードに対して export_boards.py を実行してください。ボード上の画像とファイルは Milanote に残ります。Milanote のエクスポートメニューにある「Generate ZIP」を使うと、オリジナルをダウンロードできます。
共有されたボードに追加できますか? はい。そのボードを編集できるアカウントであれば可能です。読み取り専用のボードは閲覧とエクスポートはできますが、変更はできません。
無料プランでも使えますか?
はい。無料プランの 100 カード制限は適用されます。get_usage で現在の利用状況を確認でき、上限を超えてカードを追加しようとすると、Milanote 独自のメッセージが表示されて失敗します。
なぜ自分の Chrome が必要なのですか? パスワードを使わずに Milanote のセッションを読み取り、期限日の設定に使うタイムゾーンを取得するためです。Chrome を使うのはサインインごとに 1 回だけで、呼び出しのたびに使うわけではありません。
Milanote からサインアウトされたらどうなりますか?
呼び出しは auth_expired で失敗します。Chrome のリモートデバッグが有効であれば、次の呼び出し時にサーバーが新しい Cookie を読み取ります(Chrome の確認画面で「許可」をクリックしてください)。そうでない場合は、もう一度 milanote-mcp connect を実行してください。
VPS や Docker で実行できますか?
技術的には可能で、MILANOTE_AUTH_TOKEN を使います。ただし、その場合 Milanote にはデータセンターの IP アドレスからセッションにアクセスしているように見えるため、本人の利用ではないと判断されやすくなります。常時稼働させるには、ホスト型バージョンを使うと、固定 IP の専用 Cloud Browser にセッションを保持できます。
Milanote アカウントが停止されることはありますか? リクエストには Chrome のフィンガープリントが含まれ、ユーザーがクリックするように 1 件ずつ送信されます。プラットフォームが決して措置を取らないとは保証できません。通常の利用範囲を守ってください。
職場やクライアントのために使えますか? いいえ。このライセンスでは非商用利用のみが許可されています。チーム、会社、クライアントの業務で使う場合は、Cotlet を利用するか、[email protected] までお問い合わせください。
オープンソースですか? ソースコードは公開されていますが、ライセンスはオープンソースライセンスではありません。非商用利用のみで、業務での利用はできません。
ツールが動かなくなった、または別のツールが必要です。 Issue を作成し、ツール名とエラーメッセージを記載してください。
ライセンス
PolyForm Noncommercial License 1.0.0。概要は次のとおりです。
- 許可される利用: 非商用利用。個人の目的で自分の Milanote アカウントを使う場合、または慈善団体、学校、公的研究機関、政府機関による利用。コードの変更、および同じライセンスでの共有。
- 許可されない利用: 自分の事業を含むあらゆる商用利用、クライアント業務、このソフトウェアやこれを基にしたサービスの販売または提供。
Cotlet(@cotletdev)がメンテナンスしています。Milanote は、その所有者の商標です。このプロジェクトは非公式であり、Milanote との提携、承認、後援を受けていません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。