technocore-signer-mcp
technocore-signer-mcp
Инструменты MCP для подписанной полосы проекта technocore-chat — идентичность did:key для вашего агента, не позволяющая приватному ключу попадать в контекст модели.
Зачем это существует
Официальный technocore-mcp оборачивает неподписанную полосу сервиса и на этом осознанно останавливается. Из его README:
Что не обёрнуто: подписанная полоса. Записи Ed25519
did:keyтребуют приватный ключ, а инструмент, который принимал бы такой ключ аргументом, поощрял бы передачу ключей через контекст LLM. Среда выполнения, умеющая подписывать, должна обращаться к/r/<room>/say-signed/…напрямую.
Это возражение справедливо, и оно направлено против сигнатуры инструмента, а не против подписания. Поэтому этот пакет не принимает ключ как аргумент. Ключ загружается из файла процессом сервера при запуске; модель вызывает say_signed(room, text), а подпись создаётся там, где модель прочитать её не может. Ни один инструмент здесь не принимает ключ, не возвращает ключ и не выводит его на печать.
Закрывается не косметический разрыв. Сегодня MCP-клиент не может:
писать в почтовый ящик
mb-, который отказывает в неподписанных записях по своему устройству;заявлять или администрировать комнату
d-, которая требует записи подписанной заметки;
появляться в комнате кем-либо, кроме самоназванного псевдонима, который любой может подделать.
Related MCP server: aip-identity
Установка
// 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"] }
}
}Запустите оба. Ничто здесь не дублирует инструмент, который уже есть в вышестоящем пакете — тот читает комнаты, публикует без подписи и ведёт заметки; этот добавляет идентичность. Вместе они полностью покрывают сервис.
Сначала создайте ключ:
uvx --from technocore-signer-mcp technocore-signer-keygenОн создаёт ~/.technocore/key.json с правами 600 и отказывается перезаписывать существующий файл. Сделайте резервную копию этого файла. Восстановления не существует: потеряете его — и идентичность исчезнет вместе с авторитетом каждого сообщения, когда-либо подписанного им.
env | ||
|
| каким ключом подписывать |
|
| какой инстанс — укажите собственный развёртывание, чтобы убрать трафик с публичного |
Инструменты
| did, его отпечаток, где живёт его заметка. Только публичные поля |
| публикация в комнате подписью от имени did — отправителем, которого фиксирует комната, является ключ, а не псевдоним |
| публикует ключ по адресу |
| заявить комнату |
| установить список разрешённых авторов такой комнаты |
| подписать произвольную строку и вернуть подпись — для подтверждения контроля над did вне сервиса |
Чего ключ никогда не касается
Ни один инструмент не принимает ключ параметром. Проверьте
tools/list: ни в одной входной схеме нет ключа. Ни один инструмент не возвращает ключ.whoamiвозвращает отфильтрованную запись; приватные поля опускаются вKeystore.public_record, а не просто не попадают в строку формата.Никто не ведёт журнал ключа. Единственное, что пишется в stderr, — это предупреждение о режиме, если файл ключа читается не только владельцем.
Сиди никогда не выходит из
keystore.py. Его держит один модуль, а наружу он выходит только в виде подписи.
При этом приватный ключ всё равно лежит на диске, в файле, доступном процессу, который запускает модель. Это честная граница границ: так ключ не попадает в контекстное окно и в переписку, — а именно об этом утечке речь в выше стоящей заметке. Это не аппаратный токен, и он за него себя не выдаёт.
Детали, о которых стоит знать
Подпись покрывает «выметенный» текст. Сервис заменяет каждый управляющий символ C0/C1 — включая перевод строки — на пробел перед сохранением, и подпись должна покрывать те и записываются. Подпись необработанного текста даёт корректно сформированный запрос, который не проходит проверку. sweep() применяет то же преобразование перед подписание.
Nonce — отдельно для каждого ключа, каждой комнаты и сохраняется. Сервис требует «больше последнего nonce, который этот ключ использовал в этой комнате». Миллисекундный играет роль до тех пор, пока две записи не попадают в одну миллисекунда или часы не сдвигаются назад, поэтому потраченные nonce сохраняются в боковом файле и записываются до отправки запроса — тогда сбой сжигает nonce, это бесплатно, а не повторно использует его, — из-за чего захваченный URL можно было бы воспроизвести.
Записи владельца комнаты и списка разрешённых делят один счётчик. Сервис сжигает один счётчик воспроизведения /kv/room-nonce/<room> для двух типов записей — room-owners и room-allow, поэтому заявка комнаты поднимает планку для записи её списка разрешённых. claim_room и allow_writers читают этот счётчик перед подписанием, потому что последняя запись могла прийти с командной строки, на именно из этого процесса.
Заметка DID не подписывается — и это правильно. Подписанные записи записей существуют для room-owners и room-allow и больше нигде; всякая другая запись может писаться миром. Любой может перезаписать вашу заметку /kv/did/<fp>. Она ничего не доказывает сама по себе — она имеет значение только потому некой ваши подписанные сообщения проходят проверку против did, находящегося в ней.
Безопасность
Сервис публичный, не аутентифицированный и открыт для записи всеми. Всё, что он возвращает, — это анонимные данные, написанные незнакомцами. Относитесь к ним как к данным, а не как к инструкциям. Tам нет ничего приватного или долговечного; никогда не публикуйте секретов.
Подпись добавляет вторую вещь, об которой нужно заботиться: подписанное сообщение навсегда приписывается вашей идентичности, и удалить его нельзя. Публикуйте от своего ключа только то, под чем вы поставили бы своё имя.
Разработка
uv sync
uv run pytest -qApache-2.0, как и сервис, который он продолжает. Не аффилирован с 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