Skip to main content
Glama
gridhra
by gridhra

atx-mcp

English | 日本語 | 简体中文

Ein deterministischer (nicht-generativer) MCP-Server zur Asset-Transformation für universelle KI-Agenten, geschrieben in Rust.

Er setzt Bearbeitungsabsichten – „den Horizont ausrichten, auf 16:9 zuschneiden, ein wenig aufhellen“ – als deklaratives Transformationsrezept um und zeichnet jedes Ergebnis als unveränderliche Revision auf. Das ursprüngliche Asset wird niemals verändert.

Vorher/Nachher: eine gekippte synthetische Stadtszene, geradegerichtet, Levels automatisch korrigiert und ein dezenter Look angewendet Kippkorrektur + automatische Levels + angewendeter Look (ein vollständig deterministisches Rezept) – links: Eingabe / rechts: Ausgabe.

Siehe docs/DESIGN.md für das vollständige Design.

Anwendungsfälle

  1. Blickfang-Bild für einen Artikel

    „Richte dieses Foto gerade und schneide es als 16:9-Blickfang mit 1600px zu. WebP.“ import_assetdetect_tilt (die KI überspringt die Korrektur, wenn das Bild bereits annähernd gerade ist) → apply_transform (rotate → crop → resize → encode) → export_asset. Das Original wird nie angefasst, und dasselbe Rezept reproduziert jedes Mal dasselbe Ergebnis.

  2. Mehrere Größen für Social Media/CMS

    „Erzeuge die OGP-, Instagram-Quadrat- und Thumbnail-Versionen dieses Fotos.“ Ein einziges Original wird parallel zu OGP 1200×630, Instagram-Quadrat 1080 und einer 400-px-Thumbnail aufgefächert. Die Idempotenz von gleichem Rezept und gleicher Revision bedeutet, dass eine erneute Ausführung nie doppelte Ausgaben erzeugt; auch ein einwortiger Preset-Name funktioniert.

  3. Sicher zu veröffentlichen

    „Entferne auf jeden Fall die Standortdaten, aber fasse die Farben nicht an.“ strip_metadata (exif) entfernt EXIF einschließlich GPS, während das ICC-Profil erhalten bleibt. Die KI kann auch rechtzeitig warnen, indem sie has_gps aus inspect_image prüft.

  4. Farb- und Look-Anpassungen

    „Mach nur den Himmel blauer, lass alles andere unverändert.“ Umfasst curves / levels / hsl / white_balance, das Preset film_soft sowie das Importieren einer eigenen .cube-LUT mit import_asset und anschließendes Anwenden mit lut.

  5. Lokale (maskierte) Anpassungen

    „Verdunkle nur den Himmel ein wenig, lass den Boden unverändert.“ generate_mask erstellt eine Maske (Verlauf, Luminanzbereich oder Farbtonbereich); nachdem sie in die Anpassung eingebunden wurde, zeigt render_preview mit overlay:"mask" genau, wo sie greift, bevor du sie übernimmst.

  6. Ebenen-Compositing

    „Verwische eine Kopie dieses Fotos und blende sie mit 50 % Screen für einen weichen Schein ein.“ Der layers-Stapel kombiniert 16 Mischmodi, Deckkraft und Masken, um reproduzierbare Composings wie Soft Focus zu erzeugen.

  7. Wasserzeichen, Retusche und Perspektive

    „Stempel mein Logo in die Ecke, entferne die Stromleitungen und korrigiere die stürzenden Linien.“ svg_overlay brennt ein Logo ein, clone/heal entfernen Makel oder Leitungen, indem sie Textur und Tonwert per Compositing kombinieren, und perspective korrigiert stürzende Linien.

  8. Verifikation und Nachvollziehbarkeit

    „Zeig mir dieses Bild vor und nach den Bearbeitungen nebeneinander.“ compare_revisions platziert Vorher/Nachher nebeneinander oder liefert eine Differenz-Heatmap mit Statistiken wie mean_abs_diff. Jede Revision behält ihre Abstammung, sodass die vollständige Bearbeitungshistorie hinter jedem in einem Artikel verwendeten Bild nachvollzogen und reproduziert werden kann – byteidentisch auf jeder Maschine.

