Integration

FTIR.fun MCP-Server & REST-API

Verbinden Sie FTIR.fun mit Ihrem KI-Assistenten oder Ihrer Automatisierungspipeline. MCP-Server für Claude/Cursor/Codex. REST-API für benutzerdefinierte Integrationen. Dieselben über 130.000 Referenzspektren und literaturgestützte KI-Interpretation bei allen Methoden.

MCP-Server – Claude, Cursor, Codex

Der MCP (Model Context Protocol)-Server von FTIR.fun wurde geprüft und ist offiziell im Anthropic MCP Registry, Smithery und MCP.so gelistet. Er stellt FTIR-Spektralsuche, Peakerklärung mit DOI-zitierter Literatur und Materialidentifikation als aufrufbare Tools für jeden MCP-kompatiblen Client bereit.

Schnellverbindung

# Claude Desktop / Claude Code claude mcp add ftirfun https://ftir.fun/mcp # Cursor # Add to ~/.cursor/mcp.json: {"mcpServers": {"ftirfun": {"url": "https://ftir.fun/mcp"}}} # OpenAI Codex codex mcp add ftirfun https://ftir.fun/mcp

Verfügbare Tools

ToolBeschreibung
search_ftir_libraryDurchsuchen Sie über 130.000 Referenzspektren nach Peaks oder hochgeladener Datei. Gibt bewertete Treffer mit CAS-Nummern und Ähnlichkeitswerten zurück.
search_public_ftir_resultsSuchen Sie nach gemeinsam genutzten Analyseergebnissen der Community nach Stichwort.
fetch_public_ftir_resultRufen Sie ein bestimmtes öffentliches FTIR-Analyseergebnis anhand der ID zur detaillierten Überprüfung ab.

Serverkarte & Registry-Links

Alle Plattform-Integrationen anzeigen

Coze Plugin — In Doubao verwenden

Open Doubao → Plugin Store → search "FTIR" or "红外分析" → tap Add. No configuration needed. Doubao will automatically route infrared-related queries to our spectral search engine.

Suchbegriffe: 红外分析, FTIR, infrared, 光谱检索, 物质识别

REST-API

Bibliothekssuch-API

POST /v1/search

Spektrenbibliothekssuche. Akzeptiert eine Datei (Vollspektrum-Abgleich) oder eine Peak-Liste (Peak-Positions-Abgleich). Wenn beide angegeben werden, hat die Dateisuche Priorität.

Authentifizierung

X-API-Key: your-api-key

Anforderungstext

FeldTypErforderlichBeschreibung
file_base64stringeines vonBase64-codierte Instrumentendatei (unterstützt CSV, SPA, OPUS, SPC, JCAMP-DX und 15+ weitere Formate)
filenamestringmit file_base64Originaldateiname einschließlich Erweiterung (z.B. sample.spa)
peaksnumber[]eines vonListe der Peak-Wellenzahlen in cm⁻¹ (z.B. [3026, 1601, 1493, 755])
top_kintegernein (Standard 10)Anzahl der zurückzugebenden Ergebnisse, max. 50
toleranceintegernein (Standard 8)Peak-Übereinstimmungstoleranz in cm⁻¹, Bereich 1–30

Antwort

{ "success": true, "search_mode": "full_spectrum", "n_matches": 10, "matches": [ { "rank": 1, "name": "Polystyrene", "cas": "25086-18-4", "num": 326, "similarity": 0.9586 } ], "file_format": "Thermo SPA", "n_points": 3601, "error": null }

Beispiel — Datei-Upload

import base64, requests with open("sample.spa", "rb") as f: b64 = base64.b64encode(f.read()).decode() resp = requests.post( "https://api.ftir.fun/v1/search", headers={"X-API-Key": "your-key", "Content-Type": "application/json"}, json={"file_base64": b64, "filename": "sample.spa", "top_k": 5}, ) print(resp.json())

Beispiel — Peak-Liste

import requests resp = requests.post( "https://api.ftir.fun/v1/search", headers={"X-API-Key": "your-key", "Content-Type": "application/json"}, json={"peaks": [3082, 3026, 2923, 1601, 1493, 1451, 1028, 906, 755, 699], "top_k": 5}, ) print(resp.json())

Reine KI-Analyse für vorhandene Ergebnisse

Verwenden Sie diesen Endpunkt nur, nachdem ein Suchergebnis bereits vorliegt. FTIR.fun liest oder OCRt zunächst den bereitgestellten Bericht, extrahiert die gemeldeten Kandidaten und die Probenpeaktabelle und führt dann eine nachgelagerte KG- und literaturgestützte Analyse durch.

