Skip to main content
Glama
PabloBorgesMartins

@erickwendel/ciphersuite-mcp

@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

encrypt_message

Encrypts any plain-text message with a passphrase

🔧 Tool

decrypt_message

Decrypts a previously encrypted message with the same passphrase

📄 Resource

encryption://info

Returns details about the algorithm, key derivation, and output format

💬 Prompt

encrypt_message_prompt

Pre-built prompt that asks the agent to encrypt a message

💬 Prompt

decrypt_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 automatically

  • Output format: <IV in hex>:<ciphertext in hex> — keep the full string to decrypt later

  • IV: a fresh random 16-byte IV is generated on every encryption call, so the same message encrypted twice produces different output


Related MCP server: cryptoseed-mcp

Prerequisites

  • Node.js v24+ (see engines in package.json)


Installation

npm install

No 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.json to 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 resource

The 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:inspect

This 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:dev

The test suite covers:

  • Encrypting a message

  • Decrypting a message with the correct passphrase

  • Listing and reading the encryption://info resource

  • Fetching 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.ts

Available scripts

Script

Description

npm start

Start the server (used by MCP clients)

npm run dev

Start with file-watch and Node.js inspector

npm test

Run all tests

npm run test:dev

Run tests in watch mode

npm run mcp:inspect

Open the MCP Inspector UI

Available Tools

2 tools
decrypt_messageB

Decrypts an encrypted message

ParametersJSON Schema
NameRequiredDescriptionDefault
encryptionKeyYesThe key to use for decryption
encryptedMessageYesThe encrypted message to be decrypted

Output Schema

ParametersJSON Schema
NameRequiredDescription
decryptedMessageYesThe decrypted message

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the core function and omits critical details like error behavior on wrong key, required encryption format, or whether the operation is reversible. This is a significant gap for a decryption tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words. It is maximally concise and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema and full parameter documentation, the description provides no contextual guidance about the expected decrypted output, failure modes, or security considerations. A decryption tool needs more context to be used correctly, especially in an agentic setting.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides full descriptions for both parameters (encryptedMessage and encryptionKey), covering 100% of the parameter semantics. The description adds no extra information beyond what the schema already conveys, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action (decrypting) and resource (encrypted message), which distinguishes it from the sibling encrypt_message. However, it is very close to the tool name itself, adding little specificity beyond that.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for decryption but does not explicitly mention when to prefer this tool over the encrypt_message sibling, nor does it state any prerequisites such as needing the correct key. The context is clear but not elaborated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

encrypt_messageB

Encrypts a message

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesThe message to be encrypted
encryptionKeyYesThe key to use for encryption

Output Schema

ParametersJSON Schema
NameRequiredDescription
encryptedMessageYesThe encrypted message (format: iv:ciphertext)

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It only states that encryption occurs, without disclosing algorithm, key requirements, reversibility, side effects, or output format. This is minimal behavioral information.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence with no unnecessary words. It earns its place by stating the purpose, though it ends with a trailing space and lacks broader structural enhancement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and complete schema, the description is minimally adequate. An output schema exists so return values are covered elsewhere. However, no additional context about usage, security implications, or relationship to the sibling is provided.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both 'message' and 'encryptionKey', so the schema already fully documents the parameters. The description adds no additional parameter semantics beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states a specific verb 'Encrypts' and resource 'message', clearly distinguishing it from the sibling tool 'decrypt_message' which performs the opposite operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the name and description rather than explicitly stated. No mention of when to use encrypt_message vs the sibling decrypt_message, though the opposite operation makes it somewhat apparent.

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.

  1. 2 tool updatesv0.0.1
    • First observeddecrypt_message
    • First observedencrypt_message

TDQS

A3.5/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have clearly distinct purposes: one encrypts and one decrypts. No overlap or ambiguity exists between them.

Naming Consistency5/5

Both tool names follow the same verb_noun pattern: encrypt_message and decrypt_message. This is consistent and predictable.

Tool Count3/5

With only 2 tools, the server feels thin for the scope of a cipher suite. It is borderline, as the tools are focused but minimal.

Completeness3/5

The server covers the basic encrypt/decrypt lifecycle, but lacks key management, algorithm selection, or other common cipher operations. For a cipher suite, this is a minimal surface.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to encrypt and decrypt files or text using the SAFE utility with support for passwords, public keys, and GitHub usernames. It provides tools for key generation, identity listing, and inspecting encrypted file metadata.
    -
  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables AI agents to perform symmetric and asymmetric encryption of text and files using secure storage in the macOS Keychain. It provides tools for identity management and secure messaging compatible with the CryptoSeed iOS app and CLI.
    -