MCP HeartbeatTHE MCP OBSERVATORY
Public workspace

Explore

Evidence for your next connection.

Independent measurements of remote MCP servers. Every observation has a timestamp.

Read-only probes

MCP server · Payments & trading

MVG Frankfurt: Blech und Halbzeuge

Sheet metal and stock parts from Frankfurt: prices, DFM feedback with images, lead times, quotes.

Checks passed
13 / 22

1 failed · 8 not measured

Median response
187 ms

Median of successful probes over 7 days

30-day uptime
Not measured

Share of countable probes over 30 days, including daily rollups. Auth challenges are excluded.

Discovered tools
26

Tool definitions returned by this server

Independent monitoring

Health & checks

Status history

Outdated check

Last connection measurement is over 24 hours old. Current availability is unknown.

Last checked
Check summary by test group
Test areaPassedFailedUnmeasured
ConnectionCan a client connect and discover tools?
500
Reliability & speedDoes it respond consistently and quickly?
004
Access & authenticationWhat is required to use this server?
102
Tool qualityAre the tool definitions usable by an agent?
400
Publisher identityCan the publisher be traced to its source?
312

Unmeasured means there is not enough evidence to decide. How these checks work

Inspect individual checks 22 recorded

Core

  • Pass
    Reachable

    Latest probe returned HTTP 200 in 187 ms.

  • Pass
    Valid handshake

    protocolVersion 2025-11-25, serverInfo.name mvg-fertigung.

  • Pass
    Lists tools

    tools/list returned 26 tools.

  • Pass
    Current protocol

    Negotiated 2025-11-25. The bar is 2025-06-18 or newer.

  • Pass
    HTTPS

    The endpoint URL is https.

Performance

  • Not measured
    Fast (p50)

    Median latency 187 ms over 1 samples in 7 days. The bar is 1000 ms. Need at least 5 samples.

  • Not measured
    Consistent (p95)

    95th percentile 187 ms over 1 samples in 7 days. The bar is 3000 ms. Need at least 20 samples.

  • Not measured
    Reliable (uptime)

    1 of 1 attempts returned a tool list in 30 days (100%). The bar is 99%. Need at least 30 samples.

  • Not measured
    Stable tool list

    Fewer than two successful probes in 30 days, so tool-list stability is not measured.

Access

  • Pass
    Open access

    tools/list succeeded with no credential, and the record declares none.

  • Not measured
    Standard auth

    Auth is not required, so the OAuth metadata check does not apply.

  • Not measured
    Free tier cited

    No publisher quote has been checked.

Tools

  • Pass
    Tools described

    Every tool description is at least 20 characters.

  • Pass
    Valid input schemas

    Every inputSchema is a JSON Schema object.

  • Pass
    Parameters documented

    141 of 141 parameters have a description (100%). The bar is 80%.

  • Pass
    Safety hints

    Every tool sets readOnlyHint or destructiveHint.

Publisher

  • Pass
    Verified namespace

    Listed in the Official MCP Registry.

  • Pass
    Website matches publisher

    The website host matches the reverse-domain namespace.

  • Fail
    Source repo linked

    No repository URL is on file.

  • Not measured
    Repo owner matches

    This namespace is not an io.github login, so the owner comparison does not apply.

  • Pass
    Recently updated

    Updated 2026-11-07T11:41:14.829883Z, within 180 days.

  • Not measured
    Open-source licence

    No GitHub repository to ask about a licence.

Start using MVG Frankfurt: Blech und Halbzeuge

Connect to this server

Choose your client, copy the configuration, then enable the server in your client’s MCP settings.

Run this command in your terminal, then restart Claude Code.

Claude Code

claude mcp add --transport http mvg-frankfurt-blech-und-halbzeuge https://mvg-frankfurt.de/mcp

Capabilities

Tools 26

add_quote_parts

Stueckliste schrittweise: weitere Positionen (z. B. je hochgeladener Datei) an ein Angebot anhaengen. Ergebnis ist eine neue Fassung mit allen Positionen (supersedes = bisherige quote_id); mit der neuen quote_id weiterarbeiten. [Zugang: requires login: Scope quotes:write. Aendert Daten: ja (neue Angebotsfassung).]