Was atx nicht kann – generative Bearbeitung, RAW-Entwicklung, ML-basiertes automatisches Zuschneiden – liegt außerhalb des Anwendungsbereichs; die Roadmap findest du in docs/DESIGN.md.

Related MCP server: img-convert MCP Server

Installation

Keine Rust-Toolchain erforderlich. Wähle eine der folgenden Optionen.

1. npx (am einfachsten, empfohlen)

Node.js 18+ ist alles, was du brauchst. Die vorgefertigte native Binärdatei für deine Plattform wird automatisch über optionalDependencies bezogen.

# --scope user makes it available in every project (omit for current-project only)
claude mcp add --scope user asset-transform -- npx -y atx-mcp --workspace /path/to/asset-workspace

Oder füge es direkt in deine MCP-Client-Konfiguration ein:

{
  "mcpServers": {
    "asset-transform": {
      "command": "npx",
      "args": ["-y", "atx-mcp", "--workspace", "/path/to/asset-workspace"]
    }
  }
}

2. Vorgefertigte Binärdatei

Installationsskripte (Standard-Installationsort ist ~/.local/bin, unter Windows %LOCALAPPDATA%\Programs\atx-mcp; das Archiv wird vor dem Entpacken gegen SHA256SUMS verifiziert):

# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/gridhra/atx-mcp/main/scripts/install.sh | sh
# Windows
irm https://raw.githubusercontent.com/gridhra/atx-mcp/main/scripts/install.ps1 | iex

Für den manuellen Download lade atx-mcp-<version>-<target>.tar.gz (unter Windows .zip) von Releases herunter. Unterstützte Zielplattformen:

Plattform

Target-Triple

macOS (Apple Silicon)

aarch64-apple-darwin

macOS (Intel)

x86_64-apple-darwin

Linux x86_64

x86_64-unknown-linux-musl (statisch gelinkt, kein glibc erforderlich)

Linux arm64

aarch64-unknown-linux-musl (statisch gelinkt, kein glibc erforderlich)

Windows x86_64

x86_64-pc-windows-msvc

claude mcp add asset-transform -- ~/.local/bin/atx-mcp --workspace /path/to/asset-workspace

3. Aus dem Quellcode bauen (jede andere Plattform)

Du brauchst nur eine Rust-Toolchain und einen C-Compiler (um libwebp aus dem mitgelieferten Quellcode zu bauen).

cargo build --release
# => target/release/atx-mcp
claude mcp add asset-transform -- "$PWD/target/release/atx-mcp" --workspace /path/to/asset-workspace

--workspace (Umgebungsvariable: ATX_WORKSPACE) ist das Verzeichnis, das als Asset-Store verwendet wird. Es wird automatisch erstellt, wenn es nicht existiert.

Tools (11)

Tool

Rolle

list_operations

Kompakter Katalog des Rezept-Vokabulars: jede Operation mit einer einzeiligen Beschreibung und knappen Parameterhinweisen, plus die eingebauten Preset-Namen. Optional schränkt category:"geometry"|"color"|"filter"|"output" die Auswahl ein (schreibgeschützt)

explain_operation

Vollständige Referenz für eine Operation: Parametertabelle (Typ, Bereich, erforderlich/Standard, Semantik), kopierfertige JSON-Beispiele und Stolperfallen. Auch ein eingebauter Preset-Name funktioniert und liefert die vollständige Operationsliste. Ein unbekannter Name gibt die gültigen Operationen und Presets gruppiert zurück (schreibgeschützt)

import_asset

Importiert ein lokales Bild in den Workspace (sha256-idempotent). Akzeptiert path für eine Datei oder paths für einen Stapel von bis zu 64 (eine fehlschlagende Datei bricht den Stapel nicht ab). Warnt über already_derived_from, wenn die Bytes bereits das Ergebnis eines Rezepts in diesem Workspace sind

inspect_image

Untersucht Abmessungen, EXIF, ICC-Profil, Vorhandensein von GPS-Daten usw. (schreibgeschützt)

detect_tilt

Schätzt den Neigungswinkel per Canny+Hough (grob) plus Projektionsprofil (Verfeinerung unter 0,1°). Liefert außerdem Schätzungen für horizontale/vertikale Linienfamilien; die vollständige Score-Kurve kann per include_score_curve:true aktiviert werden. Bei geringer Konfidenz wird „nicht korrigieren“ zurückgegeben (schreibgeschützt)

