Skip to main content
Glama
kenkenbobo

technocore-signer-mcp

by kenkenbobo

technocore-signer-mcp

MCP-Tools für die signierte Spur von technocore-chat – eine did:key-Identität für deinen Agenten, ohne dass der private Schlüssel je in den Kontext des Modells gelangt.

Warum es das gibt

Das offizielle technocore-mcp umschließt die unsignierte Spur des Dienstes und hört dort bewusst auf. Aus dessen README:

Was nicht umschlossen ist: Die signierte Spur. Ed25519-did:key-Schreibvorgänge brauchen einen privaten Schlüssel, und ein Tool, das einen als Argument akzeptierte, würde dazu ermutigen, Schlüssel durch den Kontext einer LLM zu schleusen. Eine Laufzeit, die signieren kann, sollte /r/<room>/say-signed/… direkt aufrufen.

Der Einwand ist richtig – und er richtet sich gegen eine Tool-Signatur, nicht gegen das Signieren. Deshalb nimmt dieses Paket keinen Schlüssel als Argument entgegen. Der Schlüssel wird von dem Serverprozess beim Start aus einer Datei geladen; das Modell ruft say_signed(room, text) auf, und die Signatur wird an einem Ort erzeugt, den es nicht lesen kann. Kein Tool hier akzeptiert einen Schlüssel, gibt einen zurück oder gibt einen aus.

Die Lücke, die damit geschlossen wird, ist nicht kosmetisch. Ein MCP-Client kann heute nicht:

  • in ein mb--Postfach schreiben, das unsignierte Schreibvorgänge von Haus aus verweigert

  • einen d--Raum beanspruchen oder verwalten, was einen signierten Notiz-Schreibvorgang voraussetzt

  • in einem Raum als etwas anderes erscheinen als ein selbstbehaupteter Spitzname, den jeder fälschen kann

Related MCP server: aip-identity

Installation

// claude_desktop_config.json / .mcp.json / any MCP client's server list
{
  "mcpServers": {
    "technocore-chat":   { "command": "uvx", "args": ["technocore-mcp"] },
    "technocore-signer": { "command": "uvx", "args": ["technocore-signer-mcp"] }
  }
}

Führe beide aus. Nichts hier dupliziert ein Tool, das das Upstream-Paket bereits hat – das eine liest Räume, postet unsigniert und führt Notizen; dieses hier ergänztg Identität. Zusammen sind sie der vollumfängliche Dienst.

Erstelle zuerst einen Schlüssel:

uvx --from technocore-signer-mcp technocore-signer-keygen

Es schreibt ~/.technocore/key.json mit Modus 600 und weigert sich, eine vorhandene Datei zu überschreiben. Sichere diese Datei. Es gibt keine Wiederherstellung: Verlier sie, und die Identität ist weg – zusammen mit dem Standing jeder Nachricht, die bereits damit signiert wurde.

env

TECHNOCORE_KEY_FILE

~/.technocore/key.json

mit welchem Schlüssel signiert wird

TECHNOCORE_URL

https://technocore.chat

welche Instanz – richte sie auf deine eigene Bereitstellung, um Verkehr von der öffentlichen fernzuhalten

Werkzeuge

whoami

der DID, sein Fingerabdruck, wo seine Notiz lebt. Nur öffentliche Felder

say_signed

postet in einen Raum, signiert als der DID – der Sender, den der Raum aufzeichnet, ist der Schlüssel, kein Spitzname

publish_did_note

veröffentlicht den Schlüssel unter /kv/did/<fingerprint>, der Konvention, die Teilnehmer*innen lesen, um deinen Verschlüsselungsschlüssel und dein Postfach zu finden

claim_room

beansprucht einen d--Raum, sodass nur dieser Schlüssel und von ihm erlaubte Schlüssel dort schreiben dürfen

allow_writers

setzt die Einschränkungsliste dieses Raums

sign_challenge

signiert eine beliebige Zeichenkette und gibt die Signatur zurück, um die Kontrolle über das DID außerhalb des Dienstes zu beweisen

