{"_id":"@dennismozart/customers-mcp","_rev":"4-73e5587422420a2663cad928c171dca9","name":"@dennismozart/customers-mcp","dist-tags":{"latest":"0.0.9"},"versions":{"0.0.3":{"name":"@dennismozart/customers-mcp","version":"0.0.3","keywords":[],"author":{"name":"erickwendel"},"license":"ISC","_id":"@dennismozart/customers-mcp@0.0.3","maintainers":[{"name":"dennismozart","email":"dennis.mozart@gmail.com"}],"bin":{"customers-mcp":"src/index.ts"},"dist":{"shasum":"a09729267b44d6092c494a3273be4a0ad7c8993b","tarball":"https://registry.npmjs.org/@dennismozart/customers-mcp/-/customers-mcp-0.0.3.tgz","fileCount":15,"integrity":"sha512-pGcGPoVivNzLkngedmMbOZY3RAwuho4+Usiz6V45nSb9KP4pBy8tuHpt/LCW/69KINu+Fc4pq37+PPSkuCiIbw==","signatures":[{"sig":"MEQCIGiZVnP6n5IdGxek20uNPfbdtvsY9XgRhCyVdLTjytzhAiArXxJB2fl/n0GtFVPA4hoVdsKYJyN40hKvmZll2QK4FQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21715},"main":"index.js","type":"module","engines":{"node":"v24.14.0"},"scripts":{"dev":"node --watch --inspect src/index.ts","test":"node --test tests/**/*.test.ts","build":"chmod 755 src/index.ts","start":"node src/index.ts","test:dev":"node --inspect --test --watch tests/**/*.test.ts","test:e2e":"node --inspect --test tests/**/*e2e.test.ts","test:unit":"node --inspect --test tests/**/*unit.test.ts","mcp:inspect":"npx @modelcontextprotocol/inspector node src/index.ts","test:e2e:dev":"node --inspect --test --watch tests/**/*e2e.test.ts","registry:stop":"docker compose down","test:unit:dev":"node --inspect --test --watch tests/**/*unit.test.ts","registry:start":"docker compose up -d","release:public":"npm version patch && npm publish --access public --registry https://registry.npmjs.org/","release:private":"npm version patch && npm publish --registry http://localhost:4873","registry:login:public":"npm login --registry https://registry.npmjs.org/","registry:login:private":"npm login --registry http://localhost:4873"},"_npmUser":{"name":"dennismozart","email":"dennis.mozart@gmail.com"},"_npmVersion":"11.6.2","description":"MCP server that exposes a customer CRUD API as tools for use with GitHub Copilot and other MCP-compatible agents","directories":{},"_nodeVersion":"24.11.1","dependencies":{"tsx":"^4.21.0","zod":"^3.25.76","@types/node":"^24.11.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/customers-mcp_0.0.3_1782586601267_0.31190278002368865","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@dennismozart/customers-mcp","version":"0.0.7","keywords":[],"author":{"name":"erickwendel"},"license":"ISC","_id":"@dennismozart/customers-mcp@0.0.7","maintainers":[{"name":"dennismozart","email":"dennis.mozart@gmail.com"}],"bin":{"customers-mcp":"src/index.ts"},"dist":{"shasum":"481496ba183b94eb573066a09ef8b989d214b3e3","tarball":"https://registry.npmjs.org/@dennismozart/customers-mcp/-/customers-mcp-0.0.7.tgz","fileCount":15,"integrity":"sha512-psbDfYegF5X5mFGNWJIy4cskjc4MIDpyhtC6h+miUSVdVNY/zMJVs89ihLG+hJ1jYFAotIB8w551C92/t7G4EA==","signatures":[{"sig":"MEYCIQDu3KF3QA0W7l7MYkYovNd06WmFBzcPsLqJsWNiAwDbPwIhANHi8AxZ/vAIHdV39OBJ72yoETcWykbR4yk2Ll7aBpiI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21714},"main":"index.js","type":"module","engines":{"node":"v24.14.0"},"scripts":{"dev":"node --watch --inspect src/index.ts","test":"node --test tests/**/*.test.ts","build":"chmod 755 src/index.ts","start":"node src/index.ts","test:dev":"node --inspect --test --watch tests/**/*.test.ts","test:e2e":"node --inspect --test tests/**/*e2e.test.ts","test:unit":"node --inspect --test tests/**/*unit.test.ts","mcp:inspect":"npx @modelcontextprotocol/inspector node src/index.ts","test:e2e:dev":"node --inspect --test --watch tests/**/*e2e.test.ts","registry:stop":"docker compose down","test:unit:dev":"node --inspect --test --watch tests/**/*unit.test.ts","registry:start":"docker compose up -d","release:public":"npm version patch && npm publish --access public --registry https://registry.npmjs.org/","release:private":"npm version patch && npm publish --registry http://localhost:4873","registry:login:public":"npm login --registry https://registry.npmjs.org/","registry:login:private":"npm login --registry http://localhost:4873"},"_npmUser":{"name":"dennismozart","email":"dennis.mozart@gmail.com"},"_npmVersion":"11.6.2","description":"MCP server that exposes a customer CRUD API as tools for use with GitHub Copilot and other MCP-compatible agents","directories":{},"_nodeVersion":"24.11.1","dependencies":{"tsx":"^4.21.0","zod":"^3.25.76","@types/node":"^24.11.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/customers-mcp_0.0.7_1782588994951_0.6361200840040202","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@dennismozart/customers-mcp","version":"0.0.8","keywords":[],"author":{"name":"erickwendel"},"license":"ISC","_id":"@dennismozart/customers-mcp@0.0.8","maintainers":[{"name":"dennismozart","email":"dennis.mozart@gmail.com"}],"bin":{"customers-mcp":"src/index.ts"},"dist":{"shasum":"158f32ae854bb4b31f713599b17c5a8da362278b","tarball":"https://registry.npmjs.org/@dennismozart/customers-mcp/-/customers-mcp-0.0.8.tgz","fileCount":15,"integrity":"sha512-oEkPMu5LTNcqSELO2hn72gjOOWboDXKVu3TRwa1q8IijhPtYTNioPMwma1dZl4JTbfpKKqlh5o+YkqfGpAG4rA==","signatures":[{"sig":"MEUCICE4ACfnUhWwYcsG8F+gEwCr3RctxvZa37sIKIVt4kB5AiEAgsWmBHDnqV1beMPrbwVzDDrvP+C5Gnh5jioCTZ9idZg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21713},"main":"index.js","type":"module","engines":{"node":"v24.14.0"},"scripts":{"dev":"node --watch --inspect src/index.ts","test":"node --test tests/**/*.test.ts","build":"chmod 755 src/index.ts","start":"node src/index.ts","test:dev":"node --inspect --test --watch tests/**/*.test.ts","test:e2e":"node --inspect --test tests/**/*e2e.test.ts","test:unit":"node --inspect --test tests/**/*unit.test.ts","mcp:inspect":"npx @modelcontextprotocol/inspector node src/index.ts","test:e2e:dev":"node --inspect --test --watch tests/**/*e2e.test.ts","registry:stop":"docker compose down","test:unit:dev":"node --inspect --test --watch tests/**/*unit.test.ts","registry:start":"docker compose up -d","release:public":"npm version patch && npm publish --access public --registry https://registry.npmjs.org/","release:private":"npm version patch && npm publish --registry http://localhost:4873","registry:login:public":"npm login --registry https://registry.npmjs.org/","registry:login:private":"npm login --registry http://localhost:4873"},"_npmUser":{"name":"dennismozart","email":"dennis.mozart@gmail.com"},"_npmVersion":"11.6.2","description":"MCP server that exposes a customer CRUD API as tools for use with GitHub Copilot and other MCP-compatible agents","directories":{},"_nodeVersion":"24.11.1","dependencies":{"tsx":"^4.21.0","zod":"^3.25.76","@types/node":"^24.11.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/customers-mcp_0.0.8_1782589091732_0.21680261635578502","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"@dennismozart/customers-mcp","version":"0.0.9","description":"MCP server that exposes a customer CRUD API as tools for use with GitHub Copilot and other MCP-compatible agents","main":"index.js","bin":{"customers-mcp":"src/index.ts"},"scripts":{"build":"chmod 755 src/index.ts","start":"node src/index.ts","dev":"node --watch --inspect src/index.ts","test":"node --test tests/**/*.test.ts","mcp:inspect":"npx @modelcontextprotocol/inspector node src/index.ts","test:dev":"node --inspect --test --watch tests/**/*.test.ts","test:unit:dev":"node --inspect --test --watch tests/**/*unit.test.ts","test:unit":"node --inspect --test tests/**/*unit.test.ts","test:e2e:dev":"node --inspect --test --watch tests/**/*e2e.test.ts","test:e2e":"node --inspect --test tests/**/*e2e.test.ts","registry:start":"docker compose up -d","registry:stop":"docker compose down","registry:login:private":"npm login --registry http://localhost:4873","release:private":"npm version patch && npm publish --registry http://localhost:4873","registry:login:public":"npm login --registry https://registry.npmjs.org/","release:public":"npm version patch && npm publish --access public --registry https://registry.npmjs.org/"},"keywords":[],"author":{"name":"erickwendel"},"license":"ISC","type":"module","engines":{"node":"v24.14.0"},"dependencies":{"@modelcontextprotocol/sdk":"^1.27.1","@types/node":"^24.11.0","tsx":"^4.21.0","zod":"^3.25.76"},"_id":"@dennismozart/customers-mcp@0.0.9","_nodeVersion":"24.11.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-NjgBYbFIkE3ZA2l682TZVgLXOsc/OaAWmD40cTQOe/4vXi724lhSyHSzpVmar74Py2+QJ1Bn1aZkX1rgyD+pMw==","shasum":"b63e881cefbed1f6d761360a1c620067f3c87c73","tarball":"https://registry.npmjs.org/@dennismozart/customers-mcp/-/customers-mcp-0.0.9.tgz","fileCount":15,"unpackedSize":21713,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBWp7/7tZf37z/cvowUn+UoUituvypUy54TVW8UMpvf8AiB9414j6/WjddJA1mfxcU/GeeKws3vxu5/Ixeb6q1ZcFw=="}]},"_npmUser":{"name":"dennismozart","email":"dennis.mozart@gmail.com"},"directories":{},"maintainers":[{"name":"dennismozart","email":"dennis.mozart@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/customers-mcp_0.0.9_1782589165309_0.20628431620887255"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-27T18:56:41.127Z","modified":"2026-06-27T19:39:25.540Z","0.0.3":"2026-06-27T18:56:41.397Z","0.0.7":"2026-06-27T19:36:35.099Z","0.0.8":"2026-06-27T19:38:11.868Z","0.0.9":"2026-06-27T19:39:25.446Z"},"author":{"name":"erickwendel"},"license":"ISC","keywords":[],"description":"MCP server that exposes a customer CRUD API as tools for use with GitHub Copilot and other MCP-compatible agents","maintainers":[{"name":"dennismozart","email":"dennis.mozart@gmail.com"}],"readme":"# @erickwendel/ciphersuite-mcp\n\nAn [MCP (Model Context Protocol)](https://modelcontextprotocol.io) 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.\n\n---\n\n## What it does\n\n| Capability | Name | Description |\n|---|---|---|\n| 🔧 Tool | `encrypt_message` | Encrypts any plain-text message with a passphrase |\n| 🔧 Tool | `decrypt_message` | Decrypts a previously encrypted message with the same passphrase |\n| 📄 Resource | `encryption://info` | Returns details about the algorithm, key derivation, and output format |\n| 💬 Prompt | `encrypt_message_prompt` | Pre-built prompt that asks the agent to encrypt a message |\n| 💬 Prompt | `decrypt_message_prompt` | Pre-built prompt that asks the agent to decrypt a message |\n\n### How encryption works\n\n- **Algorithm**: AES-256-CBC\n- **Key derivation**: `scrypt(passphrase, fixedSalt, 32)` — you pass any passphrase string; the server derives a strong 32-byte key automatically\n- **Output format**: `<IV in hex>:<ciphertext in hex>` — keep the full string to decrypt later\n- **IV**: a fresh random 16-byte IV is generated on every encryption call, so the same message encrypted twice produces different output\n\n---\n\n## Prerequisites\n\n- **Node.js v24+** (see `engines` in `package.json`)\n\n---\n\n## Installation\n\n```bash\nnpm install\n```\n\nNo build step is needed — the server runs TypeScript directly via Node.js native TypeScript support.\n\n---\n\n## Using in VS Code\n\n### 1. Add the MCP server configuration\n\nCreate (or open) `.vscode/mcp.json` in your workspace and add:\n\n```json\n{\n  \"servers\": {\n    \"ciphersuite-mcp\": {\n      \"command\": \"node\",\n      \"args\": [\"--experimental-strip-types\", \"ABSOLUTE_PATH_TO_PROJECT/src/index.ts\"]\n    }\n  }\n}\n```\n\nor via npm\n```json\n{\n  \"servers\": {\n    \"ciphersuite-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@erickwendel/ciphersuite-mcp\"]\n    }\n  }\n}\n```\n\n> **Tip:** You can also add this server to your user-level MCP config at `~/.vscode/mcp.json` to make it available in every workspace.\n\n### 2. Reload VS Code\n\nOpen the Command Palette (`Cmd+Shift+P`) and run **Developer: Reload Window** (or just restart VS Code).\n\n### 3. Use it in Copilot Chat\n\nOpen Copilot Chat (Agent mode) and try:\n\n```\nEncrypt the message \"Hello, World!\" using the passphrase \"my-secret-key\"\n```\n\n```\nDecrypt this message: a3f1...:<ciphertext> using the passphrase \"my-secret-key\"\n```\n\n```\nShow me the encryption://info resource\n```\n\nThe agent will automatically call the appropriate tool and return the result.\n\n---\n\n## Running the MCP Inspector\n\nThe MCP Inspector lets you explore and test all tools, resources, and prompts interactively in a browser UI:\n\n```bash\nnpm run mcp:inspect\n```\n\nThis opens the inspector at `http://localhost:5173` and connects it to the running server.\n\n---\n\n## Running tests\n\n```bash\n# Run all tests once\nnpm test\n\n# Run tests in watch mode (with debugger)\nnpm run test:dev\n```\n\nThe test suite covers:\n\n- Encrypting a message\n- Decrypting a message with the correct passphrase\n- Listing and reading the `encryption://info` resource\n- Fetching both prompts\n- Error: decrypting with the wrong passphrase\n- Error: decrypting a malformed ciphertext\n\n---\n\n## Project structure\n\n```\nsrc/\n  index.ts   # Entry point — connects the server to stdio transport\n  mcp.ts     # All tools, resources, and prompts are registered here\ntests/\n  mcp.test.ts\n```\n\n---\n\n## Available scripts\n\n| Script | Description |\n|---|---|\n| `npm start` | Start the server (used by MCP clients) |\n| `npm run dev` | Start with file-watch and Node.js inspector |\n| `npm test` | Run all tests |\n| `npm run test:dev` | Run tests in watch mode |\n| `npm run mcp:inspect` | Open the MCP Inspector UI |\n","readmeFilename":"README.md"}