@igorromero/ciphersuite-mcp
ciphersuite-mcp
Сервер MCP (Model Context Protocol), предоставляющий инструменты шифрования и дешифрования AES-256-CBC, ресурсы с описанием каждого алгоритма и готовые промпты — всё это можно запускать прямо внутри VS Code Copilot Chat.
Related MCP server: Secret Vault MCP Server
Что он делает
Возможность | Название | Описание |
🔧 Инструмент |
| Шифрует любое текстовое сообщение с помощью парольной фразы |
🔧 Инструмент |
| Расшифровывает ранее зашифрованное сообщение с той же парольной фразой |
📄 Ресурс |
| Возвращает сведения об алгоритме шифрования, выработке ключа и формате вывода |
📄 Ресурс |
| Возвращает инструкцию по использованию инструмента дешифрования: ожидаемый формат, требования к парольной фразе и типичные ошибки |
💬 Промпт |
| Готовый промпт, который просит агента зашифровать сообщение |
💬 Промпт |
| Готовый промпт, который просит агента расшифровать сообщение |
Как работает шифрование
Алгоритм: AES-256-CBC
Выработка ключа:
scrypt(passphrase, fixedSalt, 32)— вы передаёте любую строку в качестве парольной фразы; сервер автоматически вырабатывает надёжный 32-байтовый ключФормат вывода:
<IV in hex>:<ciphertext in hex>— сохраните всю строку целиком, чтобы позже расшифровать сообщениеIV: при каждом вызове шифрования генерируется новый случайный 16-байтовый IV, поэтому одно и то же сообщение, зашифрованное дважды, даёт разный результат
Предварительные требования
Node.js v24+ (см.
enginesвpackage.json)
Установка
npm installШаг сборки не требуется — сервер запускает TypeScript напрямую через встроенную поддержку TypeScript в Node.js.
Использование в VS Code
1. Добавьте конфигурацию MCP-сервера
Создайте (или откройте) .vscode/mcp.json в рабочей области и добавьте:
{
"servers": {
"ciphersuite-mcp": {
"command": "node",
"args": ["--experimental-strip-types", "ABSOLUTE_PATH_TO_PROJECT/src/index.ts"]
}
}
}или через npm:
{
"servers": {
"ciphersuite-mcp": {
"command": "npx",
"args": ["-y", "@igorromero/ciphersuite-mcp"]
}
}
}Совет: Вы также можете добавить этот сервер в пользовательскую конфигурацию MCP в
~/.vscode/mcp.json, чтобы он был доступен в любой рабочей области.
2. Перезагрузите VS Code
Откройте палитру команд (Cmd+Shift+P) и выполните Developer: Reload Window (или просто перезапустите VS Code).
3. Используйте в Copilot Chat
Откройте Copilot Chat (режим Agent) и попробуйте:
Encrypt the message "Hello, World!" using the passphrase "my-secret-key"Decrypt this message: a3f1...:<ciphertext> using the passphrase "my-secret-key"Show me the encryption://info resourceАгент автоматически вызовет нужный инструмент и вернёт результат.
Запуск MCP Inspector
MCP Inspector позволяет в интерактивном режиме исследовать и тестировать все инструменты, ресурсы и промпты в браузерном интерфейсе:
npm run mcp:inspectЭто откроет MCP Inspector на http://localhost:5173 и подключит его к запущенному серверу.
Запуск тестов
# Run all tests once
npm test
# Run tests in watch mode (with debugger)
npm run test:devТестовый набор покрывает:
Шифрование сообщения
Расшифровка сообщения с правильной парольной фразой
Получение списка и чтение ресурса
encryption://infoПолучение обоих промптов
Ошибка: расшифровка с неверной парольной фразой
Ошибка: расшифровка некорректного шифротекста
Структура проекта
src/
index.ts # Entry point — connects the server to stdio transport
mcp.ts # All tools, resources, and prompts are registered here
tests/
mcp.test.tsДоступные скрипты
Скрипт | Описание |
| Запуск сервера (используется MCP-клиентами) |
| Запуск с отслеживанием изменений файлов и инспектором Node.js |
| Запуск всех тестов |
| Запуск тестов в режиме наблюдения |
| Открыть интерфейс MCP Inspector |
Создание с нуля
В этом разделе описано, как этот MCP-сервер создавался шаг за шагом — полезно для создания новых MCP-серверов в будущем.
Типы транспорта MCP
Существует 3 типа транспорта MCP:
Тип | Класс | Описание |
|
| Запускается локально на машине — самый распространённый вариант для локальных инструментов |
| — | Работает как API через HTTP |
| — | Server-Sent Events — обрабатывает данные по запросу (потоковая передача) |
Зависимости
// package.json
"dependencies": {
"@modelcontextprotocol/sdk": "^1.27.1",
"@types/node": "^24.11.0",
"zod": "^3.25.76"
}1. Точка входа — src/index.ts
Точка входа создаёт StdioServerTransport и подключает к нему MCP-сервер:
// src/index.ts
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { server } from "./mcp.ts";
async function main() {
const transport = new StdioServerTransport()
await server.connect(transport)
console.error('Encrypt MCP Server running on stdio')
}
main().catch((error) => {
console.error("Fatal error in main():", error);
process.exit(1);
});2. Настройка сервера — src/mcp.ts
Создайте экземпляр MCP-сервера с именем и версией:
// src/mcp.ts
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
export const server = new McpServer({
name: '@igorromero/ciphersuite-mcp',
version: '0.0.1'
})3. Регистрация инструментов

