PixInsight Connector
NPM · PIXINSIGHT-CONNECTOR
Operate PixInsight from any MCP agent. Community project, not affiliated with Pleiades Astrophoto
Available components
Last scanned (23 hours ago)
Scores higher than 90% of npm servers
Category Design and Media
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 31 of 92 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to mxcoppell/pixinsight-connector). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 15 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability67
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 17706 tokens (~194/item across 91 items; 91 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management73
- Stability observed for 22 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "remove_mask" implies "remove" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 92 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 15 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 67 to 70. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 21 at this one. The score rises as the window fills, whether or not the server changes.
- 13 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 60 to 63. That category is still filling its 30-day observation window: 18 days of observed history at the previous scan, 19 at this one. The score rises as the window fills, whether or not the server changes.
- 11 Oct 26 +3
No change was recorded against any check on this day. Stability & Change Management went from 33 to 57. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.
- 4 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 30 to 33. That category is still filling its 30-day observation window: 9 days of observed history at the previous scan, 10 at this one. The score rises as the window fills, whether or not the server changes.
- 2 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.
- 1 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 30 Sept 26 −15
- Known CVEs: pass → unverified ▼ security
- Malware scan: pass → unverified ▼ security
- Dependency health: 0.84 → unverified ▼ functional
- Package version: 2.3.0 → 2.5.0 functional
- Package version: 2.3.0 → 2.4.1 functional
- Package version: 2.3.0 → 2.4.0 functional
- 29 Sept 26 +16
- Malware scan: unverified → pass ▲ security
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 16 Oct 2026 · Analysed npm/pixinsight-connector@2.5.0
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | npm |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | mxcoppell/pixinsight-connector |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/mxcoppell/pixinsight-connector/.github/workflows/test.yml@refs/tags/v2.5.0 |
| Rekor log index | 3026745618 |
| Predicate type | SLSA build provenance https://slsa.dev/provenance/v1 |
| Subject digest | sha512:658333ac08c808ade203a262c4e88630b252b32c1b8b818a05afebda4b17a6d6d6fdcc91953c93a40210e150b5eb3dd680be86d5b4765f2c39fad9810 |
Background: How many MCP packages publish verified provenance →
Dependencies 92 packages
| Packages resolved | 92 |
|---|---|
| Stale | 31 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
pixelmath_new_image ~300
Run PixelMath to create a NEW image from expressions that reference other open views by id. Color "rgb" takes red/green/blue expressions; color "gray" takes a single expression. The new image is truncated to [0,1]; the reply gives, per channel, the fraction of samples that were below 0 or above 1 before truncation. When size_from has an astrometric solution it is copied onto the new image (same geometry), unless copy_astrometric_solution is false. View ids used inside expressions must be simple identifiers (rename_view renames a view). No pow() — use exp(exponent*ln(base)) or the ^ operator.
| Name | Type | Req | Description |
|---|---|---|---|
| blue | string | – | Blue channel expression (color "rgb") |
| color | string | yes | – |
| copy_astrometric_solution | boolean | – | Copy size_from's astrometric solution onto the new image when it has one |
| expression | string | – | Single expression for color "gray" |
| green | string | – | Green channel expression (color "rgb") |
| output_id | string | yes | Id for the new image |
| red | string | – | Red channel expression (color "rgb") |
| size_from | string | yes | A view whose width and height the new image copies |
| symbols | string | – | PixelMath symbols; constants only, e.g. "k=0.3". Symbols cannot hold images: write image expressions inline. |
No output schema declared.
No examples provided.
pixinsight_info ~38
Report the resolved PixInsight installation paths for this platform and the connector version. Read-only. For live process status, use the doctor command.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
remove_mask ~27
Remove the current mask from a view.
| Name | Type | Req | Description |
|---|---|---|---|
| target_id | string | yes | Target view ID |
No output schema declared.
No examples provided.
rename_view ~57
Rename an image view to a different view ID. Long XISF names can cause some PixInsight processes to fail.
| Name | Type | Req | Description |
|---|---|---|---|
| new_id | string | yes | New view ID (no spaces) |
| old_id | string | yes | Current view ID |
No output schema declared.
No examples provided.
reproject_to_reference ~279
Resample a plate-solved image onto the pixel grid of another plate-solved image, using the two astrometric solutions (PixInsight's astrometric reprojection): the result has the reference's size and solution and comes from a single interpolation of the source. Use it to bring a master from another telescope or session onto a reference grid; both views need a solution (run_plate_solve). The source is not changed; the result is a new 32-bit float view (output_id, default <view_id>_reprojected). It reports the size, the time and whether the result is empty (the two fields do not overlap). Registration accuracy is set by the two solutions, so check the star-centroid residual of the result against the reference.
| Name | Type | Req | Description |
|---|---|---|---|
| clamp | number | – | Clamping threshold of the Lanczos and bicubic interpolations, 0 to 1 (default 0.3) |
| interpolation | string | – | Pixel interpolation (default Lanczos3) |
| output_id | string | – | View ID of the result (default <view_id>_reprojected) |
| reference_id | string | yes | View whose size and astrometric solution the result takes (needs an astrometric solution) |
| view_id | string | yes | Source view to reproject (needs an astrometric solution) |
No output schema declared.
No examples provided.
resample_image ~330
Change an image's pixel dimensions. mode "integer": IntegerResample by a whole factor (factor 2 bins 2x2 into one pixel with the given downsampling combination; enlarge: true multiplies the size instead). mode "scale": Resample by a relative factor (0.5 halves each side). mode "to_reference": Resample to exactly the width and height of reference_id. Runs in place, or on a copy named output_id that carries the keywords, astrometric solution and view properties. FITS keywords are kept. PixInsight removes the astrometric solution in these processes; the result states whether a solution was present before and after. Runs without the geometry confirmation dialog (noGUIMessages).
| Name | Type | Req | Description |
|---|---|---|---|
| downsampling | string | – | integer mode: how binned pixels combine (default Average) |
| enlarge | boolean | – | integer mode: multiply the size by factor instead of dividing it (default false) |
| factor | number | – | integer: whole bin/zoom factor >= 2. scale: relative size factor > 0 |
| interpolation | string | – | scale / to_reference: Resample interpolation; omitted, PixInsight's default |
| mode | string | yes | integer (IntegerResample), scale (Resample by a factor) or to_reference (Resample to reference_id's size) |
| output_id | string | – | Resample a copy with this view id instead of the view itself |
| reference_id | string | – | to_reference: the view whose width and height the result takes |
| view_id | string | yes | View to resample |
No output schema declared.
No examples provided.
restore_from_clone ~53
Restore an image from a backup clone, replacing all changes since the clone was made.
| Name | Type | Req | Description |
|---|---|---|---|
| clone_id | string | yes | Clone view ID to restore from |
| target_id | string | yes | Target view ID to overwrite |
No output schema declared.
No examples provided.
restore_star_color ~218
Restore the colour ratios of a reference view in the bright areas of a target, in place, keeping the target's luminance. Per channel: restored = min(reference[c] * Lt / max(Lr, 0.001), max_value), where Lt and Lr are the target's and the reference's channel means; it is weighted in linearly from 0 at reference luminance restore_start to 1 at restore_end. Runs as 64-bit PixelMath truncated to [0,1]; reports the target's median and max before and after.
| Name | Type | Req | Description |
|---|---|---|---|
| max_value | number | yes | Upper cap on each restored channel |
| pre_star_id | string | yes | Reference RGB view whose colour ratios are restored (open, same dimensions) |
| restore_end | number | yes | Reference luminance at and above which the restored colour fully replaces the target; greater than restore_start |
| restore_start | number | yes | Reference luminance at and below which the target is unchanged |
| target_id | string | yes | RGB view to modify in place |
No output schema declared.
No examples provided.
resume_bridge ~32
Allow PixInsight commands again after the user pressed Pause/Abort. Call ONLY when the user explicitly tells you to continue.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
robust_median_stretch ~523
Stretch a linear view in place so its median lands on target_median. Per pass: from the median M and the unnormalized median absolute deviation D of the image (range clipping off, alpha excluded), sigma = 1.4826·D and the black point c0 = max(0, M − black_point_sigma·sigma); samples are rescaled to u = clamp((x − c0)/(1 − c0), 0, 1), and the midtones transfer function MTF(m, u) = (m − 1)·u / ((2m − 1)·u − m) is applied with the balance m solved so that MTF(m, u(M)) = target_median exactly. linked true takes one set of statistics over all channels jointly; false takes them per channel. Each further pass repeats this on the previous output, re-measuring the statistics; passes before the last run on a scratch copy, so the view is written once and is left unmodified when any pass cannot be solved (a median on the black point, e.g. D = 0). With highlight_knee h and highlight_midtones mh, values y above h become h + (1 − h)·MTF(mh, (y − h)/(1 − h)) after the last pass. The result is JSON: per pass and per statistics group M, D, sigma, c0, the rescaled median xbar and m.
| Name | Type | Req | Description |
|---|---|---|---|
| black_point_sigma | number | yes | Distance of the black point below the median, in units of 1.4826·MAD (>= 0) |
| highlight_knee | number | – | Output level above which values are compressed, strictly between 0 and 1. Given together with highlight_midtones; omitted = no highlight compression. |
| highlight_midtones | number | – | MTF balance applied to the segment above highlight_knee, strictly between 0.5 and 1. Given together with highlight_knee. |
| linked | boolean | – | Colour images only, required for them: true = joint statistics over all channels and one transform for all; false = statistics and transform per channel. Ignored for a grayscale image. |
| passes | integer | – | Number of times the whole procedure runs, each on the previous output (>= 1; omitted = 1) |
| target_median | number | yes | Median of the output, strictly between 0 and 1 |
| view_id | string | yes | View to stretch (modified in place) |
No output schema declared.
No examples provided.
run_abe ~77
Run AutomaticBackgroundExtractor (ABE) on a view, replacing it in place with the corrected result.
| Name | Type | Req | Description |
|---|---|---|---|
| poly_degree | integer | – | Polynomial degree, 1 to 6 (default 4) |
| tolerance | number | – | Sample rejection tolerance (default 1.0) |
| view_id | string | yes | View ID to process |
No output schema declared.
No examples provided.
run_background_neutralization ~36
Run BackgroundNeutralization to equalize the background level across channels.
| Name | Type | Req | Description |
|---|---|---|---|
| view_id | string | yes | PixInsight view identifier. |
No output schema declared.
No examples provided.
run_bxt ~190
Run BlurXTerminator on a view. correct_only applies PSF correction without sharpening; otherwise sharpen_nonstellar and sharpen_stellar (the process's sharpen_stars parameter) control sharpening strength. ml_version is the process's neural network model version; omitted, the process keeps its own setting.
| Name | Type | Req | Description |
|---|---|---|---|
| adjust_star_halos | number | – | Star halo adjustment, -1 to 1 (default 0.0) |
| correct_only | boolean | – | Correct-only mode: PSF correction with no sharpening |
| ml_version | number | – | Neural network model version (the process's ml_version parameter) |
| sharpen_nonstellar | number | – | Non-stellar sharpening, 0 to 1 (default 0.50) |
| sharpen_stellar | number | – | Stellar sharpening, 0 to 1 (default 0.50) |
| view_id | string | yes | View ID to process |
No output schema declared.
No examples provided.
run_curves ~116
Apply a CurvesTransformation to a view. Provide control points as [[x,y], ...] for the desired channel: "RGB" (all), "L" (lightness), "S" (saturation), "R", "G", "B".
| Name | Type | Req | Description |
|---|---|---|---|
| channel | string | yes | Channel to apply the curve to |
| points | array | yes | Control points [[x,y], ...] from (0,0) to (1,1). Include endpoints. |
| view_id | string | yes | View ID to process |
No output schema declared.
No examples provided.
run_gradient_correction ~34
Run GradientCorrection on a view to remove a background gradient.
| Name | Type | Req | Description |
|---|---|---|---|
| view_id | string | yes | PixInsight view identifier. |
No output schema declared.
No examples provided.
run_hdrmt ~134
Run HDRMultiscaleTransform on a view. Inverted mode enhances detail; normal mode compresses dynamic range.
| Name | Type | Req | Description |
|---|---|---|---|
| inverted | boolean | – | Inverted mode (enhances detail instead of compressing) |
| iterations | integer | – | Number of iterations (default 1) |
| layers | integer | yes | Number of decomposition layers, 4 to 8 (default 6) |
| preserve_hue | boolean | – | Preserve hue for color images (default true) |
| to_lightness | boolean | – | Apply to lightness only for color images (default true) |
| view_id | string | yes | View ID to process |
No output schema declared.
No examples provided.
run_lhe ~130
Run LocalHistogramEqualization (contrast-limited local histogram equalization) on a view. Omitted parameters keep PixInsight's defaults.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | number | – | Blend of the equalized result with the original, 0 to 1. |
| circular_kernel | boolean | – | Circular kernel (true) or square kernel (false). |
| histogram_resolution | string | – | Histogram resolution: 8, 10 or 12 bits. |
| radius | number | – | Kernel radius in pixels. |
| slope_limit | number | – | Contrast slope limit. |
| view_id | string | yes | PixInsight view identifier. |
No output schema declared.
No examples provided.
run_mgc ~247
Run MultiscaleGradientCorrection using the MARS reference database. The image must be plate-solved and linear; a mono image also needs the flux metadata run_spfc writes. For a mono image pass filter (L, R, G, B, Ha, OIII, SII); a mono image without filter is refused, since MGC would then fit its model against a MARS band that is not the image's. For a color image leave it out (R, G, B bands are used). MARS files default to the ones configured in PixInsight.
| Name | Type | Req | Description |
|---|---|---|---|
| filter | string | – | Mono only. One of L, R, G, B, Ha, OIII, SII |
| gradient_scale | number | – | Gradient scale in pixels (default 1024) |
| mars_files | array | – | Absolute .xmars paths (default: from PixInsight settings) |
| model_smoothness | number | – | Model smoothness (default 1) |
| show_model | boolean | – | Also create the gradient model window |
| structure_separation | number | – | Structure separation (default 3) |
| view_id | string | yes | View ID to process |
No output schema declared.
No examples provided.
run_nxt ~95
Run NoiseXTerminator to reduce noise on a view.
| Name | Type | Req | Description |
|---|---|---|---|
| denoise | number | yes | Denoise strength, 0 to 1. |
| detail | number | – | Detail preservation, 0 to 1. |
| ml_version | number | – | Neural network model version (the process's ml_version parameter). Omitted, the process keeps its own setting. |
| view_id | string | yes | PixInsight view identifier. |
No output schema declared.
No examples provided.
run_per_channel_abe ~188
Run AutomaticBackgroundExtractor (ABE) separately on the R, G and B channels of a color view, then recombine them into the view with ChannelCombination. ChannelExtraction writes the channels to the temporary views __pca_R, __pca_G and __pca_B; ABE subtracts its model from each in place and discards the model; the temporary views and any other view the call opened are closed afterwards. An ABE parameter that is not given is left at PixInsight's default, as run_abe does.
| Name | Type | Req | Description |
|---|---|---|---|
| poly_degree | integer | – | ABE polynomial degree for every channel (AutomaticBackgroundExtractor polyDegree); omitted = PixInsight default |
| tolerance | number | – | ABE sample rejection tolerance for every channel (AutomaticBackgroundExtractor tolerance); omitted = PixInsight default |
| view_id | string | yes | RGB color view ID (modified in place) |
No output schema declared.
No examples provided.
run_pixelmath ~199
Run an arbitrary PixelMath expression in place on a view. The result is truncated to [0,1]; the reply gives, per channel, the fraction of samples that were below 0 or above 1 before truncation, and their min and max. RULES: (1) NO pow() — use exp(exponent*ln(base)). (2) Channel access is $T[0] for R, $T[1] for G, $T[2] for B — NOT $T.R or $T.B. (3) For other images use viewId[0], viewId[1], viewId[2].
| Name | Type | Req | Description |
|---|---|---|---|
| expression | string | yes | PixelMath expression using $T for current pixel value |
| single_expression | boolean | – | Apply the same expression to all channels (default true) |
| symbols | string | – | Symbol declarations (comma-separated) |
| view_id | string | yes | View ID to process |
No output schema declared.
No examples provided.
run_pjsr ~272
Run a PJSR (JavaScript, V8 engine) snippet inside PixInsight and return its console output. Last resort for things the other tools do not cover. Call processEvents() before each long process (BXT, NXT, SXT) so Pause/Abort works. No ES6 module syntax; the snippet is eval-ed as a script, so #include does not work and a top-level return is a syntax error; `include` prepends files instead. Code that does not parse is refused with its line number before anything reaches PixInsight.
| Name | Type | Req | Description |
|---|---|---|---|
| async | boolean | – | Run as a job: the call returns a job id at once and the code runs in PixInsight in the background. job_status reports on the job and returns its result; cancel_job stops it. While a job runs, other c… |
| code | string | yes | PJSR code. The value of the last expression is returned. |
| include | array | – | Absolute paths of PJSR source files whose contents run before `code`, in this order, in the same scope, so functions they define can be called from `code`. |
No output schema declared.
No examples provided.
run_pjsr_file ~198
Run a PJSR (JavaScript, V8 engine) source file from disk inside PixInsight and return its console output. Same execution model as run_pjsr, with the code read from a file instead of passed inline. No ES6 module syntax; the file content is eval-ed, so #include does not work. Code that does not parse is refused with its line number before anything reaches PixInsight.
| Name | Type | Req | Description |
|---|---|---|---|
| async | boolean | – | Run as a job: the call returns a job id at once and the code runs in PixInsight in the background. job_status reports on the job and returns its result; cancel_job stops it. While a job runs, other c… |
| path | string | yes | Absolute path to the PJSR source file. |
No output schema declared.
No examples provided.
run_plate_solve ~443
Plate solve an open image with ImageSolver against the local Gaia DR3/SP database (offline). Adds the astrometric solution needed by run_spfc, run_mgc and run_spcc. Needs an approximate position (ra_deg, dec_deg; within a fraction of the field is enough) and scale (pixel_scale in arcsec/px, or focal_length_mm + pixel_size_um) unless the image keywords already carry RA, DEC and FOCALLEN/XPIXSZ. If the seeded solve fails, it is retried with the scale seed multiplied by 0.5, 2, 1/3 and 3 in turn (scale_search false tries the seed only). The result gives the solved scale from the solution, the expected scale (the seed, or the one the keywords give) and their ratio, which is far from 1 for a master a stacker resampled or drizzled. Observation time is read from DATE-OBS/DATE, else today. The result also states whether distortion correction and recursive surface splines were on.
| Name | Type | Req | Description |
|---|---|---|---|
| dec_deg | number | – | Approximate center Dec in degrees |
| focal_length_mm | number | – | Focal length in mm (use with pixel_size_um instead of pixel_scale) |
| observation_jd | number | – | Julian date of the observation (only if no DATE-OBS/DATE keyword) |
| pixel_scale | number | – | Approximate pixel scale in arcsec/pixel |
| pixel_size_um | number | – | Pixel size in microns |
| ra_deg | number | – | Approximate center RA in degrees |
| recursive_splines | boolean | – | ImageSolver's "Recursive surface splines" distortion option (ImageSolver 6.5.0, PixInsight 1.9.5): models distortion with all matched stars as local surface splines over a quadtree. Omitted, the opti… |
| scale_search | boolean | – | Retry with wider scale seeds when the seeded solve fails (default true) |
| view_id | string | yes | View ID to plate solve |
No output schema declared.
No examples provided.
run_process ~210
Instantiate any PixInsight process by its PJSR constructor name, assign JSON-valued parameters onto the instance, and execute it on a view (when view_id is given) or globally (when it is omitted). Generic fallback for processes with no dedicated tool. A params key that is not a parameter of the installed process is refused by name, since PixInsight would otherwise ignore it. A process that has the noGUIMessages property (Crop, DynamicCrop, Resample, IntegerResample, Rotation, FastRotation, ChannelMatch and others) runs with it set to true unless params sets it, so its confirmations and warnings go to the Process Console instead of a dialog.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | PJSR process constructor name, e.g. "SCNR". |
| params | object | – | Property name to JSON-valued setting, assigned on the process instance before it runs. |
| view_id | string | – | View to run the process on. Omit to run the process globally instead. |
No output schema declared.
No examples provided.
run_scnr ~68
Run SCNR (Subtractive Chromatic Noise Reduction) to remove a green colour cast from a view.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | number | – | Green removal amount, 0 to 1. |
| protection | string | – | Protection method. |
| view_id | string | yes | PixInsight view identifier. |
No output schema declared.
No examples provided.
run_spcc ~521
Run SpectrophotometricColorCalibration (SPCC). Requires the image to have an astrometric solution (run_plate_solve adds one) and to be linear (not stretched). Narrowband mode (narrowband_mode true) calibrates each channel as a narrow band: give the real filter centre and width per channel (red_/green_/blue_wavelength_nm and _bandwidth_nm; PixInsight's defaults are 656.3 / 500.7 / 500.7 nm and 3 nm for every band, wrong for a 5 nm H-alpha filter). The white reference matters for star colour: use a solar-type reference such as "G2V Star"; the default "Average Spiral Galaxy" makes a galaxy neutral and tints stars.
| Name | Type | Req | Description |
|---|---|---|---|
| blue_bandwidth_nm | number | – | Narrowband mode: bandwidth of the blue channel's filter in nm (PixInsight default 3) |
| blue_filter_name | string | – | Measured B filter curve name, as listed by find_filters |
| blue_wavelength_nm | number | – | Narrowband mode: centre wavelength of the blue channel's filter in nm (default 500.7) |
| green_bandwidth_nm | number | – | Narrowband mode: bandwidth of the green channel's filter in nm (PixInsight default 3) |
| green_filter_name | string | – | Measured G filter curve name, as listed by find_filters |
| green_wavelength_nm | number | – | Narrowband mode: centre wavelength of the green channel's filter in nm (default 500.7) |
| narrowband_mode | boolean | – | Enable narrowband mode (default false) |
| qe_name | string | – | Camera QE curve name (find_filters channel Q) |
| red_bandwidth_nm | number | – | Narrowband mode: bandwidth of the red channel's filter in nm (PixInsight default 3) |
| red_filter_name | string | – | Measured R filter curve name, as listed by find_filters. Set all three filters and qe_name together for a full calibration. |
| red_wavelength_nm | number | – | Narrowband mode: centre wavelength of the red channel's filter in nm (default 656.3) |
| view_id | string | yes | View ID to calibrate (must be linear, must have a WCS/astrometric solution) |
| white_reference | string | – | White reference name from PixInsight's database, e.g. "Average Spiral Galaxy", "G2V Star" |
| white_reference_name | string | – | Same as white_reference |
No output schema declared.
No examples provided.
run_spfc ~318
Run SpectrophotometricFluxCalibration: writes the flux metadata that run_mgc requires. The image must be plate-solved and linear. Needs the camera QE curve (default "Ideal QE curve"; pass qe_name for the real sensor, see find_filters) and the filter curve. MONO image: pass filter (L, R, G, B, Ha, OIII, SII) and optionally filter_name (a measured curve from the database; otherwise a flat passband from wavelength_nm/bandwidth_nm is used). COLOR image: omit filter and pass red_filter_name, green_filter_name, blue_filter_name (otherwise flat R/G/B passbands).
| Name | Type | Req | Description |
|---|---|---|---|
| bandwidth_nm | number | – | Mono: filter bandwidth in nm, if filter_name is not given |
| blue_filter_name | string | – | Color: measured B filter curve name from find_filters |
| filter | string | – | Mono only. One of L, R, G, B, Ha, OIII, SII |
| filter_name | string | – | Mono: measured filter curve name from find_filters |
| green_filter_name | string | – | Color: measured G filter curve name from find_filters |
| qe_name | string | – | Camera QE curve name (default "Ideal QE curve") |
| red_filter_name | string | – | Color: measured R filter curve name from find_filters |
| view_id | string | yes | View ID to calibrate |
| wavelength_nm | number | – | Mono: filter center wavelength in nm, if filter_name is not given |
No output schema declared.
No examples provided.
run_sxt ~182
Run StarXTerminator to separate stars from a view, replacing it in place with the starless result and producing a separate stars view. is_linear selects the unscreen mode: off for linear (pre-stretch) data, on for non-linear (stretched) data.
| Name | Type | Req | Description |
|---|---|---|---|
| is_linear | boolean | yes | Whether the image is linear (pre-stretch) |
| ml_version | number | – | Neural network model version (the process's ml_version parameter). Omitted, the process keeps its own setting. |
| overlap | number | – | Tile overlap (default 0.5). The former default 0.10 left a faint rectangular tile grid (cells of about 470 px) in linear starless images; 0.5 did not. |
| view_id | string | yes | View ID to extract stars from (modified in place to become starless) |
No output schema declared.
No examples provided.
run_wbpp ~550
Start WeightedBatchPreprocessing (WBPP) headless in a separate PixInsight instance (PixInsight -n --automation-mode --force-exit) over input_dirs, writing into output_dir, and return a run id at once; wbpp_status reports the run. output_dir must lie inside <workspace>/output (a relative path is resolved there) or the state folder. Only the WBPP parameters given are passed; WBPP's own settings apply to the rest. Interactive local normalization and frame selection are turned off so nothing waits for a click. optimize_darks and drizzle_scale are applied to every light group by a generated pipeline-builder script. extra_params passes further WBPP automation parameters by name (BPP-Automation.js lists them). Refuses while the GUI instance runs a command for this workspace, and while an earlier run_wbpp run of this workspace is running. Tools that use the GUI instance keep working while WBPP runs.
| Name | Type | Req | Description |
|---|---|---|---|
| autocrop | boolean | – | WBPP autocrop |
| distortion_correction | boolean | – | WBPP distortionCorrection |
| drizzle_scale | number | – | Enable drizzle on every light group at this scale |
| extra_params | object | – | Further WBPP automation parameters, {name: value} |
| frame_selection | array | – | Frame selection filters [{metric, value, compare}], compare less or greater (non-interactive) |
| generate_rejection_maps | boolean | – | WBPP generateRejectionMaps |
| image_registration | boolean | – | WBPP imageRegistration |
| input_dirs | array | yes | Folders WBPP scans recursively for lights, darks, flats and bias (WBPP dir=) |
| integrate | boolean | – | WBPP integrate |
| keywords | array | – | Grouping keywords [{name, mode}], mode pre (calibration groups), post (integration groups) or prepost |
| local_normalization | boolean | – | WBPP localNormalization (run non-interactively) |
| optimize_darks | boolean | – | Set dark optimization on every light group |
| output_dir | string | yes | WBPP output folder: relative to <workspace>/output, or absolute inside <workspace>/output or the state folder |
| plate_solve | boolean | – | WBPP platesolve |
| reference | string | – | Automatic registration reference: one for all (auto) or one per value of reference_keyword |
| reference_image | string | – | Registration reference image file (WBPP referenceImage, manual reference) |
| reference_keyword | string | – | Keyword for reference auto_by_keyword |
| rejection | string | – | Pixel rejection for lights (WBPP rejection_4) |
| weights | string | – | Subframe weighting method, or none |
No output schema declared.
No examples provided.
save_and_show_preview ~249
Alias for save_preview. Save a JPEG preview of a view and return the file path.
| Name | Type | Req | Description |
|---|---|---|---|
| crop | array | – | Region [x0, y0, x1, y1] of the view in pixels (x1, y1 exclusive); the whole view when omitted |
| downsample | number | – | Divide width and height by this factor (>= 1). Omitted: the preview is scaled down to at most 2048 px on its longer side |
| label | string | yes | Short label for this preview (e.g. "after_stretch", "final") |
| stf_c0 | number | – | Shadows clipping point of the linked STF given with stf_m (0 <= c0 < 1) |
| stf_from | string | – | Bake this view's STF (its display stretch) into the JPEG; the view may be view_id itself. Several previews given the same stf_from are stretched identically |
| stf_m | number | – | Bake a linked STF with this midtones balance (0 < m < 1) into the JPEG; needs stf_c0 |
| view_id | string | yes | PixInsight view ID |
No output schema declared.
No examples provided.
save_preview ~312
Save a JPEG preview of a view and return the file path. Optionally a crop region, a downsample factor, and an STF (display stretch) baked into the pixels: the STF of a view (stf_from) or a linked one given as stf_m and stf_c0. Without an STF the JPEG holds the view's pixel values as they are. The view itself is not changed.
| Name | Type | Req | Description |
|---|---|---|---|
| crop | array | – | Region [x0, y0, x1, y1] of the view in pixels (x1, y1 exclusive); the whole view when omitted |
| downsample | number | – | Divide width and height by this factor (>= 1). Omitted: the preview is scaled down to at most 2048 px on its longer side |
| label | string | yes | Short label for this preview (e.g. "after_stretch", "final") |
| stf_c0 | number | – | Shadows clipping point of the linked STF given with stf_m (0 <= c0 < 1) |
| stf_from | string | – | Bake this view's STF (its display stretch) into the JPEG; the view may be view_id itself. Several previews given the same stf_from are stretched identically |
| stf_m | number | – | Bake a linked STF with this midtones balance (0 < m < 1) into the JPEG; needs stf_c0 |
| view_id | string | yes | PixInsight view ID |
No output schema declared.
No examples provided.
scan_workspace ~132
Scan the working folder (recursively, any subfolder name) for XISF/FITS files and report each one's FILTER header value, geometry, exposure, whether it has an astrometric solution (WCS keywords CTYPE/CRVAL with a CD, CDELT or PC matrix, or PixInsight's PCL:AstrometricSolution properties), and its INSTRUME, TELESCOP, FOCALLEN, XPIXSZ, YPIXSZ and XBINNING keywords verbatim (null when absent). The connector's own state and output folders are not scanned. Read-only.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
set_stf ~281
Set the ScreenTransferFunction (display stretch) of a view without changing its pixels, and return it as rows [m, c0, c1, r0, r1] for R, G, B (K for mono) and luminance. Either copy the STF of from_view_id, or compute PixInsight's auto-stretch exactly as auto_stretch does (per channel sigma = 1.4826 × MAD; c0 = median + shadows_clipping × sigma; m = MTF(target_bg, median − c0); linked: one set of values for R, G and B from the mean clipping point and mean median). An STF is stored with the view and saved in XISF files.
| Name | Type | Req | Description |
|---|---|---|---|
| from_view_id | string | – | Copy this view's STF instead of computing one; target_bg, shadows_clipping and linked are then not allowed |
| linked | boolean | – | Colour images: true computes one set of values for R, G and B; false one per channel. Ignored for mono images |
| shadows_clipping | number | – | Clipping point relative to the median, in units of sigma = 1.4826 × MAD |
| target_bg | number | – | Target background level, strictly between 0 and 1 |
| view_id | string | yes | View whose STF is set |
No output schema declared.
No examples provided.
set_workspace ~81
Set the workspace folder this session's files go under (scratch files, the bridge, call logs). `path` must name an existing, writable folder, absolute or starting with ~/, other than the filesystem root or the home directory itself. Returns the new workspace_info.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | The folder: an absolute path, or one starting with ~/. |
No output schema declared.
No examples provided.
shell_detail_enhance ~485
Protected high-pass detail enhancement at two scales, in place. For each scale, detail = image - Gaussian blur of sigma <scale>_sigma (locally zero-mean), and result = image + <scale>_amount x detail x protection, where protection = exp(-protect_softness x max(0, L - protect_knee) / max(1 - protect_knee, 0.01)) and L is Rec.709 luminance, so the boost attenuates above protect_knee. A scale with amount 0 is skipped. Output is truncated to [0, 1]. It does not hold the peak fixed: the added detail can raise the image maximum (the result reports the image maximum before and after, from full image statistics). With mask_id the enhancement runs through that mask; with auto_zone and no mask_id it builds the adaptive shell zone mask (as create_adaptive_zone_masks with its default core_bias), uses it and closes it, and fails without changing the view if that mask cannot be built; with neither it runs unmasked. Reports before/after texture metrics over pixels between median + 5 x 1.4826 x MAD and 0.98, sampled every 8 pixels: mean squared Sobel gradient, median local standard deviation of 16-pixel blocks that are at least 30% such pixels, and the share of them where protection is below 0.5.
| Name | Type | Req | Description |
|---|---|---|---|
| auto_zone | boolean | – | With no mask_id: build the adaptive shell zone mask and enhance through it. If it cannot be built the call fails and the view is not modified |
| large_amount | number | yes | Large-scale detail multiplier (0 skips the scale) |
| large_sigma | number | yes | Gaussian sigma of the large-scale blur, in pixels |
| mask_id | string | – | Mask view to enhance through (optional) |
| medium_amount | number | yes | Medium-scale detail multiplier (0 skips the scale) |
| medium_sigma | number | yes | Gaussian sigma of the medium-scale blur, in pixels |
| protect_knee | number | yes | Luminance above which the boost attenuates |
| protect_softness | number | yes | Attenuation rate above protect_knee (>= 0; higher = steeper) |
| view_id | string | yes | View to enhance (modified in place) |
No output schema declared.
No examples provided.
star_protected_blend ~400
Blend a stars-only image into a starless one in place, as a screen blend that turns colour-preserving in bright star cores. The mode follows, per pixel, the star layer's own luminance SL (the mean of its three channels). Below core_threshold_low: per-channel screen blend 1 - (1 - target) * (1 - stars * k). Above core_threshold_high: luminance-only screen blend, the target's colour scaled by the new over the old luminance and capped at max_value. Between them the two blend linearly. k = strength * prot, where prot falls linearly from 1 at core_threshold_low to min_strength_fraction at core_threshold_high. With pre_star_id, the bright-area colour ratios of that view are then restored over the same luminance ramp (see restore_star_color). Runs as 64-bit PixelMath truncated to [0,1]; reports the target's median and max before and after.
| Name | Type | Req | Description |
|---|---|---|---|
| core_threshold_high | number | yes | Star luminance SL at and above which the pure colour-preserving blend applies and protection is min_strength_fraction; greater than core_threshold_low |
| core_threshold_low | number | yes | Star luminance SL at and below which the pure screen blend applies and protection is 1 |
| max_value | number | yes | Upper cap on each channel of the colour-preserving blend, and of the colour restoration when pre_star_id is given |
| min_strength_fraction | number | yes | Protection factor reached at core_threshold_high (strength is multiplied by it) |
| pre_star_id | string | – | Optional: RGB view whose colour ratios are restored in bright areas after the blend; empty or absent = no restoration |
| stars_id | string | yes | Stars-only RGB view |
| strength | number | yes | Multiplier k on the star layer in the screen blend, before protection |
| target_id | string | yes | Starless RGB view, modified in place |
No output schema declared.
No examples provided.
stretch_stars ~228
Stretch a linear star image in place with a pedestal subtraction and a repeated midtones transfer function. When the image median is above 1e-5 it is subtracted as a pedestal and the rest rescaled, max(0, (x − median)/(1 − median)); then the midtones transfer function MTF(m, x) = (1 − m)·x / ((1 − 2m)·x + m) is applied `iterations` times with m = midtone. Results are truncated to [0,1]. The result reports the pedestal, the final median and maximum, and high_fraction: among pixels sampled every 16 pixels whose value (the channel maximum) exceeds 0.005 before the stretch, the fraction above 0.5.
| Name | Type | Req | Description |
|---|---|---|---|
| iterations | integer | yes | Number of times the MTF is applied (>= 1) |
| midtone | number | yes | MTF midtones balance m, strictly between 0 and 1 (m < 0.5 brightens) |
| view_id | string | yes | Star image view ID |
No output schema declared.
No examples provided.
verify_astrometry ~372
Measure how well an open image's astrometric solution reproduces the sky, with the engine of PixInsight's AstrometricSolutionVerifier script (PixInsight 1.9.5 or later), run without its dialog: no deviation map, graphs, files or new windows, and the image is not modified. Every detected star is PSF-fitted, placed on the sky with the image's solution and compared with its Gaia DR3 star at the observation time. The result (JSON) gives the star counts (detected, PSF-fitted, matched, rejected by sigma clipping), the catalogue and its limit magnitude, the deviations (median, sigma, rms, 90th and 99th percentile, maximum) in pixels and arcseconds over the stars kept after sigma clipping and over all matched stars, the median bias, and the grid cell with the largest median deviation (cells with fewer than 3 matched stars are skipped) with its column, row and centre in image pixels. The view needs an astrometric solution.
| Name | Type | Req | Description |
|---|---|---|---|
| auto_magnitude | boolean | – | Choose the catalogue limit magnitude automatically (script default true) |
| grid_cells | integer | – | Number of grid cells along the largest image dimension, 1 to 255 (script default 8) |
| magnitude | number | – | Catalogue limit magnitude used when auto_magnitude is false (script default 16) |
| matching_tolerance | number | – | Maximum distance in pixels between a detected star and its catalogue position for a match (script default 3) |
| rejection_sigma | number | – | Sigma-clipping factor on the deviations; matched stars beyond median + factor x sigma are left out of the retained statistics and the grid, 0 disables (script default 5) |
| view_id | string | yes | View ID to verify |
No output schema declared.
No examples provided.
wbpp_status ~140
Report a run_wbpp run: running, finished (with the PixInsight exit code) or ended without an exit record; the master files in <output_dir>/master; the number of .xisf files in each subfolder of <output_dir>/registered and <output_dir>/calibrated; the WBPP log files in <output_dir>/logs; and the last lines of the instance's console output. run_id omitted: the latest run.
| Name | Type | Req | Description |
|---|---|---|---|
| run_id | string | – | Run id from run_wbpp (default: the latest run) |
| tail_lines | integer | – | Console-output lines to include (default 30) |
No output schema declared.
No examples provided.
workspace_info ~66
Report the workspace folder, the state directories under it (scratch, bridge, logs) and the output folder. Also reports where the folder came from (set_workspace, PIXINSIGHT_CONNECTOR_WORKSPACE or the launch folder) and, when it cannot be used, why. Read-only.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
How do I install the PixInsight Connector MCP server?
PixInsight Connector runs locally as an npm package, launched with npx -y pixinsight-connector. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · pixinsight-connector
claude mcp add mxcoppell-pixinsight-connector -- npx -y pixinsight-connector
What is the PixInsight Connector MCP server?
PixInsight Connector is an MCP server listed in the public MCP registry as io.github.mxcoppell/pixinsight-connector. Operate PixInsight from any MCP agent. Community project, not affiliated with Pleiades Astrophoto. This page covers its npm package (pixinsight-connector).
Is the PixInsight Connector MCP server safe to use?
PixInsight Connector scores 88 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 16 October 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the PixInsight Connector MCP server expose?
PixInsight Connector exposes 91 tools: align_files, verify_astrometry, run_plate_solve, copy_astrometric_solution, catalog_stars, and 86 more. Their descriptions and schemas cost roughly 17,602 tokens of context every time the server is loaded.
Is the PixInsight Connector MCP server still maintained?
PixInsight Connector is still listed as active in the MCP registry. We last reached this channel on 16 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the PixInsight Connector MCP server under?
PixInsight Connector declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.