Skip to main content
Glama

Notepad++ MCP サーバー

FastMCP Version Ruff Linted with Biome Built with Just

CI Release Python FastMCP License: MIT Version

Windows上のNotepad++用MCPサーバーです。FastMCP 3.1.0を使用し、ポートマントー(統合)ツール(ツール数を減らしつつ同等のカバレッジを維持)、オプションのHTTPブリッジサンプリング(Ollama互換HTTPまたはクライアントLLM)、プロンプトskill:// リソース、およびエージェント型ワークフローをサポートしています。

エディタと本リポジトリの違い: Notepad++自体の強み(Scintilla、プラグイン、マクロ、セッションなど)は、このMCPが公開するものとは別物です。明確な役割分担とエディタ側の詳細な概要については、docs/EDITOR_AND_MCP_SCOPE.md を参照してください。


要件

項目

備考

OS

Windows 10/11 (64-bit)

エディタ

Notepad++ 8+ インストール済み

Python

3.12+ (pyproject.tomlrequires-python を参照)

API

pywin32 (Windows上で自動的に取得)


インストール

推奨: uv

このリポジトリをクローンした場合:

git clone https://github.com/sandraschi/notepadpp-mcp.git
Set-Location notepadpp-mcp
uv sync
uv run notepadpp-mcp --help

または、編集可能モードでパッケージをインストールします:

uv pip install -e ".[dev]"

パッケージがPyPIに公開されたら、以下で実行できます:

uvx notepadpp-mcp

使用方法

サーバーの実行方法

公開されているコンソールスクリプトは notepadpp-mcp (pyproject.toml 内の notepadpp_mcp.server:run) です。

  • デフォルト stdio: ほとんどのMCPホスト(Claude Desktop、Cursorなど)で使用されます。追加のフラグは不要です。

  • オプション HTTPブリッジ: 127.0.0.1 上の FastAPI + uvicorn、/mcp でMCP HTTPを提供します。

notepadpp-mcp --http --port 10815

10815番ポートが使用中の場合は --port を変更してください(MCPウェブアプリ群を使用している場合は、中央ポートレジストリを参照してください)。

MCPクライアントの設定

Claude Desktop (claude_desktop_config.json) では、command/args にインストール先を指定します。固定リポジトリパスから uv を使用する例:

{
  "mcpServers": {
    "notepadpp-mcp": {
      "command": "uv",
      "args": ["run", "--directory", "D:/Dev/repos/notepadpp-mcp", "notepadpp-mcp"]
    }
  }
}

notepadpp-mcpPATH にある場合:

{
  "mcpServers": {
    "notepadpp-mcp": {
      "command": "notepadpp-mcp",
      "args": []
    }
  }
}

レガシー: 古いドキュメントでは python -m notepadpp_mcp.tools.server が参照されていました。そのモジュールをデバッグする場合を除き、notepadpp-mcp を使用してください。

ツールの呼び出し(概念)

アシスタントはMCPツールを名前で呼び出します。これらをPowerShellで直接実行するわけではありません。ポートマントーツール内の操作の例:

ツール

代表的な operation

file_ops

open, new, save, info

text_ops

insert, find

status_ops

help, system_status, health_check

tab_ops

list, switch, close

session_ops

save, load, list

linting_ops

python, javascript, json, markdown

display_ops

fix_invisible_text, fix_display_issue

plugin_ops

discover, install, list, execute

その他: ビルドに応じて suggest_notepad_planagentic_notepad_workflow(オーケストレーション)も利用可能です。

セッションスナップショット (session_ops)

  • save Notepad++のライブ session.xml(通常 %APPDATA%\Notepad++\session.xml)をコピーします。これには開いているすべてのバッファがリストされており、%APPDATA%\Notepad++\notepadpp-mcp-sessions\ 配下の名前付きファイルに保存されます。形式はNotepad++の「セッションの読み込み」/ -openSession で使用されるものと一致します。ライブファイルが存在しない、またはファイルがリストされていない場合、サーバーはディスク上にパスが存在するアクティブなタブから構築された最小限のセッションにフォールバックします。

  • load notepad++.exe -openSession "<saved.xml>" を実行します。新規インスタンスで開くか、既存のインスタンスで開くかは、Notepad++の「多重起動」設定に依存します。

  • オーバーライド NOTEPADPP_SESSION_STORAGE_DIR(名前付き *.xml の保存先)、NOTEPADPP_LIVE_SESSION_XML(ライブ session.xml へのパスをオーバーライド。ポータブル版や -settingsDir レイアウト用)。

サンプリング(ワークフロー用LLM)

