{"_id":"@alsania-io/mcp","_rev":"6-1a1f91db1f7d77178329a361a11aec71","name":"@alsania-io/mcp","dist-tags":{"latest":"1.0.4"},"versions":{"1.0.0":{"name":"@alsania-io/mcp","version":"1.0.0","keywords":["alsaniamcp","mcp","model-context-protocol","ai","proxy","voice","universal-mcp"],"author":"","license":"MIT","_id":"@alsania-io/mcp@1.0.0","maintainers":[{"name":"sigmasauer07","email":"sigma.sauer07@gmail.com"},{"name":"echo-dev","email":"alsaniasoftware@gmail.com"}],"homepage":"https://github.com/alsania-dev/alsaniamcp#readme","bugs":{"url":"https://github.com/alsania-dev/alsaniamcp/issues"},"bin":{"amcp":"dist/cli.js","alsaniamcp":"dist/cli.js"},"dist":{"shasum":"edd2b55b49f597780f797a635fda989df82d53f5","tarball":"https://registry.npmjs.org/@alsania-io/mcp/-/mcp-1.0.0.tgz","fileCount":67,"integrity":"sha512-bTItvJhkO2CufyfDQpYNNzEdgkwJQAUou5AQAhtt+nMF8XMIXofRvuuAftW3B16NEXIYRDqIuJx7GGy8z/mKcA==","signatures":[{"sig":"MEUCIQDUMZIRghZgjKkjMq5bNPJder3ebhy3jwom6st7qA43GQIgKVY8beDzZLOuYeoMxaWC81dPwdrFZczIS9FkG99MjBg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":769984},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"88f9fd6c0f217104abd878430ae12c9f22dac181","scripts":{"cli":"tsx src/cli.ts","dev":"tsx watch src/index.ts","build":"tsc","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"sigmasauer07","email":"sigma.sauer07@gmail.com"},"repository":{"url":"git+https://github.com/alsania-dev/alsaniamcp.git","type":"git"},"_npmVersion":"11.6.1","description":"AlsaniaMCP - Universal MCP proxy server with dynamic tool registry, AI communication, and voice activation","directories":{},"_nodeVersion":"22.19.0","dependencies":{"ws":"^8.18.3","ora":"^9.0.0","tsx":"^4.20.6","zod":"^3.25.76","chalk":"^5.6.2","dotenv":"^17.2.3","nanoid":"^5.1.6","express":"^5.1.0","nodemon":"^3.1.10","@types/ws":"^8.18.1","commander":"^14.0.1","typescript":"^5.9.3","@types/node":"^24.7.0","cross-spawn":"^7.0.6","jsonwebtoken":"^9.0.2","@noble/hashes":"^2.0.1","@types/express":"^5.0.3","@types/jsonwebtoken":"^9.0.10","@modelcontextprotocol/sdk":"^1.19.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp_1.0.0_1760276937827_0.26848351227904144","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@alsania-io/mcp","version":"1.0.1","keywords":["alsaniamcp","mcp","model-context-protocol","ai","proxy","voice","universal-mcp"],"author":"","license":"MIT","_id":"@alsania-io/mcp@1.0.1","maintainers":[{"name":"sigmasauer07","email":"sigma.sauer07@gmail.com"},{"name":"echo-dev","email":"alsaniasoftware@gmail.com"},{"name":"sigmasauer-dev","email":"sigmasauer.dev@gmail.com"}],"homepage":"https://github.com/alsania-dev/alsaniamcp#readme","bugs":{"url":"https://github.com/alsania-dev/alsaniamcp/issues"},"bin":{"amcp":"dist/cli.js","alsaniamcp":"dist/cli.js"},"dist":{"shasum":"35ffffe23383c9c70a96d3e2be0c105cc17c6033","tarball":"https://registry.npmjs.org/@alsania-io/mcp/-/mcp-1.0.1.tgz","fileCount":80,"integrity":"sha512-kgQyuOx9xCdot6Py426rAcLzzhXc5V2ud0yIe+E3oh/Y8wzsrvlJSkL5eJOn5wMAXbXu5jsa4trVlTDmgFfa0w==","signatures":[{"sig":"MEUCIDVUxD8BDPSVOH1NLAGYiArywnpLLilEkn1H51o5ChjHAiEAy/09FMbmVz+SBUWcIMQeabrcCK5gzcndIKREGTOfCdQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":420240},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","scripts":{"cli":"tsx src/cli.ts","dev":"tsx watch src/index.ts","test":"jest","build":"tsc","start":"node dist/index.js","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"sigmasauer07","email":"sigma.sauer07@gmail.com"},"repository":{"url":"git+https://github.com/alsania-dev/alsaniamcp.git","type":"git"},"_npmVersion":"11.6.2","description":"AlsaniaMCP - Universal MCP proxy server with dynamic tool registry, AI communication, and voice activation","directories":{},"_nodeVersion":"22.19.0","dependencies":{"ws":"^8.18.3","ora":"^9.0.0","tsx":"^4.20.6","zod":"^3.25.76","chalk":"^5.6.2","dotenv":"^17.2.3","nanoid":"^5.1.6","express":"^5.1.0","nodemon":"^3.1.10","@types/ws":"^8.18.1","commander":"^14.0.1","typescript":"^5.9.3","@types/node":"^24.7.0","cross-spawn":"^7.0.6","jsonwebtoken":"^9.0.2","@noble/hashes":"^2.0.1","@genkit-ai/mcp":"^1.21.0","@types/express":"^5.0.3","@types/jsonwebtoken":"^9.0.10","@modelcontextprotocol/sdk":"^1.19.1"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.2","supertest":"^7.0.0","@types/jest":"^29.5.12","@types/supertest":"^6.0.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp_1.0.1_1760603750594_0.0632101218960166","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@alsania-io/mcp","version":"1.0.2","keywords":["alsaniamcp","mcp","model-context-protocol","ai","proxy","stdio","sse","http","websocket","stream","bridge","gateway","voice","universal"],"author":{"name":"Alsania"},"license":"MIT","_id":"@alsania-io/mcp@1.0.2","maintainers":[{"name":"sigmasauer07","email":"sigma.sauer07@gmail.com"},{"name":"echo-dev","email":"alsaniasoftware@gmail.com"},{"name":"sigmasauer-dev","email":"sigmasauer.dev@gmail.com"}],"homepage":"https://github.com/alsania-io/alsaniamcp#readme","bugs":{"url":"https://github.com/alsania-io/alsaniamcp/issues"},"bin":{"amcp":"dist/cli.js","alsaniamcp":"dist/cli.js"},"dist":{"shasum":"3cd4185a4279aeff897a71f973e416cd5c4036bf","tarball":"https://registry.npmjs.org/@alsania-io/mcp/-/mcp-1.0.2.tgz","fileCount":332,"integrity":"sha512-dLu50cDSFkmSRWHK/eQjYpOI31IuXkvY+BtNCPmZXrd1+AjNPJX5vSnqrVo7R1DOKGPIb6YkeOwFAqRNtOZ3XA==","signatures":[{"sig":"MEUCIQDPXfzMKoxCNC4x5MeYB4I+eOliGBMzR7HgYqp4oNlMKgIgOAyVMOkDkigz7zZfsVr5p48Ogmk8Wu4PlkdEZvISwj4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3982398},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","$schema":"https://json.schemastore.org/package.json","gitHead":"2aa3c2066e89736d6bec8dff1c44adc1c1051809","scripts":{"ci":"npm run clean && npm run prepare-env && npm run lint && npm run type-check && npm run build && npm run test:coverage && npm run security:scan","cli":"tsx src/cli.ts","dev":"tsx watch src/index.ts","lint":"eslint src/**/*.ts tests/**/*.ts --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist coverage .nyc_output tests/reports","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\" \"*.{json,md,yml,yaml}\"","lint:fix":"eslint src/**/*.ts tests/**/*.ts --ext .ts --fix","test:e2e":"jest --testPathPattern=tests/e2e","test:unit":"jest --testPathPattern=tests/unit","test:watch":"jest --watch","type-check":"tsc --noEmit","prepare-env":"node -e \"if (!require('fs').existsSync('.env')) { console.log('Create .env file manually'); } else { console.log('Environment file exists'); }\"","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\" \"*.{json,md,yml,yaml}\"","security:scan":"npm run security:audit && echo '=== TruffleHog Secret Scan ===' && trufflehog3 filesystem . --no-fail --json | head -20","test:coverage":"jest --coverage","prepublishOnly":"npm run build && npm run test:coverage","security:audit":"npm audit --audit-level=moderate","performance:test":"artillery run tests/performance/load-test.yml","test:integration":"jest --testPathPattern=tests/integration","accessibility:test":"echo 'Accessibility testing not fully configured yet'","performance:report":"artillery report tests/performance/reports/*.json"},"_npmUser":{"name":"sigmasauer07","email":"sigma.sauer07@gmail.com"},"repository":{"url":"git+https://github.com/alsania-io/alsaniamcp.git","type":"git"},"_npmVersion":"11.6.2","description":"AlsaniaMCP - Universal MCP proxy server with dynamic tool registry, AI communication, and voice activation","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.19.0","dependencies":{"ws":"^8.18.3","ora":"^9.0.0","tsx":"^4.20.6","zod":"^3.25.76","chalk":"^5.6.2","yargs":"^18.0.0","dotenv":"^17.2.3","nanoid":"^5.1.6","express":"^5.1.0","commander":"^14.0.2","cross-spawn":"^7.0.6","jsonwebtoken":"^9.0.2","@noble/hashes":"^2.0.1","@genkit-ai/mcp":"^1.22.0","@modelcontextprotocol/sdk":"^1.21.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","jest":"^30.2.0","axios":"^1.13.1","eslint":"^9.39.0","nodemon":"^3.1.10","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/ws":"^8.18.1","artillery":"^2.0.26","supertest":"^7.1.4","@types/ora":"^3.2.0","lighthouse":"^13.0.1","trufflehog":"^0.0.5","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^24.9.2","@types/express":"^5.0.5","@types/supertest":"^6.0.3","@types/jsonwebtoken":"^9.0.10","jest-environment-node":"^30.2.0","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","eslint-plugin-security":"^3.0.1","@typescript-eslint/parser":"^8.46.2","prev-modelcontextprotocol-sdk":"npm:@modelcontextprotocol/sdk@^1.20.2","@typescript-eslint/eslint-plugin":"^8.46.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp_1.0.2_1762365379208_0.7719922710765259","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@alsania-io/mcp","version":"1.0.3","keywords":["alsaniamcp","mcp","model-context-protocol","ai","proxy","stdio","sse","http","websocket","stream","bridge","gateway","voice","universal"],"author":{"name":"Alsania"},"license":"MIT","_id":"@alsania-io/mcp@1.0.3","maintainers":[{"name":"sigmasauer07","email":"sigma.sauer07@gmail.com"},{"name":"echo-dev","email":"alsaniasoftware@gmail.com"},{"name":"sigmasauer-dev","email":"sigmasauer.dev@gmail.com"}],"homepage":"https://github.com/alsania-io/alsaniamcp#readme","bugs":{"url":"https://github.com/alsania-io/alsaniamcp/issues"},"bin":{"amcp":"dist/cli.js","alsaniamcp":"dist/cli.js"},"dist":{"shasum":"d2ad69cda6684132258843f88001d5dba64b57d8","tarball":"https://registry.npmjs.org/@alsania-io/mcp/-/mcp-1.0.3.tgz","fileCount":341,"integrity":"sha512-FkuA/V0SyOAgRzv3MgRSuYVwJRAKtECagXEa7sN0GnhaQpWgSIbMENk2or6f0I5RdNXK159zOhr1dR4nTbR+fg==","signatures":[{"sig":"MEYCIQDAIxzIYapa5iznuQD4AWVfEwHD6wNqmhsP4ypA/r1YxAIhAMJct7IkMfCj15dx/rR/59g4C9GjYZPOBH+CoReHW9ck","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4210203},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","$schema":"https://json.schemastore.org/package.json","gitHead":"2aa3c2066e89736d6bec8dff1c44adc1c1051809","scripts":{"ci":"npm run clean && npm run prepare-env && npm run lint && npm run type-check && npm run build && npm run test:coverage && npm run security:scan","cli":"tsx src/cli.ts","dev":"tsx watch src/index.ts","lint":"eslint src/**/*.ts tests/**/*.ts --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist coverage .nyc_output tests/reports","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\" \"*.{json,md,yml,yaml}\"","lint:fix":"eslint src/**/*.ts tests/**/*.ts --ext .ts --fix","test:e2e":"jest --testPathPattern=tests/e2e","test:unit":"jest --testPathPattern=tests/unit","test:watch":"jest --watch","type-check":"tsc --noEmit","prepare-env":"node -e \"if (!require('fs').existsSync('.env')) { console.log('Create .env file manually'); } else { console.log('Environment file exists'); }\"","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\" \"*.{json,md,yml,yaml}\"","security:scan":"npm run security:audit && echo '=== TruffleHog Secret Scan ===' && trufflehog3 filesystem . --no-fail --json | head -20","test:coverage":"jest --coverage","prepublishOnly":"npm run build","security:audit":"npm audit --audit-level=moderate","performance:test":"artillery run tests/performance/load-test.yml","test:integration":"jest --testPathPattern=tests/integration","accessibility:test":"echo 'Accessibility testing not fully configured yet'","performance:report":"artillery report tests/performance/reports/*.json"},"_npmUser":{"name":"sigmasauer07","email":"sigma.sauer07@gmail.com"},"repository":{"url":"git+https://github.com/alsania-io/alsaniamcp.git","type":"git"},"_npmVersion":"11.6.2","description":"AlsaniaMCP - Universal MCP proxy server with dynamic tool registry, AI communication, and voice activation","directories":{"doc":"docs","test":"tests"},"_nodeVersion":"22.19.0","dependencies":{"ws":"^8.18.3","ora":"^9.0.0","tsx":"^4.20.6","zod":"^3.25.76","chalk":"^5.6.2","yargs":"^18.0.0","dotenv":"^17.2.3","nanoid":"^5.1.6","express":"^5.1.0","commander":"^14.0.2","cross-spawn":"^7.0.6","jsonwebtoken":"^9.0.2","@noble/hashes":"^2.0.1","@genkit-ai/mcp":"^1.24.0","@modelcontextprotocol/sdk":"^1.21.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^17.1.0","jest":"^30.2.0","axios":"^1.13.1","eslint":"^9.39.0","nodemon":"^3.1.10","ts-jest":"^29.4.5","prettier":"^3.6.2","@types/ws":"^8.18.1","artillery":"^2.0.26","supertest":"^7.1.4","@types/ora":"^3.2.0","lighthouse":"^13.0.1","trufflehog":"^0.0.5","typescript":"^5.9.3","@types/jest":"^30.0.0","@types/node":"^24.9.2","@types/express":"^5.0.5","@types/supertest":"^6.0.3","@types/jsonwebtoken":"^9.0.10","jest-environment-node":"^30.2.0","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","eslint-plugin-security":"^3.0.1","@typescript-eslint/parser":"^8.46.2","prev-modelcontextprotocol-sdk":"npm:@modelcontextprotocol/sdk@^1.20.2","@typescript-eslint/eslint-plugin":"^8.46.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp_1.0.3_1763631362945_0.6862096428818452","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"$schema":"https://json.schemastore.org/package.json","name":"@alsania-io/mcp","version":"1.0.4","description":"AlsaniaMCP - Universal MCP proxy server with dynamic tool registry, AI communication, and voice activation","keywords":["alsaniamcp","mcp","model-context-protocol","ai","proxy","stdio","sse","http","websocket","stream","bridge","gateway","voice","universal"],"homepage":"https://github.com/alsania-dev/alsaniamcp#readme","bugs":{"url":"https://github.com/alsania-dev/alsaniamcp/issues"},"repository":{"type":"git","url":"git+https://github.com/alsania-dev/alsaniamcp.git"},"license":"MIT","author":{"name":"Alsania"},"type":"module","main":"dist/index.js","types":"./dist/index.d.ts","bin":{"alsaniamcp":"dist/cli.js","amcp":"dist/cli.js"},"directories":{"doc":"docs","test":"tests"},"scripts":{"dev":"tsx watch src/index.ts","build":"tsc","start":"node dist/index.js","cli":"tsx src/cli.ts","test":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage","test:unit":"jest --testPathPattern=tests/unit","test:integration":"jest --testPathPattern=tests/integration","test:e2e":"jest --testPathPattern=tests/e2e","lint":"eslint src/**/*.ts tests/**/*.ts --ext .ts","lint:fix":"eslint src/**/*.ts tests/**/*.ts --ext .ts --fix","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\" \"*.{json,md,yml,yaml}\"","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\" \"*.{json,md,yml,yaml}\"","type-check":"tsc --noEmit","security:audit":"npm audit --audit-level=moderate","security:scan":"npm run security:audit && echo '=== TruffleHog Secret Scan ===' && trufflehog3 filesystem . --no-fail --json | head -20","performance:test":"artillery run tests/performance/load-test.yml","performance:report":"artillery report tests/performance/reports/*.json","accessibility:test":"echo 'Accessibility testing not fully configured yet'","clean":"rm -rf dist coverage .nyc_output tests/reports","prepare-env":"node -e \"if (!require('fs').existsSync('.env')) { console.log('Create .env file manually'); } else { console.log('Environment file exists'); }\"","ci":"npm run clean && npm run prepare-env && npm run lint && npm run type-check && npm run build && npm run test:coverage && npm run security:scan","prepublishOnly":"npm run build"},"dependencies":{"@genkit-ai/mcp":"^1.24.0","@modelcontextprotocol/sdk":"^1.22.0","@noble/hashes":"^2.0.1","chalk":"^5.6.2","commander":"^14.0.2","cross-spawn":"^7.0.6","dotenv":"^17.2.3","express":"^5.1.0","jsonwebtoken":"^9.0.2","nanoid":"^5.1.6","ora":"^9.0.0","tsx":"^4.20.6","ws":"^8.18.3","yargs":"^18.0.0","zod":"^3.25.76"},"devDependencies":{"@types/express":"^5.0.5","@types/jest":"^30.0.0","@types/jsonwebtoken":"^9.0.10","@types/node":"^24.10.1","@types/ora":"^3.2.0","@types/supertest":"^6.0.3","@types/ws":"^8.18.1","@typescript-eslint/eslint-plugin":"^8.47.0","@typescript-eslint/parser":"^8.47.0","artillery":"^2.0.26","axios":"^1.13.1","eslint":"^9.39.0","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","eslint-plugin-security":"^3.0.1","jest":"^30.2.0","jest-environment-node":"^30.2.0","lighthouse":"^13.0.1","nodemon":"^3.1.10","nyc":"^17.1.0","prettier":"^3.6.2","prev-modelcontextprotocol-sdk":"npm:@modelcontextprotocol/sdk@^1.20.2","supertest":"^7.1.4","trufflehog":"^0.0.5","ts-jest":"^29.4.5","typescript":"^5.9.3"},"gitHead":"2aa3c2066e89736d6bec8dff1c44adc1c1051809","_id":"@alsania-io/mcp@1.0.4","_nodeVersion":"22.19.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-HplP/ZiHpxAba6218H7UkpIdhgYaaGaRhHL7pipLWU53PYRORkGTt83h03Xm2jLn3fukkwz/6Gk8BdnncG59Cw==","shasum":"7b10704b4e8688d56de1c58582648a331e778e69","tarball":"https://registry.npmjs.org/@alsania-io/mcp/-/mcp-1.0.4.tgz","fileCount":342,"unpackedSize":4214295,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDCnbQStaVn1H0EjU4myKZyLot3MkLi9UDsLY0YRg0ZMAIhAPl30aDiLD7ylqy1VUpZTHqfeAFzT7QsJshUrrDLbYOE"}]},"_npmUser":{"name":"sigmasauer07","email":"sigma.sauer07@gmail.com"},"maintainers":[{"name":"sigmasauer07","email":"sigma.sauer07@gmail.com"},{"name":"echo-dev","email":"alsaniasoftware@gmail.com"},{"name":"sigmasauer-dev","email":"sigmasauer.dev@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp_1.0.4_1763632497240_0.4361640504308548"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-12T13:48:57.726Z","modified":"2025-11-20T09:54:57.685Z","1.0.0":"2025-10-12T13:48:58.049Z","1.0.1":"2025-10-16T08:35:50.757Z","1.0.2":"2025-11-05T17:56:19.462Z","1.0.3":"2025-11-20T09:36:03.143Z","1.0.4":"2025-11-20T09:54:57.466Z"},"bugs":{"url":"https://github.com/alsania-dev/alsaniamcp/issues"},"author":{"name":"Alsania"},"license":"MIT","homepage":"https://github.com/alsania-dev/alsaniamcp#readme","keywords":["alsaniamcp","mcp","model-context-protocol","ai","proxy","stdio","sse","http","websocket","stream","bridge","gateway","voice","universal"],"repository":{"type":"git","url":"git+https://github.com/alsania-dev/alsaniamcp.git"},"description":"AlsaniaMCP - Universal MCP proxy server with dynamic tool registry, AI communication, and voice activation","maintainers":[{"name":"sigmasauer07","email":"sigma.sauer07@gmail.com"},{"name":"echo-dev","email":"alsaniasoftware@gmail.com"},{"name":"sigmasauer-dev","email":"sigmasauer.dev@gmail.com"}],"readme":"# AlsaniaMCP 🌐\n\n> Universal Model Context Protocol (MCP) server with dynamic proxy, multi-transport support, and AI-to-AI communication capabilities\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.x-blue.svg)](https://www.typescriptlang.org/)\n[![MCP SDK](https://img.shields.io/badge/MCP_SDK-latest-green.svg)](https://modelcontextprotocol.io)\n\n## ✨ Features\n\n- 🔄 **Universal MCP Proxy** - Acts as a 2-way gateway between AI systems and MCP servers\n- 🌍 **Multi-Transport Support** - STDIO, HTTP/SSE, and Streamable HTTP transports\n- 🎯 **Dynamic Tool Registry** - On-demand loading/unloading of tools from multiple servers\n- 🔌 **HTTP Gateway** - RESTful API with Server-Sent Events for streaming\n- 🔐 **Secure** - JWT authentication and BLAKE3 hashing\n- 🐳 **Docker Ready** - Easy deployment with Docker and docker-compose\n- 📦 **NPX Support** - Install and run with `npx @alsania-io/mcp`\n\n## 🚀 Quick Start\n\n### Using NPX (Easiest)\n\n```bash\nnpx -y @alsania-io/mcp start\n```\n\n### Using Docker\n\n```bash\n# Pull and run\ndocker run -p 8050:8050 alsania-io/mcp:latest\n\n# Or with docker-compose\ndocker-compose up\n```\n\n### Local Development\n\n```bash\n# Install dependencies\nnpm install\n\n# Start development server\nnpm run dev\n\n# Build\nnpm run build\n\n# Start production server\nnpm start\n```\n\n## 📡 Transport Layer\n\nAlsaniaMCP supports three transport mechanisms:\n\n### 1. STDIO Transport (Local MCP Servers)\nConnect to local MCP servers via stdin/stdout:\n```bash\n# Server automatically uses STDIO for local communication\n```\n\n### 2. HTTP/SSE Gateway (Remote Clients)\nExpose tools to remote clients via HTTP REST API:\n- **Base URL**: `http://localhost:8050`\n- **SSE Stream**: `http://localhost:8050/sse`\n- **Streamable HTTP**: `http://localhost:8050/mcp`\n- **Health Check**: `http://localhost:8050/health`\n\n### 3. HTTP Proxy Transport (Remote MCP Servers)\nConnect to remote MCP servers using Streamable HTTP:\n```bash\nPOST /proxy/connect\n{\n  \"id\": \"remote-server\",\n  \"transport\": \"http\",\n  \"endpoint\": \"http://remote-mcp-server.com/mcp\"\n}\n```\n\n## 🛠️ API Endpoints\n\n**Base URL**: `http://localhost:8050`\n\n### Core Endpoints\n- `GET /health` - ✅ Health check\n- `GET /stream` - SSE streaming endpoint for notifications\n- `GET /tools` - ✅ List all available tools\n- `GET /openapi.json` - OpenAPI specification\n\n### A2A Communication Endpoints\n- `GET /a2a/peers` - ✅ List all connected AI peers\n- `POST /a2a/register` - ✅ Register a new AI peer\n- `POST /a2a/message` - ✅ Send message to AI peer\n- `GET /a2a/inbox` - ✅ Get message inbox\n- `GET /a2a/status` - ✅ Get A2A system status\n\n### Tool Execution (via Gateway)\n- `POST /gateway` - Execute tools through gateway\n- `POST /mcp` - Direct MCP protocol endpoint\n\n### Available A2A Tools (Registered)\n- `a2a/list_peers` - List connected AI peers\n- `a2a/connect_peer` - Connect to MCP servers\n- `a2a/send_message` - Send messages between AIs\n- `a2a/execute_remote_tool` - Execute tools on remote servers\n- `a2a/spawn_remote_server` - Spawn servers on remote peers\n- `core/echo` - Echo test tool\n\n## 📋 Usage Examples\n\n### Connect to Remote MCP Server\n```bash\ncurl -X POST http://localhost:8050/proxy/connect \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"id\": \"mcpnyx\",\n    \"transport\": \"http\",\n    \"endpoint\": \"http://localhost:3055/mcp\"\n  }'\n```\n\n### Call a Tool\n```bash\ncurl -X POST http://localhost:8050/message \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"serverId\": \"core\",\n    \"toolName\": \"echo\",\n    \"args\": {\"message\": \"Hello AlsaniaMCP!\"}\n  }'\n```\n\n### List All Tools\n```bash\ncurl http://localhost:8050/tools\n```\n\n### Stream Notifications (SSE)\n```bash\ncurl -N http://localhost:8050/sse\n```\n\n## 🏗️ Architecture\n\n```\n┌─────────────────────────────────────────┐\n│          AlsaniaMCP Server              │\n│  ┌──────────────────────────────────┐   │\n│  │   UniversalMCPServer             │   │\n│  │   - Tool Registry                │   │\n│  │   - Resource Registry            │   │\n│  │   - Prompt Registry              │   │\n│  └──────────────────────────────────┘   │\n│                                          │\n│  ┌──────────────────────────────────┐   │\n│  │   MCPProxyManager                │   │\n│  │   - STDIO Transport              │   │\n│  │   - HTTP Transport               │   │\n│  │   - Dynamic Loading              │   │\n│  └──────────────────────────────────┘   │\n│                                          │\n│  ┌──────────────────────────────────┐   │\n│  │   HTTPGateway                    │   │\n│  │   - REST API                     │   │\n│  │   - SSE Streaming                │   │\n│  │   - Proxy Endpoints              │   │\n│  └──────────────────────────────────┘   │\n└─────────────────────────────────────────┘\n```\n\n## 🔧 Configuration\n\n### Environment Variables\n- `PORT` - HTTP gateway port (default: 8050)\n- `SESSION_SECRET` - JWT secret for authentication\n- `NODE_ENV` - Environment (development/production)\n\n### Server Configuration Example\n```typescript\nconst config: MCPServerConfig = {\n  id: 'my-server',\n  transport: 'http',\n  endpoint: 'http://localhost:3000/mcp',\n  lifespan: 3600000, // 1 hour\n  permissions: {\n    tools: ['read', 'write'],\n    resources: ['read']\n  }\n};\n```\n\n## 🔒 Security\n\n- **JWT Authentication** - Secure session management\n- **BLAKE3 Hashing** - Fast and secure cryptographic hashing\n- **Environment Secrets** - API keys stored in environment variables\n- **Input Validation** - Zod schema validation for all inputs\n\n## 📦 CLI Commands\n\nAlsaniaMCP provides a comprehensive command-line interface for managing all server operations, communication, voice features, and tool execution.\n\n### Server Management\n\n```bash\n# Start the server\nalsaniamcp server start [-p <port>] [-d] [-v] [-c <config>]\n\n# Stop the server\nalsaniamcp server stop [-p <port>] [-f]\n\n# Check server status\nalsaniamcp server status [-p <port>] [-d]\n\n# View server logs\nalsaniamcp server logs [-f] [-n <lines>]\n\n# Aliases: amcp server start, alsaniamcp/amcp\n```\n\n### Voice Control\n\n```bash\n# Check voice API support\nalsaniamcp voice check\n\n# Show voice configuration\nalsaniamcp voice config\n```\n\n### AI-to-AI Communication\n\n```bash\n# List connected AI peers\nalsaniamcp comm peers\n\n# Send message to specific peer\nalsaniamcp comm send <peerId> \"<message>\"\n\n# Broadcast message to all peers\nalsaniamcp comm broadcast \"<message>\"\n```\n\n### Dynamic Server Spawning\n\n```bash\n# List available server configurations\nalsaniamcp spawn list\n\n# Start a predefined MCP server\nalsaniamcp spawn start <type> # type: filesystem|git|github\n\n# Stop a spawned server\nalsaniamcp spawn stop <serverId>\n\n# Show server status\nalsaniamcp spawn status\n```\n\n### Tool Management\n\n```bash\n# List available MCP tools\nalsaniamcp tools list [-s <serverId>]\n\n# Call an MCP tool\nalsaniamcp tools call <serverId> <toolName> [-a <json-args>]\n```\n\n### Configuration\n\n```bash\n# Initialize configuration files\nalsaniamcp config init [-f]\n\n# Validate current configuration\nalsaniamcp config validate\n```\n\n### Legacy Commands (Backward Compatible)\n\n```bash\n# Deprecated - use \"server start\" instead\nalsaniamcp start\n\n# Deprecated - use \"config init\" instead\nalsaniamcp init\n\n# Deprecated - use \"comm\" commands instead\nalsaniamcp proxy\n```\n\n## 🐳 Docker Deployment\n\n### Build Image\n```bash\ndocker build -t alsaniamcp/mcp:latest .\n```\n\n### Run Container\n```bash\ndocker run -d \\\n  -p 8050:8050 \\\n  -e SESSION_SECRET=your-secret-here \\\n  --name alsaniamcp \\\n  alsaniamcp/mcp:latest\n```\n\n### Docker Compose\n```bash\ndocker-compose up -d\n```\n\n## 🧪 Development\n\n### Project Structure\n```\nsrc/\n├── cli/            # CLI command handlers\n├── communication/  # AI-to-AI communication\n│   └── a2a.ts      # AI-to-AI communication logic\n├── core/           # Core MCP server implementation\n│   └── server.ts   # Universal MCP server\n├── proxy/          # MCP proxy manager\n│   └── mcp-proxy.ts# MCP proxy implementation\n├── security/       # Security utilities\n├── spawner/        # Dynamic server spawning\n├── transport/      # HTTP gateway and transports\n│   └── http-gateway.ts # HTTP gateway implementation\n├── types/          # TypeScript type definitions\n│   └── index.ts    # Type definitions\n├── utils/          # Utility functions\n│   └── hash.ts     # BLAKE3 hashing utilities\n├── voice/          # Voice activation and processing\n├── cli.ts          # CLI implementation\n└── index.ts        # Entry point\n```\n\n### Scripts\n- `npm run dev` - Start development server with watch mode\n- `npm run build` - Build TypeScript to JavaScript\n- `npm start` - Start production server (verified working)\n- `npm run cli` - Run CLI commands\n- `npm test` - Run tests (tests to be implemented)\n\n## ✅ Current Status (Updated 2025-10-29)\n\n### ✅ Verified Working\n- ✅ Dependencies installed (199 packages, 0 vulnerabilities)\n- ✅ TypeScript build successful\n- ✅ Production server starts and runs\n- ✅ Docker setup configured (Docker 28.2.2, docker-compose 1.29.2)\n- ✅ Multi-transport support (STDIO, HTTP/SSE, Streamable HTTP)\n- ✅ JWT authentication and BLAKE3 hashing implemented\n- ✅ REST API with Server-Sent Events for streaming\n- ✅ **A2A Communication System** - AI-to-AI messaging fully operational\n- ✅ **A2A Tool Registration** - All A2A tools properly registered and accessible\n- ✅ **HTTP Gateway Integration** - A2A endpoints integrated with HTTP gateway\n\n### 🏗️ Architecture Components\n- ✅ Universal MCP Server with tool/resource/prompt registries\n- ✅ MCP Proxy Manager with dynamic loading/unloading\n- ✅ HTTP Gateway with REST API and SSE streaming\n- ✅ CLI interface (`alsaniamcp` / `amcp` commands)\n- ✅ **AI-to-AI Communication Framework** - ✅ FULLY OPERATIONAL\n- ✅ Voice activation and speech processing (implemented)\n- ✅ Dynamic MCP server spawning (implemented)\n- 🔄 Integrated testing framework (in development)\n\n### 🔧 Recent Updates\n- **A2A Tool Registration Fix** - Missing `mcpServer.start()` call added\n- **HTTP Gateway A2A Integration** - A2A endpoints connected to actual A2A system\n- **Peer Registration** - AIs can register via `/a2a/register` endpoint\n- **Message System** - AIs can send messages via `/a2a/message` endpoint\n- **Peer Discovery** - Connected peers visible via `/a2a/peers` endpoint\n\n### 📊 Code Metrics\n- **Languages**: TypeScript 5.x\n- **Runtime**: Node.js with ES modules\n- **Testing**: No tests currently implemented\n- **Dependencies**: 199 packages, mostly MCP SDK and utilities\n\n## 🎯 Roadmap (Updated)\n\n- [x] **Phase 1 - Core MVP** ✅ COMPLETE\n  - [x] Core MCP server with JSON-RPC 2.0\n  - [x] Dynamic proxy/registry system\n  - [x] Multi-transport layer (STDIO, HTTP/SSE)\n  - [x] HTTP streaming gateway\n  - [x] Streamable HTTP proxy transport\n\n- [x] **Phase 2 - Advanced Features** ✅ COMPLETE\n  - [x] AI-to-AI communication framework (implemented)\n  - [x] Voice activation and speech processing (implemented)\n  - [x] Dynamic MCP server spawning (implemented)\n  - [x] Voice activation with keyword detection (implemented)\n  - [x] Speech-to-text and text-to-speech (implemented)\n  - [x] Integrated voice command processing (implemented)\n\n- [ ] **Phase 3 - Enterprise Ready**\n  - [ ] Advanced security layer\n  - [ ] Chaos testing framework\n  - [ ] Performance monitoring\n  - [ ] Unit and integration tests\n  - [ ] Comprehensive documentation\n\n## 📄 License\n\nMIT License - see LICENSE file for details\n\n## 🤝 Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## 📞 Support\n\n- **Documentation**: [MCP Protocol Docs](https://modelcontextprotocol.io)\n- **Issues**: [GitHub Issues](https://github.com/alsania-dev/mcp/issues)\n- **Discussions**: [GitHub Discussions](https://github.com/alsania-dev/alsaniamcp/discussions)\n\n---\n\nBuilt with ❤️ using the [Model Context Protocol](https://modelcontextprotocol.io)\n","readmeFilename":"README.md"}