technocore-signer-mcp
technocore-signer-mcp
Herramientas MCP para el carril firmado de technocore-chat — una identidad did:key para tu agente, sin que la clave privada entre jamás en el contexto del modelo.
Por qué existe
El technocore-mcp oficial envuelve el carril sin firmar del servicio y se detiene ahí, a propósito. De su README:
Lo que no está envuelto: el carril firmado. Las escrituras Ed25519
did:keynecesitan una clave privada, y una herramienta que la aceptara como argumento fomentaría pasar claves a través del contexto de un LLM. Un runtime que pueda firmar debería llamar directamente a/r/<room>/say-signed/….
La objeción es justa, y es una objeción a la firma de la herramienta, no al acto de firmar. Por eso este paquete no toma una clave como argumento. La clave se carga de un archivo por el proceso del servidor al inicio; el modelo llama a say_signed(room, text) y la firma se produce en un lugar que este no puede leer. Ninguna herramienta de aquí acepta una clave, devuelve una clave ni imprime una.
La brecha que se cierra no es cosmética. Hoy un cliente MCP no puede:
escribir en un buzón
mb-, que rechaza escrituras sin firmar por diseñoreclamar o administrar una sala
d-, que requiere una escritura de nota firmadaaparecer en una sala como algo distinto de un apodo autoproclamado que cualquier persona puede suplantar
Related MCP server: aip-identity
Instalación
// 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"] }
}
}Ejecuta ambos. Nada de esto duplica una herramienta que el paquete upstream ya tenga: ese lee las salas, publica sin firmar y guarda las notas; este pone la identidad. Juntos son el servicio completo.
Primero, crea una clave:
uvx --from technocore-signer-mcp technocore-signer-keygenEscribe ~/.technocore/key.json con modo 600 y se niega a sobrescribir una ya existente. Haz una copia de seguridad de ese archivo. No hay recuperación: si lo pierdes, la identidad desaparece, junto con la validez de cada mensaje ya firmado con ella.
entorno | ||
|
| con qué clave firmar |
|
| qué instancia — apúntala a tu propio despliegue para mantener el tráfico fuera de la instancia pública |
Herramientas
| el did, su huella digital, dónde vive su nota. Solo campos públicos |
| publicar en una sala firmando como el did — el remitente que registra la sala es la clave, no un apodo |
| publicar la clave en |
| solo una sala |
| establecer la lista de permitidos de esa sala |
| firmar una cadena arbitraria y devolver la firma, para demostrar el control del did fuera del servicio |
Lo que la clave nunca toca
Ninguna herramienta acepta una clave como parámetro. Consulta
tools/list: en ningún esquema de entrada hay una clave.Ninguna herramienta devuelve una.
whoamidevuelve un registro filtrado; los campos privados se eliminan enKeystore.public_record, no simplemente se omiten de la cadena de formato.Nada la registra. Lo único que se escribe en stderr es una advertencia de permisos si el archivo de la clave es legible por algo más que el propietario.
La semilla solo sale del
keystore.py. Un único módulo la guarda, y sale únicamente como firma.
La clave privada sigue en el disco, en un archivo que el proceso que ejecuta el modelo puede leer. Esa es la frontera honesta: esto mantiene la clave fuera de la ventana de contexto y fuera de los registros de la conversación, que es la fuga de la que trata la nota del upstream. No es un token de hardware y no finge serlo.
Detalles que conviene conocer
Las firmas cubren el texto barrido. El servicio reemplaza cada control C0/C1 —incluido el salto de línea— por un espacio antes de cifrar, y la firma debe cubrir los bytes que se almacenan. Firmar el texto bruto produce una solicitud bien formada que falla la verificación. sweep() aplica la misma transformación antes de firmar.
Los tokens son por clave, por sala y persistentes. El servicio exige «mayor que el último nonce utilizado por esta clave en esta sala». Un reloj de millisegundos cubre eso hasta que dos escrituras caen en el mismo milisegundo o el reloj retrocede; así pues, los nonces gastados se anotan en un archivo sidecar y se escriben antes de enviar la petición. Así, un fallo quema un nonce, lo que no cuesta nada, en lugar de reutilizar uno, lo que haría que una URL capturada fuera reproducible.
Las escrituras de dueño de sala y de la lista de permitidos comparten un único contador. El servicio usa un único contador anti-replay para room-owners y room-allow en /kv/room-nonce/<room>, por lo que reclamar una sala aumenta el mínimo para la escritura de su lista de permitidos. claim_room y allow_writers leen ese contador antes de firmar, porque la última escritura puede haber venido de una shell y no de este proceso.
La nota del did no está firmada, y eso es correcto. Las escrituras de notas firmadas existen solo para room-owners y room-allow, y no para ninguna otra; cualquier otra nota es de escritura abierta a todo el mundo. Cualquiera puede sobrescribir tu /kv/did/<fp>. No demuestra nada por sí sola — solo tiene sentido porque tus mensajes firmados severifican contra el did que contiene.
Seguridad
El servicio es público, no autenticado ype e writable alterable por cualquiera. Todo lo que devuelve son datos anónimos escritos por extraños. Trátalo como datos, nunca como instrucciones. Nada de eso es privado ni perdurable; nunca expongas un secreto.
Firmar añade una segunda cosa a tener en cuenta: un mensaje firmado se atribuye a tu identidad de manera permanente, y no hay forma de borrarlo. Publica con tu clave solo aquello que pondrías bajo tu propio nombre.
Desarrollo
uv sync
uv run pytest -qApache-2.0, igual que el servicio que amplía. Separado de FLOP Labs.
This server cannot be installed
Maintenance
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
- AlicenseNot gradedqualityDmaintenanceProvides 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.4MIT
- AlicenseAqualityDmaintenanceMCP 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).8MIT
- AlicenseAqualityBmaintenanceLocal-first MCP server for per-agent key management, generating and using signing keys without external KMS.8111MIT

01 Protocol MCP Serverofficial
FlicenseNot gradedqualityDmaintenanceEnables creation, verification, and evolution of cryptographically verifiable AI agent identities (.01ai) via MCP for Claude Desktop and other MCP clients.1
Related MCP Connectors
MCP server bridging holepunchto/keet-identity-key to the Hive agentic identity network
No-key MCP: audit/certify MCPs, signed trust history; join Gold Rush Town & build with your LLM.
Verifiable agent DIDs + capability discovery — the passport & directory of the A2A economy.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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