AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
MCP Server for Notepad++ automation with comprehensive file operations, plugin management, code linting, and Windows API integration. 26 tools, FastMCP 2.12 compatibility, and extensive testing.
Developer toolsPython · TypeScriptGitHub @sandraschiSelf-installOwner unconfirmed
Paste into Claude or ChatGPT for installation instructions suited to your environment.
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Installable projects can be verified without a deployment domain. Use GitHub sign-in for a personal repository, or the repository verification file above for an organization repository.
Ask about other verification options
Loading the full README. The saved excerpt is shown below.
📖 Installation Guide — quick start, manual setup, and troubleshooting
MCP server for Notepad++ on Windows. Uses FastMCP 3.4.4 with portmanteau tools (fewer tools, same coverage), optional HTTP bridge, sampling (Ollama-compatible HTTP or client LLM), prompts, skill:// resources, and agentic workflows.
Editor vs this repo: Notepad++s own strengths (Scintilla, plugins, macros, sessions, ) are separate from what this MCP exposes. See docs/EDITOR_AND_MCP_SCOPE.md for a clear split and a fuller editor-side overview.Read the full README ↗📖 Installation Guide — quick start, manual setup, and troubleshooting Onboarding — Notepad++ wrappee required (Windows, N++ 8+); sanity checks + pitfalls
Claude Desktop one-click: download notepadpp-mcp.mcpb from
releases/latest
and drag it into Claude Desktop, or run .\dist\install.ps1 after just mcpb-pack.
MCP server for Notepad++ on Windows. Uses FastMCP 3.4.4 with portmanteau tools (fewer tools, same coverage), optional HTTP bridge, sampling (Ollama-compatible HTTP or client LLM), prompts, skill:// resources, and agentic workflows.
Editor vs this repo: Notepad++s own strengths (Scintilla, plugins, macros, sessions, ) are separate from what this MCP exposes. See docs/EDITOR_AND_MCP_SCOPE.md for a clear split and a fuller editor-side overview.
| Item | Notes |
|---|---|
| OS | Windows 10/11 (64-bit) |
| Editor | Notepad++ 8+ installed |
| Python | 3.12+ (requires-python in pyproject.toml) |
| API | pywin32 (pulled in on Windows) |
git clone https://github.com/sandraschi/notepadpp-mcp
cd notepadpp-mcp
just
This opens an interactive dashboard showing all available commands. Run just bootstrap to install dependencies, then just serve to start the full stack (backend 10815 + webapp 10814).
If you don't have just installed:
Recommended: uv.
From a clone of this repo:
git clone https://github.com/sandraschi/notepadpp-mcp.git
Set-Location notepadpp-mcp
uv sync
uv run notepadpp-mcp --help
Or install the package in editable mode:
uv pip install -e ".[dev]"
When the package is published to PyPI, you can run it with:
uvx notepadpp-mcp
The published console script is notepadpp-mcp (notepadpp_mcp.server:run in pyproject.toml).
127.0.0.1, MCP HTTP at /mcp.notepadpp-mcp --http --port 10815
Change --port if 10815 is taken (see central port registry if you use a fleet of MCP webapps).
Claude Desktop (claude_desktop_config.json) point command/args at your install. Example using uv from a fixed repo path:
{
"mcpServers": {
"notepadpp-mcp": {
"command": "uv",
"args": ["run", "--directory", "D:/Dev/repos/notepadpp-mcp", "notepadpp-mcp"]
}
}
}
If notepadpp-mcp is on PATH:
{
"mcpServers": {
"notepadpp-mcp": {
"command": "notepadpp-mcp",
"args": []
}
}
}
Legacy: older docs referenced python -m notepadpp_mcp.tools.server. Prefer notepadpp-mcp unless you are debugging that module.
The assistant calls MCP tools by name; you do not run these in PowerShell. Examples of operations inside portmanteau tools:
| Tool | Typical operation values |
|---|---|
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 |
Also: suggest_notepad_plan, agentic_notepad_workflow (orchestration), depending on build.
session_ops)session.xml (typically %APPDATA%\Notepad++\session.xml), which lists all open buffers, into a named file under %APPDATA%\Notepad++\notepadpp-mcp-sessions\. Format matches what Notepad++ uses for Load Session / -openSession. If the live file is missing or lists no files, the server falls back to a minimal session built from the active tab path when that path exists on disk.notepad++.exe -openSession "<saved.xml>". Whether a new or existing instance opens files depends on your Multi-instance settings in Notepad++.NOTEPADPP_SESSION_STORAGE_DIR (where named *.xml are stored), NOTEPADPP_LIVE_SESSION_XML (override path to the live session.xml, e.g. portable or -settingsDir layouts).Optional. Set env vars as documented in the server / NotepadSamplingHandler, for example:
NOTEPADPP_SAMPLING_BASE_URL OpenAI-compatible base (e.g. Ollama http://127.0.0.1:11434/v1)NOTEPADPP_SAMPLING_MODELNOTEPADPP_SAMPLING_USE_CLIENT_LLM let the MCP host run sampling when supported| Tool | Purpose |
|---|---|
| file_ops | Open, new, save, file info |
| text_ops | Insert / find in buffer |
| status_ops | Help, system status, health |
| tab_ops | List / switch / close tabs |
| session_ops | Save / load / list workspace sessions |
| linting_ops | Python, JS, JSON, Markdown, (uses ruff / eslint on PATH when available) |
| display_ops | Invisible text / display glitches |
| plugin_ops | Discover / install / list / execute plugins |
Responses use a consistent dict shape: success, message or summary, plus error / recovery_options where relevant.
docs/EDITOR_AND_MCP_SCOPE.md Notepad++ (editor) vs this server: strengths of the editor, boundaries of the MCP bridgedocs/NOTEPADPP_MACROS.md Macros (what people use them for, shortcuts.xml, curated-set / future tool ideas)src/notepadpp_mcp/docs/ API notes, examples, PRD where presentsrc/notepadpp_mcp/docs_manifest.py REST/MCP overview for the web bridge (when enabled)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
Optional: python demonstration_test.py or project dev.py if present for integration smoke tests.
Work that is planned or open good first issues for contributors:
web_sota/) and ports%APPDATA%\Notepad++\shortcuts.xml (see docs/NOTEPADPP_MACROS.md)This MCP server includes a free, premium web interface for monitoring and control. By default, the web dashboard runs on port 10814. (Assigned ports: 10814 (Web dashboard frontend), 10815 (Web dashboard backend (API)))
To start the webapp dashboard and backend:
.\start.ps1
-Headless: Runs everything in the background (hidden windows).-BackendOnly: Starts only the Python API server (no Vite frontend).-NoBrowser: Prevents the automatic browser opening.Access the dashboard at http://localhost:10814.
Older changelog bullets (multi-instance, plugin analytics, etc.) are folded into the list above where they still apply.
notepadpp-mcp runs without errors from a terminal.session.xml until you have opened saved files or restarted the editor; ensure Settings > Preferences > Backup session behavior matches your expectations. For portable installs, set NOTEPADPP_LIVE_SESSION_XML to the correct session.xml.session_ops persists named sessions: copies live session.xml, loads via -openSession (see README section Session snapshots).server.py.This project adheres to SOTA 14.1 industrial standards for high-fidelity agentic orchestration:
print statements in core handlers (T201).noConsoleLog enforcement.stdout/stderr isolation to ensure crash-resistant JSON-RPC communication.just lint, just fix, just serve).bandit and safety.MIT see LICENSE.