generate_mask

Erzeugt eine deterministische Graustufenmaske (linear_gradient / radial_gradient / luminosity_range / color_range) als PNG-Revision mit denselben Abmessungen wie das Referenzbild, um aus dem mask-Feld einer Operation referenziert zu werden (idempotent)

render_preview

Wendet ein Rezept (oder ein preset) in niedriger Auflösung an (lange Kante ≤768) und gibt es als Inline-Bild zurück. overlay:"grid"|"thirds"|"horizon" legt Kompositions-Hilfslinien über das Bild, und overlay:"mask" (mit mask_revision_id) färbt die Abdeckung einer Maske ein (nur auf der Vorschau gezeichnet; es hat keinen Einfluss auf die tatsächliche Transformation)

apply_transform

Wendet ein Rezept (oder ein preset) in voller Auflösung an und erzeugt eine neue Revision (dasselbe Rezept ergibt immer dieselbe Revision). Akzeptiert revision_id für ein Bild oder revision_ids, um dasselbe Rezept auf einen Stapel von bis zu 64 Bildern anzuwenden

compare_revisions

Skaliert zwei Revisionen auf eine lange Kante ≤640 herunter und gibt sie zu einem einzigen Inline-Bild zusammengesetzt zurück, angeordnet über layout:"side_by_side"|"stacked" (für A/B- und Vorher/Nachher-Vergleich) oder layout:"diff" für eine einzelne Pixel-Differenz-Heatmap plus Statistiken mean_abs_diff/max_abs_diff/changed_pixel_ratio (erfordert gleiche Abmessungen)

list_assets

Liest das Revisions-Ledger (schreibgeschützt)

export_asset

Schreibt eine Revision an einen angegebenen Pfad (eine vorhandene Datei wird nur überschrieben, wenn overwrite:true explizit gesetzt ist)

Rezeptbeispiel

{
  "operations": [
    { "op": "rotate", "angle_degrees": -1.8 },
    { "op": "crop", "aspect_ratio": "16:9" },
    { "op": "resize", "width": 1600 },
    { "op": "encode", "format": "webp", "quality": 82 }
  ]
}

Unterstützte Operationen (27): auto_orient / rotate / perspective / crop (crop, pad) / resize (cover, contain, fill) / adjust / color_matrix / curves / levels / lut / white_balance / hsl / blur / median / unsharp_mask / convolve / clone / heal / svg_overlay / flip / vignette / grain / gradient_map / pixelate / auto_levels / encode (jpeg, png, webp, avif) / strip_metadata. Das Operations-Vokabular ist bewusst aus den Tool-Schemas herausgehalten: Rufe list_operations für den aktuellen Katalog auf und explain_operation für das vollständige Schema, Beispiele und Stolperfallen einer Operation.

LUT (.cube)

Eine .cube-3D/1D-LUT ist ein Asset, kein Bild: Importiere sie zuerst und richte dann ein Rezept auf die von ihr erzeugte Revision aus.

  1. import_asset die .cube-Datei. Sie wird als unveränderliche Revision mit mime_type: "application/x-cube" gespeichert (inspect_image lehnt sie bewusst ab – sie ist kein Bild).

  2. Referenziere die zurückgegebene revision_id in einem Rezept:

{ "op": "lut", "lut_revision_id": "rev_...", "strength": 0.8 }

strength (0..1, Standard 1.0) mischt linear mit dem Original. Da Revisionen unveränderlich sind, hält die Aufnahme der referenzierten ID in den recipe_hash die Transformation vollständig deterministisch – das bedeutet aber auch, dass das Rezept nur in einem Workspace reproduzierbar ist, der diese LUT enthält. Verschiebe die .cube-Datei also zusammen mit dem Rezept, wenn du einen Look zwischen Maschinen überträgst. Das Referenzieren einer unbekannten ID schlägt mit einem strukturierten Fehler fehl, bevor irgendeine Pixelarbeit passiert.

SVG-Overlays (Logos und Wasserzeichen)

