
MCP Server for controlling PixInsight astrophotography processing via AI assistants
概览
An MCP server that lets an AI assistant drive PixInsight: open images, measure them, run any installed process, read the results back. PixInsight stays responsive while it works, so you can watch and intervene. Cross-platform: Windows, macOS and Linux. Any MCP client works. This is a stock stdio server with no client-specific code. Claude Desktop, Cursor, Windsurf and anything else that takes an mcp.json: On Windows, if a client cannot resolve npx, use "command": "cmd" with "args": ["/c", "npx", "-y", "@pardovot/pixinsight-mcp"]. Build and sign it from source, see Building from source below. Process > Utilities > MCP Watcher > Start, then ask your assistant to list your open images. If it answers, you are connected. Requires PixInsight 1.9.4+ (V8 engine), Node 18+, and an MCP client.
README
以下为原文 README 节选,完整内容请查看原文。
PixInsight MCP
An MCP server that lets an AI assistant drive PixInsight: open images, measure them, run any installed process, read the results back. PixInsight stays responsive while it works, so you can watch and intervene.
Cross-platform: Windows, macOS and Linux.
Install
1. MCP server. Any MCP client works. This is a stock stdio server with no client-specific code.
Claude Code:
claude mcp add pixinsight -- npx -y @pardovot/pixinsight-mcp
Claude Desktop, Cursor, Windsurf and anything else that takes an mcp.json:
{
"mcpServers": {
"pixinsight": { "command": "npx", "args": ["-y", "@pardovot/pixinsight-mcp"] }
}
}
Codex CLI, in ~/.codex/config.toml:
[mcp_servers.pixinsight]
command = "npx"
args = ["-y", "@pardovot/pixinsight-mcp"]
On Windows, if a client cannot resolve npx, use "command": "cmd" with
"args": ["/c", "npx", "-y", "@pardovot/pixinsight-mcp"].
2. PixInsight module. Build and sign it from source, see Building from source below.
3. Start it. Process > Utilities > MCP Watcher > Start, then ask your assistant to list your
open images. If it answers, you are connected.
Requires PixInsight 1.9.4+ (V8 engine), Node 18+, and an MCP client.
Tools
24 tools. Bold ones carry the work.
| Category | Tools |
|---|---|
| Execution | run_process, get_process_parameters, run_recipe |
| Images | list_open_images, open_image, save_image, close_image, get_image_statistics |
| Measurement | get_noise, get_background_gradient, get_background_neutrality, get_star_metrics, get_structure_color |
| Rendering | render_view, render_critic_pack |
| History | get_history, get_full_history, undo, redo, snapshot, restore |
| Instances | list_instances, use_instance |
| Export | export_container |
run_process runs any process by class name, including third-party ones you have installed,
so nothing needs adding when you install a new tool.
Measurement tools exist so settings come from your frame instead of a tutorial. Two traps:
get_noise returns an MRS estimate, stdDev is signal-dominated on astro frames and will lie to
you. get_background_neutrality needs mode:'poststretch' after stretching, the sky-band metric
is only valid pre-curve.
Definitions live in src/tools/*.ts. Verified gotchas: docs/facts.md.
How it works
MCP client
│ MCP (stdio)
MCP server src/ (TypeScript)
│ file bridge ~/.pixinsight-mcp/bridge/{commands,results}
MCPWatcher-pxm.dll pcl::Timer on PixInsight's event loop
│ MetaModule::EvaluateScript
Embedded JS handlers generated from pjsr/pixinsight-mcp-watcher.js
PixInsight
PixInsight has no socket or HTTP API, so a file bridge is the only route in. Round trip is about one poll interval, 300 ms by default.
安装
npx -y @pardovot/pixinsight-mcp配置
{
"mcpServers": {
"pixinsight": { "command": "npx", "args": ["-y", "@pardovot/pixinsight-mcp"] }
}
}