Инструменты — это функции, которые LLM может вызывать для выполнения действий. Используйте server.registerTool, который принимает 3 аргумента:
Название инструмента (строка)
Объект конфигурации, содержащий:
description— описание того, что делает инструмент; LLM использует его, чтобы решить, когда его вызыватьinputSchema— аналог тела запроса, определяется с помощью ZodoutputSchema— аналог тела ответа, определяется с помощью Zod
Асинхронная функция-обработчик — собственно реализация
server.registerTool(
'encrypt_message',
{
description: 'Encrypt a message',
inputSchema: {
message: z.string().describe("The message to encrypt"),
encryptionKey: z.string().describe(
"Any passphrase to use for encryption — the server derives a strong key from it automatically"
)
},
outputSchema: {
encryptedMessage: z.string().describe(
"The encrypted message (format: iv:ciphertext)"
)
}
},
async ({ message, encryptionKey }) => {
try {
const encryptedMessage = encrypt(message, encryptionKey)
return {
content: [{ type: "text", text: encryptedMessage }],
structuredContent: { encryptedMessage }
}
} catch (error) {
return {
isError: true,
content: [{
type: 'text',
text: `Failed to encrypt message! Error: ${error instanceof Error ? error.message : String(error)}`
}]
}
}
}
)Тот же принцип применяется к decrypt_message — просто поменяйте местами поля схемы ввода/вывода и вызовите decrypt().
4. Регистрация ресурсов

Ресурсы предоставляют статическую или вычисляемую информацию, которая помогает LLM понять контекст вокруг инструмента. Используйте server.registerResource, который принимает 4 аргумента:
Название ресурса
Шаблон URI (обычно совпадает с названием)
Объект конфигурации, содержащий
descriptionФункция-обработчик, возвращающая
contents— массив объектов с полямиuri,mimeTypeиtext
server.registerResource(
'encryption://info',
'encryption://info',
{
description: 'Describes the encryption algorithm, key requirements, and output format used by this server',
},
() => ({
contents: [
{
uri: "encryption://info",
mimeType: "text/plain",
text: `
Algorithm : AES-256-CBC
Key derivation: scrypt (passphrase + fixed server salt → 32-byte key)
Output format: <16-byte IV in hex>:<ciphertext in hex> (separated by ":")
Notes:
- Users pass any passphrase — the server derives a strong 32-byte key automatically using scrypt.
- A random IV is generated for every encryption — the same message encrypted twice will produce different output.
- Use the exact same passphrase to decrypt.
- Keep the full "iv:ciphertext" string to decrypt later.
`.trim(),
},
]
})
)Ресурс decryption://info устроен так же и описывает ожидаемый формат входных данных, требования к парольной фразе и типичные сценарии ошибок для инструмента дешифрования.
5. Регистрация промптов

Промпты — это готовые шаблоны сообщений, которые LLM может использовать для направленного вызова инструментов. Используйте server.registerPrompt, который принимает 3 аргумента:
Название промпта
Объект конфигурации, содержащий:
description— описание того, что делает промптargsSchema— входные параметры, определяемые с помощью Zod
Функция-обработчик, возвращающая
messages— массив объектов с полямиrole(userилиassistant) иcontent
server.registerPrompt(
"encrypt_message_prompt",
{
description: "Prompt to encrypt a plain-text message using the encrypt_message tool",
argsSchema: {
message: z.string().describe("The message to encrypt"),
encryptionKey: z.string().describe(
"Any passphrase to use for encryption — the server derives a strong key from it automatically"
)
}
},
({ message, encryptionKey }) => ({
messages: [
{
role: 'user',
content: {
type: "text",
text: `Please encrypt the following message using the encrypt_message tool.\nMessage: ${message}\nEncryption key: ${encryptionKey}`,
}
}
]
})
)Промпт decrypt_message_prompt устроен так же — принимает encryptedMessage и encryptionKey в качестве аргументов и предписывает LLM вызвать decrypt_message.
6. Подключение MCP-сервера к IDE
VS Code (автоматически)
Создайте .vscode/mcp.json в корне проекта. VS Code обнаружит его автоматически:
{
"servers": {
"ciphersuite-mcp": {
"command": "node",
"args": [
"--experimental-strip-types",
"src/index.ts"
]
}
}
}Другие IDE / Другие проекты
Скопируйте запись сервера ciphersuite-mcp в файл конфигурации MCP целевого проекта или IDE. Сервер запускается как подпроцесс через stdio, поэтому к нему может подключиться любой MCP-совместимый клиент.
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
AlicenseAqualityCmaintenanceEnables AI memory persistence and secure credential management via vault tools for MCP-compatible clients like Claude Desktop, Cursor, and VS Code.1217MIT- FlicenseNot gradedqualityCmaintenanceAES-256-GCM encrypted local secret storage exposed as MCP tools, with secrets captured via native OS dialogs and never passing through the LLM API.
- AlicenseNot gradedqualityCmaintenanceExposes OS keychain or AES-256-GCM encrypted file secrets as MCP tools, allowing reading, setting, and listing secrets without exposing values in conversation messages.10MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for sovereign AES-256-GCM backup encryption and decryption. Enables encrypting, decrypting, verifying, and scoring passphrases with zero network calls.MIT
Related MCP Connectors
Production-grade cryptography toolkit with 31 MCP tools for classical, PQC, and KMS workflows.
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
MCP server teaching AI agents to implement TideCloak: auth, E2EE, IGA, security analysis
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/igorgrv1/AI-MCP-from-scratch'
If you have feedback or need assistance with the MCP directory API, please join our Discord server