Skip to main content
Glama
nonatin1000

@erickwendel/ciphersuite-mcp

by nonatin1000

@erickwendel/ciphersuite-mcp

An MCP (Model Context Protocol) server that provides AES-256-CBC encryption and decryption tools, a resource describing the algorithm, and a ready-to-use prompt — 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

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

  • Python 3.11+

  • uv (recommended) or pip


Installation

uv sync

or with pip:

pip install -e ".[dev]"

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": "uv",
      "args": ["run", "python", "-m", "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:

npx @modelcontextprotocol/inspector uv run python -m ciphersuite_mcp

This opens the inspector at http://localhost:5173 and connects it to the running server.


Running tests

uv run pytest

The test suite covers:

  • Encrypting a message

  • Decrypting a message with the correct passphrase

  • Error: decrypting with the wrong passphrase

  • Listing the encryption://info resource

  • Fetching the encrypt_message_prompt


Project structure

src/ciphersuite_mcp/
  __init__.py
  __main__.py   # Entry point — connects the server to stdio transport
  server.py     # All tools, resources, and prompts are registered here
  service.py    # AES-256-CBC encryption/decryption logic
tests/
  conftest.py   # Shared MCP client fixture
  test_mcp.py

Available commands

Command

Description

uv run python -m ciphersuite_mcp

Start the server (used by MCP clients)

uv run pytest

Run all tests

uv run pytest -k <expr>

Run a subset of tests

npx @modelcontextprotocol/inspector uv run python -m ciphersuite_mcp

Open the MCP Inspector UI

Available Tools

2 tools
decrypt_messageB

Decrypt a message that was encrypted with the encrypt_message tool

ParametersJSON Schema
NameRequiredDescriptionDefault
encryption_keyYes
encrypted_messageYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
decryptedMessageYes

TDQS

B3.2/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 of behavioral disclosure. It only states the action (decrypts) and offers no details about error handling, key requirements, output format, or side effects. This is a significant gap for a tool that could fail on wrong keys or invalid input.

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 sentence with no fluff, front-loading the action and resource. It is appropriately concise for a simple operation, though it sacrifices depth for brevity.

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?

While an output schema exists, the description lacks essential context such as key format, error behavior, or any caution about invalid inputs. For a tool with two required parameters and no annotations, this is insufficient for confident invocation.

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

Parameters1/5

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

The schema has 0% description coverage, so the description must explain the parameters. It does not mention encrypted_message or encryption_key at all, leaving the agent without any semantic guidance beyond the property names. This fails to add value over the schema.

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?

The description states a specific verb (Decrypt), a resource (message), and explicitly ties it to the encrypt_message tool, which clearly differentiates it from its sibling. This meets the highest bar for purpose clarity.

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

Usage Guidelines4/5

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

The description gives a clear prerequisite: the message must have been encrypted with encrypt_message. This tells the agent when the tool is applicable, though it doesn't explicitly mention when not to use it or name the sibling as the encryption counterpart. Still, the context is clear enough to guide usage.

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

encrypt_messageC

Encrypt a message

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYes
encryption_keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
encryptedMessageYes

TDQS

C2.9/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 restates the operation and gives no information about output format, encryption algorithm, error behavior, or what happens with different key formats. For a security-sensitive operation this is a significant gap.

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

Conciseness3/5

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

The description is extremely short and avoids redundancy, which is structurally clean. However, it is under-specified rather than economically informative; it essentially restates the tool name and leaves all behavioral and parameter details to be inferred.

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?

The tool has only two straightforward parameters and an output schema exists, so the description is minimally usable. But for an encryption operation, key handling, expected encryption scheme, and output characteristics are important context that is entirely absent.

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

Parameters2/5

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

Schema description coverage is 0%, and the description provides no additional meaning for the message or encryption_key parameters. The parameter names are self-explanatory, but the description does not compensate for the lack of schema documentation, such as expected key format, message encoding, or length constraints.

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 states a specific verb ('Encrypt') and resource ('a message'), making the core operation clear. It is differentiated from the sibling decrypt_message by semantic opposition, though it does not explicitly name or reference that sibling.

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 intended usage is implied by the tool name and the 'encrypt' verb, and the sibling is decrypt_message, so the context suggests when to use this tool. However, there is no explicit statement of when to use it instead of alternatives, no prerequisites, and no mention of key requirements.

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

B3.3/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have mutually exclusive and clearly defined purposes: one encrypts, the other decrypts. There is no possible confusion between them, as the operations are exact inverses and each description explicitly points to the other.

Naming Consistency5/5

Both tool names follow a consistent verb_noun pattern (encrypt_message, decrypt_message). The naming is predictable and symmetrical, making the intent immediately obvious without needing to read descriptions.

Tool Count3/5

With only two tools, the server covers a narrow but coherent feature set. While this is on the low end, it is not unreasonable for a dedicated cipher suite that aims to provide basic symmetric encryption and decryption. The count is thin, but not absurdly so for the stated scope.

Completeness3/5

The tool surface covers the fundamental encrypt/decrypt cycle, but lacks other expected operations in a cipher suite, such as key generation, rotation, or support for additional algorithms. For a simple utility, this might be sufficient, but it leaves notable gaps for real-world use cases.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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.
    -
  • F
    license
    A
    quality
    C
    maintenance
    Provides 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
    -
  • F
    license
    A
    quality
    C
    maintenance
    Enables AES-256-CBC encryption and decryption of messages with passphrase-derived keys, exposing tools, resources, and prompts for MCP clients like VS Code Copilot Chat.
    2
    -