note.com記事管理用MCPサーバー。AIアシスタント(Claude Code, Claude Desktop等)から直接note.comの記事を作成・編集・公開できます。
- 🔐 ブラウザ認証: Playwrightでnote.comにログインし、セッションを安全に保存
- 📝 記事作成: Markdownで記事を作成し、下書きとして保存
- 📖 記事取得: 既存記事の内容(タイトル、本文、タグ等)を取得
- ✏️ 記事編集: 既存記事の更新(取得→編集→保存のワークフロー)
- 🚀 記事公開: 下書きから公開へのワンステップ変更
- 🗑️ 記事削除: 下書き記事の削除(単体・一括)、2段階確認で誤操作防止
- 🖼️ 画像アップロード: アイキャッチ画像・記事内埋め込み画像のアップロード
- アイキャッチ画像: 記事のサムネイル用
- 本文用画像: S3直接アップロードでアイキャッチに影響なし
- 📋 記事一覧: 自分の記事一覧の取得
- 👁️ プレビュー: API経由で高速な記事プレビュー表示・HTML取得
- 🔄 Markdown→HTML変換: 自動的にnote.com互換のHTML形式に変換
- 📐 数式サポート: KaTeX互換の数式記法(
$${...}$$)に対応 - 📑 目次サポート:
[TOC]記法で見出しから目次を自動生成 - 🔗 埋め込みサポート: 外部URLを記事に埋め込み(外部記事のリッチプレビュー表示)
# Install from GitHub
uv pip install git+https://github.com/drillan/note-mcp.git
# Install Playwright browser
playwright install chromium# Clone the repository
git clone https://github.com/drillan/note-mcp.git
cd note-mcp
# Install dependencies
uv sync
# Install Playwright browser
uv run playwright install chromiumMCPクライアントの設定ファイルに以下を追加します。詳細はクイックスタートガイドを参照してください。
{
"mcpServers": {
"note-mcp": {
"command": "uv",
"args": ["run", "python", "-m", "note_mcp"],
"cwd": "/path/to/note-mcp"
}
}
}Note:
cwdはインストール方法によって異なります。パッケージインストールの場合はプロジェクトディレクトリ、開発用インストールの場合はクローンしたリポジトリを指定します。詳細はインストール方法別の設定を参照してください。
各MCPクライアント(Claude Code, Claude Desktop, VS Code, Cursor, Windsurf)の設定ファイルの場所と詳細はMCPクライアント別の設定を参照してください。
note.comにログインしてください
ブラウザが起動し、note.comのログインページが表示されます。手動でログインを完了すると、セッションがOSのキーチェーンに安全に保存されます。
以下の内容でnote.comに下書きを作成してください:
タイトル: AIと記事を書く
本文:
# はじめに
AIアシスタントと一緒に記事を書いてみましょう。
記事ID 12345678 に /path/to/eyecatch.png をアイキャッチ画像としてアップロードしてください
アイキャッチ画像は記事のサムネイルとして表示されます。
記事ID 12345678 に /path/to/inline.png を本文用画像としてアップロードし、記事に埋め込んでください
本文用画像をアップロードすると、Markdown形式の挿入コードが返されます。これを記事本文に追加することで画像を埋め込めます。
キャプション付き画像:
画像にキャプション(説明文)を追加するには、Markdownのtitle属性を使用します:
例:
キャプションはnote.comのエディタで画像の下に表示されます。
Note: 本文用画像はS3への直接アップロードを使用するため、アイキャッチ画像には影響しません。
引用ブロックに出典(引用元)を追加できます。Markdownの引用記法で、— (emダッシュ + スペース)で始まる行を出典として認識します。
基本的な出典:
> 知識は力なり
> — フランシス・ベーコン出典にURLを追加:
> 知識は力なり
> — フランシス・ベーコン (https://ja.wikipedia.org/wiki/知識は力なり)出典のURLはリンクとして変換されます。出典行がない場合は、従来通り引用のみが表示されます。
Tip: 複数行の引用も対応しています。出典は引用ブロックの最後の行に記述してください。
既存記事を編集する際は、まず内容を取得してから編集を行います:
記事ID ne1c111d2073c の内容を取得してください
取得した内容を確認後、編集を依頼:
取得した記事の末尾に「まとめ」セクションを追加してください
AIが既存内容を把握した上で適切に編集を行います。
下書きを公開してください
記事 n1234567890ab を削除してください
2段階確認フロー:
- 最初の呼び出しで削除対象の確認が表示されます
- 確認後、再度呼び出すと実際に削除されます
すべての下書き記事を削除してください
同様に2段階確認フローで、まず削除対象一覧が表示され、確認後に一括削除が実行されます。
注意: 削除は取り消しできません。公開済み記事は削除できません(安全のため)。
note.comの数式記法をMarkdownで使用できます。
インライン数式(文中に埋め込む):
ピタゴラスの定理は $${a^2 + b^2 = c^2}$$ で表されます。ディスプレイ数式(独立した行に表示):
二次方程式の解の公式:
$$
x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}
$$Note: 数式はKaTeX記法に準拠しています。詳細は数式機能ドキュメントを参照してください。
記事内に目次を自動生成できます。
# 記事タイトル
[TOC]
## はじめに
導入文...
## 本論
メインコンテンツ...
### サブセクション
詳細...
## まとめ
結論...[TOC]と記述した位置に、見出し(H2・H3)から自動生成された目次が挿入されます。
Note: 詳細は目次機能ドキュメントを参照してください。
下書き記事のプレビューを表示できます。
ブラウザでプレビュー表示:
記事 n1234567890ab のプレビューを表示してください
ブラウザが起動し、プレビューページが表示されます。API経由でアクセストークンを取得するため、高速に表示されます。
HTMLとして取得:
記事 n1234567890ab のプレビューHTMLを取得してください
プレビューページのHTMLが文字列として返されます。E2Eテストやコンテンツ検証に使用できます。
Note: プレビューは自分の記事のみ表示可能です。認証エラー時は自動的にリトライされます。
URLを単独の行に記述すると、外部記事として埋め込まれます。
# 参考記事
https://example.com/interesting-article
上記の記事では...埋め込みにはリンク先のタイトル、説明文、サムネイル画像が表示されます。
Note: 詳細は埋め込み機能ドキュメントを参照してください。
| Tool | Description |
|---|---|
note_login |
ブラウザでnote.comにログイン |
note_check_auth |
認証状態を確認 |
note_logout |
ログアウト(セッション削除) |
note_set_username |
ユーザー名を設定(セッション復元時に必要) |
note_create_draft |
下書き記事を作成 |
note_get_article |
記事内容を取得(タイトル、本文、タグ、ステータス等) |
note_update_article |
記事を更新(先にnote_get_articleで内容取得を推奨) |
note_publish_article |
記事を公開 |
note_list_articles |
記事一覧を取得 |
note_delete_draft |
下書き記事を削除(2段階確認) |
note_delete_all_drafts |
すべての下書き記事を一括削除(2段階確認) |
note_upload_eyecatch |
アイキャッチ(見出し)画像をアップロード |
note_upload_body_image |
記事本文用の埋め込み画像をアップロード |
note_insert_body_image |
記事本文に画像を直接挿入 |
note_show_preview |
ブラウザで記事プレビューを表示(API経由で高速) |
note_get_preview_html |
記事プレビューのHTMLを取得 |
セッション情報(Cookie、ユーザーID等)はOSのセキュアストレージに暗号化して保存されます:
| OS | 保存先 |
|---|---|
| macOS | Keychain |
| Windows | Credential Manager |
| Linux | GNOME Keyring / libsecret |
保存される情報:
- 認証Cookie(
_note_session_v5等) - ユーザーID・ユーザー名
- セッション作成日時
- OS暗号化: 各OSのネイティブ暗号化機能を使用
- ユーザー分離: ログインユーザーのみがアクセス可能
- 自動管理:
note_loginで保存、note_logoutで削除
Linuxでは以下のいずれかが必要です:
# Ubuntu/Debian
sudo apt install gnome-keyring
# または
sudo apt install libsecret-1-0- Python 3.11+
- デスクトップ環境(Playwrightが動作する環境)
- note.comアカウント
Dockerを使用してPlaywright環境を構築できます。複数の実行モードをサポートしています。
docker build -t note-mcp .CI/CD環境やバックグラウンド実行向け:
# docker-compose使用
docker compose run --rm test
# 直接実行
docker run --rm --ipc=host note-mcp uv run pytest -vXvfbを使用したheadedモード(仮想ディスプレイ上でブラウザを起動):
docker compose run --rm test-headed
# 直接実行
docker run --rm --ipc=host -e USE_XVFB=1 -e HEADED=1 note-mcp uv run pytest -vNote:
HEADED=1環境変数を使用するには、テストコード内でos.environ.get("HEADED")をチェックしてブラウザのheadlessオプションを制御する必要があります。
VNCクライアントまたはWebブラウザでブラウザ操作をリアルタイム確認:
# バックグラウンドで起動
docker compose up -d test-vnc
# 方法1: noVNC(Webブラウザ経由、クリップボード共有対応)
# ブラウザで http://localhost:6080/vnc.html にアクセス
# 方法2: VNCクライアント
vncviewer localhost:5900
# ログ確認(必要な場合)
docker compose logs -f test-vnc
# 終了時
docker compose downTip: noVNCを使用すると、左側のクリップボードパネルからホストとコンテナ間でテキストをコピー&ペーストできます。
ホストのディスプレイに直接表示:
# X11アクセスを許可(必要な場合)
xhost +local:docker
# 実行
docker compose run --rm test-x11
# または直接
docker run --rm --ipc=host \
-e DISPLAY=$DISPLAY \
-e HEADED=1 \
-v /tmp/.X11-unix:/tmp/.X11-unix \
note-mcp uv run pytest -vコンテナ内でインタラクティブに作業:
# VNCなしで実行(ポートマッピングなし)
docker compose run --rm dev bash
# VNC経由でブラウザを確認する場合(ポートマッピングあり)
docker compose run --rm --service-ports dev bashNote:
docker compose runはデフォルトでポートマッピングを行いません。VNC(ポート5900)やnoVNC(ポート6080)にアクセスする場合は--service-portsフラグが必要です。
コンテナ内でブラウザを開くには:
# コンテナ内で実行
uv run python scripts/open_browser.py https://note.com --wait 120ブラウザを確認するには:
- noVNC(推奨): http://localhost:6080/vnc.html にアクセス(クリップボード共有対応)
- VNCクライアント:
vncviewer localhost:5900で接続
Docker開発環境にはClaude Codeがプリインストールされています。noVNC経由でClaude in Chrome拡張機能を使用できます。
# 開発コンテナを起動
docker compose run --rm --service-ports dev bash
# コンテナ内でChromeを起動(--no-sandboxは必須)
google-chrome-stable --no-sandbox &noVNC(http://localhost:6080/vnc.html)またはVNCクライアント(`vncviewer localhost:5900`)で接続し、以下の手順で拡張機能をインストール:
- Chrome Web Storeにアクセス: https://chromewebstore.google.com/detail/claude/danfoghgkjjpomlapfijehgjhbhnphnf
- 「Chromeに追加」をクリック
- 拡張機能を有効化
Chrome拡張機能と設定はDockerボリューム(chrome-data)に永続化されます。コンテナを再作成しても拡張機能は保持されます。
# ボリュームの確認
docker volume ls | grep chrome-data
# ボリュームの削除(設定をリセットする場合)
docker volume rm note-mcp_chrome-data# コンテナ内で
claude --version # バージョン確認
claude # Claude Code起動| 変数 | 説明 | デフォルト |
|---|---|---|
USE_XVFB |
Xvfbを起動 (1 or true) |
0 |
VNC_PORT |
VNCサーバーポート(TigerVNC) | (無効) |
NOVNC_PORT |
noVNC Webアクセスポート | 6080 |
DISPLAY |
X11ディスプレイ | :99 |
XVFB_WHD |
Xvfb解像度 | 1920x1080x24 |
CHROME_FLAGS |
Chrome起動オプション | --no-sandbox (dev) |
Note:
VNC_PORTを設定するとTigerVNCが起動し、noVNCも自動的に有効になります。クリップボード共有はnoVNC経由で利用できます。
Chromiumがクラッシュする場合:
--ipc=hostフラグを追加(docker-composeでは設定済み)- 共有メモリ不足が原因の可能性があります
Chromeが「Operation not permitted」で起動しない場合:
google-chrome-stable --no-sandbox &で起動してください- Docker内ではChromeのサンドボックス機能が制限されます
claudeコマンドが見つからない場合:
- PATHが正しく設定されているか確認:
echo $PATH /home/ubuntu/.local/binがPATHに含まれているべきです
X11接続エラー:
xhost +local:dockerを実行- WSL2の場合は
/mnt/wslg/ディレクトリの存在を確認
VNCに接続できない場合:
- ポート5900(VNC)または6080(noVNC)が他のプロセスで使用されていないか確認
docker compose logs test-vncでログを確認- noVNCの場合、ブラウザで http://localhost:6080/vnc.html にアクセス
クリップボード共有が動作しない場合:
- noVNC(http://localhost:6080/vnc.html)を使用してください
- VNCクライアント経由ではクリップボード共有は利用できません
- noVNCの左側パネルでクリップボードアイコンをクリック
「Server is already active for display 99」エラー:
- 前回のコンテナが残っています
docker compose downを実行してから再度起動してください
# Install dev dependencies
uv sync --group dev
# Run tests
uv run pytest
# Run E2E tests
uv run pytest tests/e2e/ -v
# Run linter
uv run ruff check .
# Run type checker
uv run mypy .E2Eテストの詳細はテストガイドを参照してください。
MIT License
このプロジェクトはnote.comとは無関係の非公式ツールです。詳細はDISCLAIMER.mdを参照してください。