Eine .svg-Datei ist ein Vektor-Asset, ähnlich wie eine .cube-LUT: Importiere sie zuerst und stempel sie dann aus einem Rezept auf ein Rasterbild.

  1. import_asset die .svg-Datei. Sie wird als unveränderliche Revision mit mime_type: "image/svg+xml" gespeichert, und die Zusammenfassung meldet die intrinsische Größe der SVG (0x0 bedeutet, dass sie keine hat – kein viewBox und keine absoluten width/height am Wurzel-<svg>). inspect_image lehnt sie bewusst ab: Es ist ein Vektor-Asset, kein Rasterbild.

  2. Referenziere die zurückgegebene revision_id in einem Rezept:

{ "op": "svg_overlay", "svg_revision_id": "rev_...",
  "x": 24, "y": 24, "width": 320, "opacity": 0.25, "blend_mode": "normal" }

x/y sind die obere linke Ecke des Overlays in den Koordinaten des Bildes an diesem Punkt der Pipeline (platzieren Sie das Overlay also nach Ihrer Größenänderung bzw. Ihrem Zuschnitt); negative Werte sind erlaubt und der Überlauf wird abgeschnitten. Lassen Sie width und height weg, um mit der intrinsischen Größe der SVG zu rastern; geben Sie einen davon an, um unter Beibehaltung des Seitenverhältnisses zu skalieren, oder beide, um auf eine exakte Box zu strecken – eine SVG ohne intrinsische Größe ist ein strukturierter Fehler, wenn Sie nicht beide angeben. Das Compositing verwendet dieselbe W3C-Formel und dieselben 16 blend_mode-Werte wie layers.

Text wird nie gerendert. atx lädt keine Systemschriftarten, weil sich die installierten Schriftarten von Maschine zu Maschine unterscheiden und die Byte-für-Byte-Reproduzierbarkeit brechen würden. Eine SVG, die <text> enthält, rendert ihre Formen, aber nicht ihre Glyphen und gibt eine Warnung aus – konvertieren Sie Text vor dem Import in Ihrem Vektor-Editor in Pfade (Konturen), und das Ergebnis ist auf jeder Maschine identisch.

Masken (lokale Anpassungen)

Eine Maske ist eine Graustufen-Bildrevision: Ihre BT.709-Luma ist der Gewichtswert, also bedeutet Weiß „diese Operation mit voller Stärke anwenden“ und Schwarz „das Pixel unverändert lassen“. Jede der 14 Tonwert-/Filteroperationen (adjust, color_matrix, curves, levels, hsl, lut, white_balance, blur, median, unsharp_mask, convolve, grain, gradient_map, auto_levels) akzeptiert eine.

  1. generate_mask erstellt eine deterministisch anhand eines Referenzbildes, mit exakt den Abmessungen dieses Bildes:

kind

Parameter

Was ausgewählt wird

linear_gradient

angle_degrees (0 = Weiß oben, nach unten ausblendend; positiv = im Uhrzeigersinn), start, end (0..1-Positionen entlang der Achse, an denen der Gewichtswert von 1 auf 0 übergeht)

Ein Verlaufsfilter (Himmel, Vordergründe)

radial_gradient

center_x, center_y (0..1 relativ), radius (0..1 der halben Diagonale), feather (0..1 zusätzliches Abklingband)

Eine Vignette oder ein Spotlight auf das Motiv

luminosity_range

min, max (0..255), feather (Luma-Einheiten einer weichen Schulter außerhalb des Bereichs)

Lichter, Mitteltöne oder Schatten

color_range

hue_center (0..360), hue_width (1..180 Halbbreite), feather (zusätzliche Grad)

Eine Farbtonfamilie (Himmelblau, Blattgrün)

Sie können stattdessen auch import_asset mit einem eigenen Graustufenbild verwenden.

  1. Hängen Sie die zurückgegebene revision_id an eine Operation an:

{ "op": "curves", "master": [[0,0],[128,168],[255,255]],
  "mask": { "revision_id": "rev_...", "invert": false, "feather_px": 8.0 } }

invert (Standard false) kehrt den Gewichtswert zu 1-w um; feather_px (Standard 0.0) weicht die Maskenkante mit dieser Gauß-Sigma in Pixeln des aktuellen Bildes auf.

  1. render_preview mit overlay:"mask" und mask_revision_id färbt die Vorschau rot, wo der Gewichtswert 0.5 überschreitet, und dimmt sie andernorts, sodass die Abdeckung vor dem Übernehmen überprüft werden kann.