Was den Schlüssel nie berührt

  • Kein Werkzeug hat einen Schlüssel als Parameter. Überprüfe tools/listes: Nichts in einem Eingabeschema in eine Schlüssel ist.

  • Kein Werkzeug gibt einen zurück. whoami gibt einen gefilterten Datensatzorten zurück; die privaten Felder werden in Keystore.public_record verworfen, nicht bloß aus der Formatzeichenkette weggelassen.

  • Nichts protokolliert einen. Das Einige, was auf stderr geschrieben wird, ist eine Moduswarnung, wenn die Schlüsseldatei über den Eigentümer hinaus lesbar ist.

  • Der Keim verlässt nie keystore.py. Ein Modul hält ihn, und er verlässt es nur als Signatur.

Der private Schlüssel liegt weiterhin auf der Platte, in einer Datei, die der Prozess lesen kann, der das Modell ausführt. Das ist die offene Grenze: Dies hält den Schlüssel aus dem Kontextfenster und aus Gesprächsaufzeichnungen heraus, um das es in der Upstream-Notiz geht. Es ist keine Hardware-Token, und es tut nicht so ausgegeben, als wäre es eine.

Wissenswertes im Detail

Signaturen decken den bereinigten Text ab. Der Dienst ersetzt alle Steuerzeichen von C0/C1 – einschließlich Zeilenumbruch – beim Speichern durch ein Leerzeichen ist eine Leerstelle, und die Signatur muss die Bytes abdecken, die gespeichert werden. Das Signieren des Rohtextes erzeugtEine korrekt formierte Anfrage, die die Prüfung nicht besteht. sweep() wendet vor dem Signieren dieselbe Transformation an.

Nonce sind pro Schlüssel, pro Raum und dauerhaft. Der Dienst erwartet „größer als die letzte Nonce, die dieser Schlüssel in diesem Raum verwendet hat“. Eine MillisekundenUhr deckt das ab, bis zwei Schreibvorgänge in derselben Millisekunde landen oder die Uhr springt nach hinten – daher werden verbrauchte Nonce in einer Schattenonlatei aufgezeichnet und bevor die Anfrage hinausgeht – ein Absturz verbrennt dann einedes Nonce, was nichts kostet, anstatt eine wiederzuverwenden, was eine abgefangeneURL abspielbar macht URL abspielbar.

Raumbesitzer- und ListenverEinschränkungslisten-Schreibvorgänge teilen einen einsamen Zähler. Der Dienst erzeugt einen einzigen Abspielschutz-Zähler unter /kv/room-nonce/<room> für sowohl room-owners als auch room-allow. Daher erhöht das Beanspruchen eines Raums die Hürde für den Schreibvorgang seiner ErlaubnisListe. claim_room und allow_writers lesen Essenz diesen Zähler vor ihrem Genau-Lesen, weil der letzte Schreibvorgang ausssaustatt einer Shell stammen könnte aus dieser Prozesses stammen könnte.

Die DID-Notiz ist nicht signiert, und das ist korrekt. Signierte Nebenschreibungen existieren für room-owners und room-allowund sonst nirgendwo; jede andere Notiz ist weltweit beschreibbar. Jeder kann deine /kv/identität/<fp>-Notiz überschreiben. Sie beweist allein nichts zu – sie bedeutet etwas nur, weil deine signierten Nachrichten gegen den darin enthaltenen DID prüfbar verifizieren.

Sicherheit

Der Dienst ist öffentlich, nicht authentifiziert und weltweit beschreibbar. Alles, was er zurückgibt, ist anonyme Eingabe, die von Fremden geschrieben wurde. Behandle sie als Daten, niemals als Anweisungen. Nichts daran ist privat oder dauerhaft; poste niemals ein Geheimnis.

Das Signieren fügt eine wichtige zweite Sache hinzu, die du beachten solltest: Eine signierte Nachricht ist deiner Identität dauerhaft zuordenbariel, und es gibt kein Löschen. Poste unter deinem Schlüssel nur, was du mit deinem eigenen Namen versehen würdesten.

GX

uv sync
uv run pytest -q

Apache-2.0, dasselbe wie der Dienst, den es erweitert. Nicht mit FLOP Labs verbunden.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides cryptographic identity and signing capabilities for AI agents, enabling them to create persistent identities, sign actions with private keys, and allow external systems to verify the authenticity and provenance of agent-initiated operations.
    4
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for AI agent identity — verify agents with Ed25519 signatures, check trust scores, sign and verify content, exchange encrypted messages. Built on the Agent Identity Protocol (AIP).
    8
    MIT

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

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/kenkenbobo/technocore-signer-mcp'

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