Discovered
check_manufacturability

Konstruktionsgrenzen fuer Werkstoff + Dicke (max. Format, max. Laser-Dicke je Werkstoff aus dem Maschinenpark, kleinster Lochdurchmesser, Steg, Randabstand, Biegung, Mindestschenkel) und, mit part, Pruefung eines Kantteils ohne Datei (tolerance_mm = gewuenschte Masstoleranz +/- mm). Mit design_id oder upload_id (Anmeldung, designs:write) wird eine CAD-Datei geprueft (flache Teile inkl. Konturen: Stege, Schlitze, Inseln, Kleinteile). Ergebnis: status ok|warn|block, ampel (fertigbar|hinweis|pruefanfrage|nicht_fertigbar), requirements und feedback: counts {block, warn}, issues[] mit where (Kantung/Ort), limit (Grenzwert) und fix (anwendbare Aenderung Feld + Wert, price_effect_net in Cent), bends[] je Kantung und visual (part_svg_url Querschnitt, bending_svg_url Biegeschritte mit Werkzeug, Kollision rot). Nur bei counts 0/0 fehlerfrei melden. Beispiel: {"material":"edelstahl-1.4301","thickness_mm":2,"part":{"depth_mm":500,"segments_mm":[5,100,40],"bends":[{"angle_deg":90},{"angle_deg":90}]}}. [Zugang: oeffentlich, ohne Anmeldung. Aendert Daten: nein.]

Discovered
check_order_status

Status einer Bestellung des angemeldeten Kundenkontos (order_id oder Nummer aus list_orders). Nur mit OAuth-Zustimmung eines Kundenkontos. Hoechstens alle 15 Minuten abfragen. Statt Abfragen: Ereignis-Meldungen order.status_changed ueber POST /v1/webhooks (MVG-API-Key, Scope webhooks:write, signiert). [Zugang: requires login: OAuth-Zustimmung eines Kundenkontos, Scope orders:read. Aendert Daten: nein.]

Discovered
configure_part

Teil aus einer Vorlage (template + params aus list_part_templates) plus optionale Zusatzloecher: der Server baut die Geometrie wie der Teile-Editor, prueft die Fertigbarkeit (Lochabstand Rand/Steg, Mindest-Loch-Ø je Dicke, Format) und rechnet den Shop-Preis netto+brutto inkl. aller Kosten (Kanal online). Ergebnis: status (ready|needs_review|price_unavailable|editor_only), price, lead_time, manufacturing_notes, preview_url (bemasste SVG-Zeichnung, 7 Tage), editor_url (Teile-Editor mit genau diesem Teil, dort in den Warenkorb), draft_id (7 Tage; angemeldet create_quote mit {type:'part_draft', draft_id}). Beispiel Flansch: {template:'flansch', params:{D:200,d:60,nl:4,dl:9,lk:140}, material:'aluminium-almg3', thickness_mm:3, quantity:1}. Koordinaten der extra_holes in mm ab linker unterer Ecke. Anwendungen (group 'anwendung', z. B. {template:'fensterbank', params:{L:1200,tiefe:150,ue:40,auf:20,ab:40,tropf:1}, material:'aluminium-almg3', thickness_mm:2}): Aussenmasse, Ergebnis mit price, manufacturability, order_item (fuer get_price/create_quote) und page_url (Seite mit vorbelegten Massen, dort in den Warenkorb). Speichert keine Kundendaten. [Zugang: oeffentlich, ohne Anmeldung. Aendert Daten: nein (nur temporaerer Entwurf, 7 Tage).]

Discovered
configure_plate

Einfachster Weg fuer 'Ich brauche dieses Teil': rechteckige Platte length_mm x width_mm mit runden Loechern (holes: x_mm/y_mm = Lochmitte ab linker unterer Ecke, diameter_mm), optional corner_radius_mm. Sonst wie configure_part: Fertigbarkeit, Shop-Preis netto+brutto, Lieferzeit, preview_url, editor_url, draft_id. Beispiel: Platte 200 x 100 x 3 AlMg3 mit 6 Loechern Ø 9 -> {length_mm:200, width_mm:100, thickness_mm:3, material:'aluminium-almg3', holes:[{x_mm:20,y_mm:20,diameter_mm:9}, ...]}. [Zugang: oeffentlich, ohne Anmeldung. Aendert Daten: nein (nur temporaerer Entwurf, 7 Tage).]

