Zur Dokumentation springen
DokumentationDateien per SFTP

Dateien per SFTP

Lassen Sie einen Agenten Dateien auf Ihrem Server auflisten, lesen, schreiben und verschieben, während Sallyport den privaten Schlüssel verwahrt.

Auf dieser Seite

Jeder SSH-Host, den Sie verbinden, ist auch ein Dateiserver für Ihre Agenten. Sallyport meldet sich mit Ihrem Schlüssel an, führt die Dateioperation aus und gibt das Ergebnis zurück. Der Agent sieht den Schlüssel nie, und jede Operation landet im Journal.

Einrichtung

Es gibt nichts weiter hinzuzufügen. Verbinden Sie den SSH-Host einmal: dieselbe Verbindung, derselbe Schlüssel und derselbe Host-Schlüssel dienen seinen Befehlen und seinen Dateien. Der Server braucht sein SFTP-Subsystem, das OpenSSH standardmäßig einschaltet.

Festlegen, welche Operationen auf Sie warten

OperationKlasse
list, stat, readLesen. Das Lesen eines privaten Schlüssels, einer .env, einer Passwortdatei oder eines Pfads mit .. zählt als Schreiben.
write, mkdir, renameSchreiben
overwrite, delete, rmdirDestruktiv

Standardmäßig laufen Dateioperationen ohne Rückfrage. Stellen Sie jede Klasse auf der Seite des Agenten unter Agenten ein, wie bei Befehlen. Die Freigabekarte zeigt Host, Operation und Pfad, bei einem Schreibvorgang auch den Text, der in die Datei kommt. Bytes, die kein Text sind, erscheinen mit ihrer Größe und ihrem SHA-256.

Aus einem Agenten nutzen

list_access nennt die zwei Datei-Tools des Hosts. _sftp_read nimmt nur Lesezugriffe an, ein Client kann es also einmal erlauben. _sftp_write nimmt jede Operation an.

ArgumentBedeutung
oplist, stat, read, write, overwrite, mkdir, rename, delete oder rmdir. Pflicht.
pathDie Datei oder das Verzeichnis: absolut oder relativ zum Anmeldeverzeichnis. Pflicht.
torename: der neue Pfad. Umbenennen ersetzt nie eine Datei, die schon da ist.
offset, lengthread: der Teil der Datei, der gelesen wird.
content, content_base64write, overwrite: die Datei als Text oder ihre Bytes in Base64. write legt eine neue Datei an und ersetzt nie eine vorhandene; overwrite ersetzt die ganze Datei, mit einer Karte zur Freigabe.
intentEin Satz zum Grund, den die freigebende Person sieht.
call_idSetzt einen Aufruf fort, der auf Freigabe wartet.
max_inline_bytesWie viel in der Antwort kommt. Standardmäßig 24 KiB; fetch_body liest den Rest.
Argumente eines Aufrufs von _sftp_write
{
  "op": "write",
  "path": "upload/ledger.csv",
  "content": "id,amount\n1,100.50\n",
  "intent": "Send the September ledger to the bank"
}

Große Dateien über HTTP

Eine Datei, die für einen MCP-Aufruf zu groß ist, geht mit dem Token des Agenten über den HTTP-Proxy. Der Pfad nach der ID der Verbindung ist der absolute Pfad der Datei, und die Methode ist die Operation. Ein Download kommt als Stream, so wie der Server sendet, und ein Upload nimmt bis zu 32 MiB an.

AnfrageOperation
GET /p/{id}/srv/report.csvread. Für einen Teil ?offset= und &length= anhängen.
GET /p/{id}/srv/reports/list: ein Schrägstrich am Ende.
HEAD /p/{id}/srv/report.csvstat
PUT /p/{id}/upload/ledger.csvwrite; mit ?op=overwrite overwrite. Der Body ist die Datei.
POST /p/{id}/upload/2026?op=mkdirmkdir
POST /p/{id}/inbox/a.xml?op=rename&to=/archive/a.xmlrename
DELETE /p/{id}/inbox/a.xmldelete. Mit Schrägstrich am Ende rmdir.
Shell · eine Datei hochladen und wieder herunterladen
export SP_TOKEN='sp_live_…'
BINDING='<ssh-connection-id>'

curl --fail-with-body -X PUT -H "Authorization: Bearer $SP_TOKEN" \
  -H 'X-Sallyport-Intent: Send the September ledger to the bank' \
  --data-binary @ledger.csv \
  "https://mcp.sallyport.cloud/p/$BINDING/upload/ledger.csv"

curl --fail-with-body -H "Authorization: Bearer $SP_TOKEN" \
  -o ledger-copy.csv \
  "https://mcp.sallyport.cloud/p/$BINDING/upload/ledger.csv"

Das Ergebnis lesen

  • Ein Lesezugriff antwortet mit content, wenn die Datei Text ist, sonst mit content_base64, und mit file_size.
  • Eine Auflistung antwortet mit entries: Name, Typ, Größe, Rechte und Änderungszeit. stat antwortet mit einem entry.
  • Eine Ablehnung des Servers ist die Antwort, und sonst geschah nichts: no_such_file, permission_denied, already_exists, is_a_directory oder failure, mit der Meldung des Servers. Auf /p/ kommt sie als 404, 403 oder 409.
  • Öffnen Sie den Aufruf unter Aktivität, um „Ergebnis der Dateioperation“ zu sehen: Ziel, Pfad und übertragene Bytes. Das Journal hält Operation und Pfad fest, nie den Inhalt der Datei.