ciphersuite-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ciphersuite-mcpEncrypt the message "Hello, World!" with passphrase "my-secret-key""
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@erickwendel/ciphersuite-mcp
An MCP (Model Context Protocol) server that provides AES-256-CBC encryption and decryption tools, a resource describing the algorithm, and ready-to-use prompts — all runnable directly inside VS Code Copilot Chat.
What it does
Capability | Name | Description |
🔧 Tool |
| Encrypts any plain-text message with a passphrase |
🔧 Tool |
| Decrypts a previously encrypted message with the same passphrase |
📄 Resource |
| Returns details about the algorithm, key derivation, and output format |
💬 Prompt |
| Pre-built prompt that asks the agent to encrypt a message |
💬 Prompt |
| Pre-built prompt that asks the agent to decrypt a message |
How encryption works
Algorithm: AES-256-CBC
Key derivation:
scrypt(passphrase, fixedSalt, 32)— you pass any passphrase string; the server derives a strong 32-byte key automaticallyOutput format:
<IV in hex>:<ciphertext in hex>— keep the full string to decrypt laterIV: a fresh random 16-byte IV is generated on every encryption call, so the same message encrypted twice produces different output
Related MCP server: fallvault-mcp
Prerequisites
Node.js v24+ (see
enginesinpackage.json)
Installation
npm installNo build step is needed — the server runs TypeScript directly via Node.js native TypeScript support.
Using in VS Code
1. Add the MCP server configuration
Create (or open) .vscode/mcp.json in your workspace and add:
{
"servers": {
"ciphersuite-mcp": {
"command": "node",
"args": ["--experimental-strip-types", "ABSOLUTE_PATH_TO_PROJECT/src/index.ts"]
}
}
}or via npm
{
"servers": {
"ciphersuite-mcp": {
"command": "npx",
"args": ["-y", "@erickwendel/ciphersuite-mcp"]
}
}
}Tip: You can also add this server to your user-level MCP config at
~/.vscode/mcp.jsonto make it available in every workspace.
2. Reload VS Code
Open the Command Palette (Cmd+Shift+P) and run Developer: Reload Window (or just restart VS Code).
3. Use it in Copilot Chat
Open Copilot Chat (Agent mode) and try:
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 resourceThe agent will automatically call the appropriate tool and return the result.
Running the MCP Inspector
The MCP Inspector lets you explore and test all tools, resources, and prompts interactively in a browser UI:
npm run mcp:inspectThis opens the inspector at http://localhost:5173 and connects it to the running server.
Running tests
# Run all tests once
npm test
# Run tests in watch mode (with debugger)
npm run test:devThe test suite covers:
Encrypting a message
Decrypting a message with the correct passphrase
Listing and reading the
encryption://inforesourceFetching both prompts
Error: decrypting with the wrong passphrase
Error: decrypting a malformed ciphertext
Project structure
src/
index.ts # Entry point — connects the server to stdio transport
mcp.ts # All tools, resources, and prompts are registered here
tests/
mcp.test.tsAvailable scripts
Script | Description |
| Start the server (used by MCP clients) |
| Start with file-watch and Node.js inspector |
| Run all tests |
| Run tests in watch mode |
| Open the MCP Inspector UI |
Available Tools
2 toolsdecrypt_messageC
Decrypts a message
| Name | Required | Description | Default |
|---|---|---|---|
| encryptionKey | Yes | The key used for decryption | |
| encryptedMessage | Yes | The encrypted message (format: iv:ciphertext) |
Output Schema
| Name | Required | Description |
|---|---|---|
| decryptedMessage | Yes | The decrypted message |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing about key requirements, failure modes on bad keys, or reversibility. It is silent on every behavioral trait an agent would need.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single three-word phrase is short but under-specified rather than concise: every word merely echoes the name, so nothing is front-loaded or earned.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, but with no annotations and two required params, the description should still cover prerequisites or pairing with encrypt_message. It leaves those gaps open.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including the iv:ciphertext format note, so the schema already documents both required parameters. The description adds no meaning beyond it, which is the baseline 3 case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Decrypts a message" simply restates the tool name decrypt_message with no added specificity. It does not distinguish this tool from its sibling encrypt_message or state scope, format, or any qualifier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool, when not to, or how it relates to the sibling encrypt_message. The agent gets no routing signal at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
encrypt_messageC
Encrypts a message
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | The message to be encrypted | |
| encryptionKey | Yes | The key used for encryption |
Output Schema
| Name | Required | Description |
|---|---|---|
| encryptedMessage | Yes | The encrypted message (format: iv:ciphertext) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: no cipher/algorithm, key format or length expectations, output encoding, or error behavior for invalid keys. The existence of an output schema excuses explaining return values, but the operational behavior is undocumented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single four-word sentence is front-loaded and wastes nothing, but its brevity reflects under-specification rather than disciplined conciseness given the cryptographic complexity involved.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a security-sensitive two-parameter required-input tool with zero annotations, the description should at least mention key requirements and output form. The output schema covers return values, but the description leaves the operation's constraints entirely unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both 'message' and 'encryptionKey' documented in the schema itself. The description adds no additional meaning (e.g., key format or size), so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Encrypts a message" states a specific verb and resource, and the encrypt/decrypt pairing with the sibling is inferable. However, it is essentially a restatement of the tool name with no added scope or distinguishing detail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus decrypt_message, and no prerequisites such as whether the caller must already possess a key. Usage is only implied by the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v0.0.1- First observed
decrypt_message - First observed
encrypt_message
TDQS
Scored across 2 tools
The two tools have perfectly distinct, complementary purposes: one encrypts and one decrypts. There is no realistic way an agent could confuse them.
Both names follow the same clean verb_noun pattern (encrypt_message, decrypt_message), with consistent snake_case and parallel structure.
Two tools is on the thin side for a server billed as a 'ciphersuite,' which implies more than a single symmetric pair. The count is defensible for a minimal encrypt/decrypt service but feels under-scoped.
Core encrypt/decrypt is covered, but a cipher suite typically also needs key generation/management, algorithm selection, and possibly hashing or sign/verify. These notable gaps mean agents cannot perform a full crypto lifecycle.
Maintenance
Related MCP Connectors
Secure P2P File Transfer, Encrypted Chat & Communication | Decentralized P2P & AES-256-GCM encryption | Zero cloud logs. Zero registration. For humans and autonomous AI agents / MCP servers.
Production-grade cryptography toolkit with 31 MCP tools for classical, PQC, and KMS workflows.
Private persistent memory for Claude, ChatGPT & Gemini via MCP - semantic search, zero-code setup.
- mcpOAuthai.butlerbrain
Persistent memory for AI assistants. Save once; recall from Claude, ChatGPT, or any MCP client.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAES-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 gradedqualityCmaintenanceMCP server for sovereign AES-256-GCM backup encryption and decryption. Enables encrypting, decrypting, verifying, and scoring passphrases with zero network calls.MIT
- AlicenseNot gradedqualityAmaintenanceLocal, encrypted password vault with AES-256-GCM and PBKDF2, exposing MCP tools for secure credential management, password generation, and search.MIT
- FlicenseAqualityCmaintenanceProvides AES-256-CBC encryption and decryption tools, a resource for algorithm details, and prompts for encrypting and decrypting messages, all runnable inside VS Code Copilot Chat.2-