Discovered
create_quote

Verbindliches Angebot (24 h) netto und brutto mit quote_id und checkout_url: der Link oeffnet den Warenkorb der Website mit genau diesen Positionen. Bestellen und bezahlen tut dort ein Mensch. Positionen wie get_price plus upload (aus create_upload) und design. requirements: block = nicht bestellbar (kein checkout_url), warn = Kunde bestaetigt im Warenkorb. Positionen als Liste items, Beispiel: {"items": [{"type": "sheet_cut", "material": "aluminium-almg3", "thickness_mm": 2, "length_mm": 1000, "width_mm": 500, "quantity": 2}], "delivery": {"mode": "shipping", "postal_code": "60314"}} [Zugang: requires login: Scope quotes:write. Aendert Daten: ja (Angebot).]

Discovered
create_upload

Signierter Link fuer EINE STEP-, DXF-, AI- oder EPS-Datei (15 Minuten, einmalig, STEP bis 50 MiB, DXF/AI/EPS bis 20 MiB; AI/EPS wird zu DXF in mm, Masse stehen in der Upload-Antwort unter vektor). Bytes per PUT auf upload_url; kannst du die Datei nicht lesen, gib dem Nutzer browser_upload_url. Danach create_quote mit {type:'upload', upload_id, material, quantity} (DXF/AI/EPS zusaetzlich thickness_mm). Nie Dateiinhalt als Text/Base64 senden. Wann browser_upload_url: wenn die Datei nur beim Nutzer liegt (Anhang nicht lesbar, Datei auf seinem Rechner). Link sofort weitergeben (15 min), dann mit upload_status pruefen, ob sie angekommen ist (state 'received'), erst danach create_quote. Stueckliste: filenames (bis 20) liefert je Datei einen eigenen Link. [Zugang: requires login: Scope designs:write. Aendert Daten: ja (Upload-Link).]

Discovered
find_hole_operations

Gewinde schneiden und Senkungen je Werkstoff und Dicke: Groessen mit Kernloch bzw. Durchgang, Preis je Stueck netto/brutto (Cent), ob die Groesse fuer diesen Werkstoff und diese Dicke geht (ok/warn/block mit Grund), Ruestpauschale je Auftrag und Lieferzeit-Regel. Verwendung in create_quote: hole_operations an der upload/design-Position. Beispiel: {"material":"aluminium-almg3","thickness_mm":4}. [Zugang: oeffentlich, ohne Anmeldung. Aendert Daten: nein.]

Discovered
find_materials

Bleche: Werkstoffe mit lesbarem Code (material), Dicken (mm + label), Tafelformaten und REACH-Hinweis. Halbzeuge (Rohre, Profile, Flach-, Rund-, Vierkantmaterial): art_nr, Abmessungen, kg/m, Stangenlaenge. query mit Massen wie 'flach 20x5 alu', 'rohr 30x2', 'edelstahl 1.4301'. Beispiel: 'Alu-Winkel 15 x 15 x 2' ist ein Halbzeug-Winkelprofil -> kind 'halbzeug', query 'winkel 15x15x2 alu', danach get_price type 'profile' (kein Kantteil). material bzw. art_nr gehen danach in get_price/create_quote/configure_part. Katalog durchsehen: kind 'halbzeug' mit kategorie, werkstoff und ranges (Massbereich), z. B. {"kind": "halbzeug", "kategorie": "U-Profil", "werkstoff": "edelstahl", "ranges": {"breite_mm": {"min": 30, "max": 50}}}. [Zugang: oeffentlich, ohne Anmeldung. Aendert Daten: nein.]

Discovered
get_agent_guidance

Reihenfolge, Einheiten, Verbote und Beispiele. Zu Beginn lesen. [Zugang: oeffentlich, ohne Anmeldung. Aendert Daten: nein.]

