{"_id":"@daniel.estrazulas/customers-mcp","name":"@daniel.estrazulas/customers-mcp","dist-tags":{"latest":"0.0.4"},"versions":{"0.0.4":{"name":"@daniel.estrazulas/customers-mcp","version":"0.0.4","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"},"gitHead":"e847a8d6b4f43c66af14308d5c8670186f854d7a","_id":"@daniel.estrazulas/customers-mcp@0.0.4","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-nEn5ZKcuGyDJf0NF6JECgz5C2UYmR5597DM5bTYmvHhmjca7Wq+UBgp1qzHEraFU25iYSwd6cFAIZxqo17oaUA==","shasum":"4ac8894865837b6aa6672db56fdfe2572712bdc4","tarball":"https://registry.npmjs.org/@daniel.estrazulas/customers-mcp/-/customers-mcp-0.0.4.tgz","fileCount":15,"unpackedSize":21725,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDlKu/Sx+FUutWurhX81xzr7sjQdj3mHvzFdS4X7scdpwIgYer5WneQ9j9xclIc04/wMSL1w735XZkqdJSzywMVbg8="}]},"_npmUser":{"name":"daniel.estrazulas","email":"daniel.estrazulas@gmail.com"},"directories":{},"maintainers":[{"name":"daniel.estrazulas","email":"daniel.estrazulas@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/customers-mcp_0.0.4_1780441464285_0.6236599112502563"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-02T23:04:23.849Z","0.0.4":"2026-06-02T23:04:24.469Z","modified":"2026-06-02T23:04:24.654Z"},"maintainers":[{"name":"daniel.estrazulas","email":"daniel.estrazulas@gmail.com"}],"description":"MCP server that exposes a customer CRUD API as tools for use with GitHub Copilot and other MCP-compatible agents","keywords":[],"author":{"name":"erickwendel"},"license":"ISC","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","_rev":"1-58261f3ec6ef665f640730ee8c5d48c8"}