POST /ftir/analyze_existing_results

Der Bericht muss sowohl die gemeldete Suchergebnisliste als auch die Probenpeaktabelle enthalten. Dieser Endpunkt führt selbst keine Spektrenbibliothekssuche durch.

Authentifizierung

X-API-Key: your-api-key

Anforderungstext

FeldTypErforderlichBeschreibung
report_textstringeines vonKlartext, der aus einem vorhandenen Instrumenten- oder Bibliotheksbericht kopiert wurde. Der Text muss sowohl die gemeldeten Ergebnisse als auch die Probenpeaktabelle enthalten.
report_file_base64stringeines vonBase64-kodierte Berichtsdatei. Unterstützte Formate: PDF, DOC, DOCX, TXT, CSV, PNG, JPG, JPEG, WEBP, GIF, BMP, TIF, TIFF.
report_filenamestringmit report_file_base64Originaler Berichtsdateiname einschließlich Erweiterung (z. B. report.pdf oder report.docx).
user_background_textstringneinOptionaler Probenhintergrund. Dies wird nur als weicher Kontext und nicht als Beweis behandelt.

Harte Eingabegrenze

  • Erforderliches Element 1: mindestens ein gemeldeter Suchergebniskandidat, wie ein Top1-Treffer oder eine Top15-Liste
  • Erforderliches Element 2: die Probenpeakliste oder Peaktabelle in cm-1 aus demselben Bericht
  • Wenn eines der Elemente fehlt, gibt der Endpunkt HTTP 422 zurück und erstellt keinen Analysebericht.

Erfolgreiche Antwort

{ "success": true, "analysis_mode": "ai_only_existing_results", "message": "AI-only analysis completed from the supplied existing results report.", "input_requirements": { "service_boundary": "AI-only analysis starts after a search result already exists.", "required_inputs": [ "At least one reported search result candidate (Top1 or Top15).", "The sample peak table or peak list in cm-1." ] }, "missing_requirements": [], "missing_requirement_messages": [], "extracted_report": { "source_kind": "pdf", "used_ocr": true, "peak_values_cm1": [1736, 1601, 1241], "library_candidates": [ {"rank": 1, "name": "Polyethylene terephthalate", "cas_number": "25038-59-9", "raw_score_text": "856/1000", "normalized_similarity": 0.856} ] }, "summary": "Reported library results rank Polyethylene terephthalate first.", "report_view": {}, "final_decision": {}, "direct_evidence": {}, "related_literature": {} }

Antwort bei fehlender Eingabe

{ "detail": { "success": false, "analysis_mode": "ai_only_existing_results", "error": "missing_required_report_elements", "message": "AI-only analysis requires both reported library results and a sample peak table.", "missing_requirements": ["sample_peak_table"], "missing_requirement_messages": [ "Missing sample peak table. Provide the sample peak list or peak table in cm-1 from the same report." ], "input_requirements": { "failure_behavior": "If either the reported result list or the sample peak table is missing, the service stops and returns a 422 response." }, "extracted_report": { "report_has_library_results": true, "report_has_peak_table": false } } }

Beispiel — Vorhandener Berichtstext

import requests report_text = """ Sample: PET fragment Top1: Polyethylene terephthalate Score: 856/1000 Top2: Polyester resin Score: 801/1000 Peak table (cm-1): 3435, 2932, 1715, 1409, 1241, 1093, 1017, 872, 722 """ resp = requests.post( "https://api.ftir.fun/ftir/analyze_existing_results", headers={"X-API-Key": "your-key", "Content-Type": "application/json"}, json={"report_text": report_text, "user_background_text": "consumer packaging fragment"}, ) print(resp.json())

Beispiel — Vorhandene Berichtsdatei

import base64, requests with open("instrument-report.pdf", "rb") as f: b64 = base64.b64encode(f.read()).decode() resp = requests.post( "https://api.ftir.fun/ftir/analyze_existing_results", headers={"X-API-Key": "your-key", "Content-Type": "application/json"}, json={ "report_file_base64": b64, "report_filename": "instrument-report.pdf", "user_background_text": "suspected packaging adhesive", }, ) print(resp.json())

Fehlercodes

HTTP-StatusBedeutung
200Erfolg
401Fehlender oder ungültiger API-Schlüssel
422Ungültiger Anforderungstext, nicht unterstütztes Berichtsformat oder fehlende erforderliche Berichtselemente
500Serverfehler
Anfrage einreichen Formular