Discovered
get_delivery_options

Alle Lieferstufen (Termin fertig, Zustellfenster, Aufpreis) und die Versandkosten zur Postleitzahl fuer genau diese Positionen in einem Aufruf; dazu Abholung (ohne Versandkosten). Termine, keine Lagerangaben. Beispiel: {"items":[...], "postal_code":"60314"}. [Zugang: oeffentlich, ohne Anmeldung. Aendert Daten: nein.]

Discovered
get_lead_time

Fertigstellungs-/Abholtermin und Zustellfenster je Stufe (Economy, Standard, Express) inkl. Regel Express 24 h (bis Stichzeit bestellt: naechster Werktag gegen eigenen Aufpreis bei kleinen Zuschnitt-Mengen). Mit items gilt der Termin fuer genau diese Positionen; ohne items die allgemeinen Regeln. [Zugang: oeffentlich, ohne Anmeldung. Aendert Daten: nein.]

Discovered
get_link

Direkter Link fuer den Nutzer: kind 'checkout' (Warenkorb mit den Positionen, auch zum Weitergeben an Kollegen: wer den Link hat, sieht Positionen und Preis und kann bestellen), 'part' (Querschnitt mit Massen) oder 'bending' (Biegeschritte) einer Kantteil-Position (index). [Zugang: requires login: Scope quotes:read. Aendert Daten: nein.]

Discovered
get_price

Richtpreis netto und brutto (Kanal online, gleiche Engine wie der Shop) fuer Blech-Zuschnitt (sheet_cut), Kantteil (sheet) und Halbzeug-Zuschnitt (profile), dazu Zubehoer. Alle Kosten stecken im Preis, bei delivery.mode=shipping auch Versand. Nichts wird gespeichert; verbindlich und mit Warenkorb-Link wird es mit create_quote. type 'sheet' (Kantteil) nur fuer gekantetes Blech nach Zeichnung (Schenkel + Biegungen); Profile von der Stange (Winkel 15x15x2, Flach 40x5, Rohr) sind type 'profile' mit art_nr aus find_materials. Platten/Flansche MIT Loechern: configure_plate/configure_part. Antwort enthaelt pcf_kg_co2e (CO2e-Schaetzung cradle-to-gate, je Zeile und gesamt, Methode in pcf_method). Positionen IMMER als Liste items, auch bei einer Position. Beispiel: {"items": [{"type": "sheet_cut", "material": "aluminium-almg3", "thickness_mm": 2, "length_mm": 1000, "width_mm": 500, "quantity": 2}], "delivery": {"mode": "shipping", "postal_code": "60314"}} [Zugang: oeffentlich, ohne Anmeldung. Aendert Daten: nein.]

Discovered
get_quote

Ein frueheres Angebot (jede Fassung) erneut lesen, mit checkout_url. [Zugang: requires login: Scope quotes:read. Aendert Daten: nein.]

Discovered
get_sheet_rules

Biegeregeln und Konstruktionsgrenzen je Blech-Werkstoff und Dicke fuer CAD-Programme: inner_radius_mm und k_factor der Kantbank (gemessen, wie unsere Abwicklung), bend_deduction_90_mm, min_flange_mm, hole_to_bend_mm, Loch/Steg/Rand, max. Format; cad_material.steve = Werkstoff-ID der STEVE-CAD-Bibliothek (exact=false: gleiche Familie). version = Pruefsumme; neu laden, wenn sie sich aendert. Ohne Filter das ganze Werk. Verbindlich bleibt check_manufacturability/create_quote. [Zugang: requires login: Scope catalog:read. Aendert Daten: nein.]

Discovered
get_shipping_estimate

Packstueck-Rechner: wie die Teile verpackt werden (Karton, Flachpaket, Bund, Palette) und was der Versand netto/brutto kostet (Richtwert; verbindlich ist der Versand in get_price/create_quote mit delivery.mode=shipping). [Zugang: oeffentlich, ohne Anmeldung. Aendert Daten: nein.]

Discovered
list_orders