Masken werden genau wie LUTs über die Revisions-ID referenziert, daher gilt dieselbe Einschränkung: Der Rezept-Hash enthält die ID, und das Rezept reproduziert nur in einem Workspace, der diese Maske enthält.

Layers

Ein Rezept kann einen layers-Stapel anstelle von (oder zusätzlich zu) einer flachen operations-Liste enthalten. Ebenen werden von unten nach oben zusammengesetzt; die ops jeder Ebene laufen gegen ihre eigene Quelle, bevor sie in das laufende Composite übergeblendet wird:

{
  "layers": [
    { "source": "base", "ops": [] },
    {
      "source": { "revision_id": "rev_..." },
      "ops": [{ "op": "blur", "sigma": 8 }],
      "blend_mode": "multiply",
      "opacity": 0.6
    }
  ],
  "operations": [
    { "op": "resize", "width": 1600 },
    { "op": "encode", "format": "webp", "quality": 82 }
  ]
}
  • source ist entweder "base" (die an apply_transform / render_preview übergebene Eingaberevision) oder {"revision_id": "rev_..."} (eine andere, bereits im Workspace vorhandene Revision). Die Quelle jeder Ebene muss exakt den Abmessungen des Basisbildes entsprechen, sonst schlägt das Rezept mit einem strukturierten Fehler fehl, bevor irgendeine Pixelarbeit stattfindet.

  • ops ist eine normale Liste von Operationen, die nur auf die Quelle dieser Ebene angewendet wird.

  • mask, blend_mode (Standard "normal") und opacity (Standard 1.0) steuern, wie die Ebene mit den darunterliegenden Ebenen zusammengesetzt wird.

  • Der Mischmodus ist einer von 16 W3C-Modi: die 12 separierbaren Modi normal, multiply, screen, overlay, darken, lighten, color_dodge, color_burn, hard_light, soft_light, difference, exclusion sowie die 4 nicht separierbaren Modi hue, saturation, color, luminosity.

  • Wenn layers vorhanden ist, wird die übergeordnete operations-Liste zum Enddurchgang, der einmal auf das zusammengesetzte Ergebnis angewendet wird – hier gehören resize und das finale encode hin (encode muss weiterhin zuletzt kommen und darf höchstens einmal vorkommen).

  • Rufen Sie explain_operation {"operation":"layers"} auf, um die vollständige Referenz zu erhalten.

Presets

apply_transform und render_preview akzeptieren entweder recipe (das rohe DSL) oder preset (ein eingebautes, benanntes Rezept aus presets/) – genau eines von beidem:

Gruppe

Preset

Was bewirkt es

Grundlagen

eyecatch_16_9

Zentrierter Zuschnitt auf 16:9, auf 1600px Breite skalieren, WebP q82

Grundlagen

film_soft

Weicher Filmlook: sanfte S-Kurve plus 15 % Zug Richtung Luma

Grundlagen

product_clean

Sauberes Produktfoto: nahezu neutraler Weißabgleich, Anhebung der Tonwerte, leichte Schärfung

Grundlagen

thumbnail_square

Zentrierter Zuschnitt auf 1:1, auf 800x800 skalieren, WebP q80

Grundlagen

web_optimize

In 2000x2000 ohne Hochskalierung einpassen, WebP q80

Grundlagen

grayscale

Schwarzweiß über eine BT.709-Luma-color_matrix

Grundlagen

sepia

Klassischer Sepia-Ton über color_matrix

Film

film_warm

Warmes Filmmaterial: bernsteinfarbener Weißabgleich, sanfte S-Kurve, leichtes Korn

Film

film_cool

Kühles Filmmaterial: blaustichiger Weißabgleich, sanfte S-Kurve, leichtes Korn

Film

matte_fade

Verblasster Mattlook: angehobene Tiefen über curves, leichte Entsättigung

Film

film_grain_strong

Starkes, grobes Korn über einer sanften S-Kurve (gepuschter/High-ISO-Look)

Film

cinema_teal_orange

Teal-Orange-Kinograding über gezielte hsl-Verschiebungen

Mono

bw_neutral