オプションです。サーバー / NotepadSamplingHandler で文書化されている環境変数を設定します。例:

  • NOTEPADPP_SAMPLING_BASE_URL OpenAI互換ベース(例: Ollama http://127.0.0.1:11434/v1

  • NOTEPADPP_SAMPLING_MODEL

  • NOTEPADPP_SAMPLING_USE_CLIENT_LLM サポートされている場合、MCPホストにサンプリングを実行させる


ツール概要(ポートマントー)

ツール

目的

file_ops

開く、新規作成、保存、ファイル情報

text_ops

バッファへの挿入 / 検索

status_ops

ヘルプ、システムステータス、ヘルスチェック

tab_ops

タブのリスト / 切り替え / 閉じる

session_ops

ワークスペースセッションの保存 / 読み込み / リスト

linting_ops

Python, JS, JSON, Markdown(利用可能な場合、PATH上の ruff / eslint を使用)

display_ops

不可視テキスト / 表示の不具合修正

plugin_ops

プラグインの検出 / インストール / リスト / 実行

応答は一貫した辞書形式を使用します: successmessage または summary、および関連する場合は error / recovery_options


リポジトリ内のドキュメント

  • docs/EDITOR_AND_MCP_SCOPE.md Notepad++(エディタ)vs 本サーバー: エディタの強みとMCPブリッジの境界線

  • docs/NOTEPADPP_MACROS.md マクロ(用途、shortcuts.xml、キュレーションセット / 将来のツール案)

  • src/notepadpp_mcp/docs/ APIノート、例、PRD(存在する場合)

  • src/notepadpp_mcp/docs_manifest.py ウェブブリッジ用のREST/MCP概要(有効時)


開発

uv pip install -e ".[dev]"
uv run pytest src/notepadpp_mcp/tests/
uv run ruff check src/notepadpp_mcp tests
uv run ruff format src/notepadpp_mcp tests

オプション: 統合スモークテスト用に python demonstration_test.py またはプロジェクトの dev.py(存在する場合)を実行します。


ロードマップ / TODO(拡張機能)

計画中またはオープンな作業(貢献者向けの最初の課題として最適):

  • [ ] 多重起動 / マルチウィンドウ 複数のNotepad++が開いている場合に特定のHWNDをターゲットにする

  • [ ] よりリッチなプラグインフロー 調整されたマルチプラグインステップ、プラグイン管理からのより良いエラー表示

  • [ ] Linting HTML/CSS、リンター用のオプション設定ファイル

  • [ ] 設定プロファイル サーバー側のデフォルト(パス、タイムアウト、自動起動)

  • [ ] バッチ 進捗報告を伴うファーストクラスのバッチファイル操作

  • [ ] Web UI ドキュメントを実際のダッシュボードパッケージ(例: web_sota/)およびポートと整合させる

  • [ ] テスト / カバレッジ カバレッジの向上、WindowsランナーでのCIの維持

  • [ ] マクロ リポジトリ内のキュレーションされたXMLスニペット。%APPDATA%\Notepad++\shortcuts.xml の読み込み/リスト/マージ(docs/NOTEPADPP_MACROS.md を参照)

古い変更履歴の項目(多重起動、プラグイン分析など)は、現在も適用されるものは上記リストに統合されています。


トラブルシューティング

  • Notepad++が見つからない Notepad++をインストールして一度起動するか、ビルドがサポートしている場合は自動起動動作を有効にしてください。

  • Windows APIが利用できない Windowsを使用してください。サーバーと同じ環境に pywin32 をインストールしてください。

  • クライアントでツールが見つからない ホストを再起動し、MCPログを確認し、ターミナルから notepadpp-mcp がエラーなしで実行できることを確認してください。

  • セッションの保存が空 / 失敗する Notepad++は、保存されたファイルを開くかエディタを再起動するまで session.xml を更新しない場合があります。「設定 > 環境設定 > バックアップ」のセッション動作が期待通りであることを確認してください。ポータブル版の場合は、NOTEPADPP_LIVE_SESSION_XML を正しい session.xml に設定してください。


変更履歴(短縮版)

  • 0.2.x session_ops が名前付きセッションを永続化: ライブ session.xml をコピーし、-openSession 経由で読み込みます(READMEの「セッションスナップショット」セクションを参照)。

  • 0.2.0 FastMCP 3.1.0、サンプリング、スキル、プロンプト、エージェント型ワークフロー、server.py に実装されたHTTPブリッジ + Webフック。

  • 以前 ポートマントーによるツール統合、Lintingおよびプラグインツール。


🛡️ 産業品質スタック

本プロジェクトは、高忠実度なエージェント型オーケストレーションのための SOTA 14.1 産業標準に準拠しています:

  • Python (コア): Lintingとフォーマットに Ruff を使用。コアハンドラー内での print 文をゼロ許容 (T201)。

  • Webapp (UI): ミリ秒単位のLintingに Biome を使用。厳格な noConsoleLog の強制。

  • プロトコル準拠: クラッシュ耐性のあるJSON-RPC通信を保証するための、堅牢な stdout/stderr 分離。

  • 自動化: すべてのフリート操作のための Justfile レシピ (just lint, just fix, just dev)。

  • セキュリティ: bandit および safety による自動監査。

ライセンス

MIT LICENSE を参照。

A
license - permissive license
-
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sandraschi/notepadpp-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server