Bestellungen des angemeldeten Kundenkontos (wie unter /konto): Nummer, Datum, Betrag, Zahl- und Auftragsstatus, Status-Link. Nur mit OAuth-Zustimmung eines Kundenkontos. [Zugang: requires login: OAuth-Zustimmung eines Kundenkontos, Scope orders:read. Aendert Daten: nein.]

Discovered
list_part_templates

Alle Formen des Teile-Editors (/teile-designer): Rechteck, Quadrat, Ronde, Ring, Lochkreis-Flansch, Lochplatte, Langloch-Platte, Laschen, Knotenbleche, gekantete Winkel/Wannen ... je Vorlage id, Name, Parameter (key, Einheit, min/max, Vorgabe) und ein Beispiel-Aufruf fuer configure_part. Gruppe 'anwendung': fertige Kantteile fuer den Bau (fensterbank, mauerabdeckung, attikahaube, ortgangblech, traufblech, wandanschluss, kehlblech, sockelprofil, tropfkante, abdeckwinkel = L-Winkel; wanne und kiesfangleiste ueber den Teile-Editor) mit erlaubten Werkstoffen/Staerken und aliases (Suchbegriffe wie Mauerkrone, Wetterschenkel, Eckwinkel, Attikaabdeckung). query filtert auch nach aliases ('flansch', 'fensterbank', 'mauerkrone'), group nach Gruppe. [Zugang: oeffentlich, ohne Anmeldung. Aendert Daten: nein.]

Discovered
list_quotes

Angebote dieses Zugangs, neueste zuerst: quote_id, Datum, Ablauf, Status, Positionen, Summe, dfm_status, supersedes. Mit offset/limit blaettern. [Zugang: requires login: Scope quotes:read. Aendert Daten: nein.]

Discovered
normalize_material

Freier Werkstoff-Text (z. B. 'V2A 2mm', 'AlMg3', '1.4301 geschliffen', 'verzinkt 1,5') -> passende Blech-Werkstoffe mit 'material'-Code und Dicken. Vor get_price nutzen, wenn der Nutzer den Werkstoff frei beschreibt. Beispiel: {"query": "V2A 2mm"}. [Zugang: oeffentlich, ohne Anmeldung. Aendert Daten: nein.]

Discovered
reorder_from_order

Teile einer frueheren Bestellung des angemeldeten Kundenkontos erneut anbieten (order_id oder Nummer aus list_orders; optional parts mit part_id und quantity). Preise und Fertigbarkeit werden HEUTE neu gerechnet, nie der alte Preis. Ergebnis: Angebot mit checkout_url in den Warenkorb, KEINE Bestellung, bestellt und bezahlt wird im Browser von einem Menschen. Nur mit OAuth-Zustimmung eines Kundenkontos. [Zugang: requires login: OAuth-Zustimmung eines Kundenkontos, Scope orders:read. Aendert Daten: ja (Angebot).]

Discovered
search_docs

Sucht in Magazin, Konstruktionsrichtlinien, FAQ, Preis-, Versand- und Werkstoffseiten. Mit path statt query wird eine Seite vollstaendig gelesen (path aus einem Treffer). [Zugang: oeffentlich, ohne Anmeldung. Aendert Daten: nein.]

Discovered
update_quote_parts

Mengen aendern, Positionen entfernen (remove) oder ergaenzen (add_items). Ergebnis ist ein NEUES Angebot mit eigener quote_id und supersedes; das alte bleibt unveraendert abrufbar. index = lines[].index des Angebots. [Zugang: requires login: Scope quotes:write. Aendert Daten: ja (neue Angebotsfassung).]

Discovered
upload_status

Stand eines Uploads aus create_upload: waiting (Link offen, noch keine Datei), received (Datei da, weiter mit create_quote), expired (neuen Link holen). Hoechstens alle 10 Sekunden abfragen. [Zugang: requires login: Scope designs:write. Aendert Daten: nein.]

Discovered
whoami

Fuer wen spricht dieser Zugang, welche Rechte gelten? [Zugang: requires login: Scope catalog:read. Aendert Daten: nein.]

Discovered

Recent measurements

Probe history

View status
Latest stored probes. Raw probe rows are kept for 14 days.
CheckedResultResponseTools
Connected187 ms26