Neutrales Schwarzweiß über eine BT.709-Luma-color_matrix

Mono

bw_high_contrast

Kontrastreiches Schwarzweiß: Luma-Konvertierung plus eine starke S-Kurve

Mono

bw_red_filter

S/W durch einen simulierten Rotfilter (klassischer Himmel-Verdunkler)

Mono

bw_soft

Weiches, kontrastarmes Schwarzweiß (Mattkurve)

Mono

duotone_navy_cream

Marineblau-Creme-Duoton über gradient_map

Redaktionell

product_white

Automatische Tonwertspreizung, neutraler Weißabgleich, finale Schärfung

Redaktionell

food_vivid

Sättigungsboost für warmes Orange/Gelb plus Kontrastanhebung

Redaktionell

portrait_soft

Sanfte Mattkurve, leichte Entsättigung, dezente Vignette

Redaktionell

landscape_punch

Kontrast + Sättigungsanhebung plus eine leichte Vignette

Redaktionell

architecture_clean

Automatische Tonwerte, Schärfen, leichte Entsättigung (kombinierbar mit einer manuellen perspective-Operation)

Social

og_1200x630

Open-Graph-Share-Bild: Zuschnitt auf 1200:630, auf 1200 Breite skalieren, WebP q82

Social

x_wide_16_9

X- (Twitter-)Breitkarte: Zuschnitt auf 16:9, auf 1600 Breite skalieren, WebP q82

Social

instagram_square_1080

Instagram-Quadratbeitrag: Zuschnitt auf 1:1, auf 1080x1080 skalieren, WebP q85

Social

instagram_portrait_4_5

Instagram-Hochformatbeitrag: Zuschnitt auf 4:5, auf 1080x1350 skalieren, WebP q85

Social

youtube_thumb_1280x720

YouTube-Thumbnail: Zuschnitt auf 16:9, auf 1280x720 skalieren, WebP q85

Social

hero_2400

Großes Hero-/Bannerbild: in 2400px einpassen, WebP q85

Baustein

soft_vignette

Dezente Vignette für sich allein, zum Stapeln nach anderen Looks

Baustein

grain_fine

Leichtes, feines, deterministisches Korn für sich allein, zum Stapeln

Ein Preset ist reiner Zucker: Es wird zu seinem Rezept aufgelöst und durchläuft die normale Pipeline, und der recipe_hash (der Idempotenzschlüssel) wird für das aufgelöste Rezept berechnet – ein Preset-Aufruf und das äquivalente rohe Rezept landen also auf derselben Revision.

Garantien

  • Deterministisch: Dieselbe Eingabe + dasselbe Rezept erzeugen immer byte-identische Ausgabe (mit Golden-Tests regressionsgeprüft)

  • Idempotent: Rezepte werden normalisiert (Schlüssel sortiert, f64-Werte auf ein 1e-6-Raster quantisiert) und mit sha256 gehasht. Wenn (input revision, recipe hash) mit einem vorhandenen Paar übereinstimmt, wird die vorhandene Revision statt einer neuen zurückgegeben

  • Originale sind geschützt: objects/ ist ein nur-anhängbarer, inhaltsadressierter Speicher – es gibt keine Lösch- oder Überschreib-API

Entwicklung

cargo test --workspace     # unit + integration + property (proptest) tests
cargo clippy --workspace --all-targets -- -D warnings

Crate-Aufbau: atx-core (Rezept-/Transform-Engine) / atx-geometry (Neigungserkennung) / atx-store (unveränderlicher Asset-Speicher) / atx-mcp (rmcp-stdio-Server).

Siehe RELEASING.md für den Release-Prozess.

Name

„atx“ steht für Asset Transform; das nachgestellte x folgt der vertrauten Kurzform für „transform“ (wie in xform / tx). Es wurde als kurzer, leicht tippbarer Binärname und Crate-Präfix (atx-core usw.) gewählt und hat keinen Bezug zum PC-ATX-Formfaktor oder zu ATX-Überschriften im Markdown-Stil.

Lizenz

MIT. Siehe LICENSE.

Wenn atx-mcp Ihnen Zeit spart, können Sie mir einen Kaffee spendieren

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

No tool schema history has been recorded yet.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

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/gridhra/atx-mcp'

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