{"_id":"@synchronex/mcp-proxy","_rev":"5-37dac0eb57621b310d78683565c88e9e","name":"@synchronex/mcp-proxy","dist-tags":{"latest":"1.2.1"},"versions":{"1.0.0":{"name":"@synchronex/mcp-proxy","version":"1.0.0","keywords":["mcp","model-context-protocol","mcp-server","synchronex","ai-agent","claude","codex","cursor","gemini","memory","credential-routing"],"license":"Apache-2.0","_id":"@synchronex/mcp-proxy@1.0.0","maintainers":[{"name":"kmdesle21","email":"kevin@synchronex.ai"}],"homepage":"https://synchronex.ai","bugs":{"url":"https://github.com/kmdesle/synchronex/issues"},"bin":{"synchronex-proxy":"dist/bin/synchronex-proxy.js"},"dist":{"shasum":"daf1b63f3bce9f558bfe378f28d2d7cbc0979770","tarball":"https://registry.npmjs.org/@synchronex/mcp-proxy/-/mcp-proxy-1.0.0.tgz","fileCount":30,"integrity":"sha512-s+eDroeP11Sw0e9fhbv9bW41kXdEBwuwWPVSDlOsGlvyhUIBGUqJRJR71IuknBVAj1PzsSYMjS9BNbrbzH2Ddw==","signatures":[{"sig":"MEUCIFrzYXGL2Vv+56PwvwDQkTxZ6LxSWJ3jyN2sV6bS6wO9AiEA1FxprHT/JfrJE0QtyLsTnbCO+e74pqwaVYP2krJIj1k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61466},"type":"module","engines":{"node":">=22.5.0"},"gitHead":"b1782412efa3177c6b4ac385ce54f2983eb09465","scripts":{"dev":"tsx watch bin/synchronex-proxy.ts","test":"vitest run","build":"tsc -p tsconfig.json","start":"node dist/bin/synchronex-proxy.js"},"_npmUser":{"name":"kmdesle21","email":"kevin@synchronex.ai"},"repository":{"url":"git+https://github.com/kmdesle/synchronex.git","type":"git","directory":"packages/mcp-proxy"},"_npmVersion":"10.9.4","description":"Credential-aware MCP proxy - schema caching plus per-project credential routing","directories":{},"_nodeVersion":"22.21.0","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","vitest":"^4.1.2","typescript":"^5.9.3","@types/node":"^25.5.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp-proxy_1.0.0_1783044067831_0.1701077958757089","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@synchronex/mcp-proxy","version":"1.0.1","keywords":["mcp","model-context-protocol","mcp-server","synchronex","ai-agent","claude","codex","cursor","gemini","memory","credential-routing"],"license":"Apache-2.0","_id":"@synchronex/mcp-proxy@1.0.1","maintainers":[{"name":"kmdesle21","email":"kevin@synchronex.ai"}],"homepage":"https://synchronex.ai","bugs":{"url":"https://github.com/kmdesle/synchronex/issues"},"bin":{"synchronex-proxy":"dist/bin/synchronex-proxy.js"},"dist":{"shasum":"1d404b4101b47f6a95df5b6b586c9bcd3ebb3aa9","tarball":"https://registry.npmjs.org/@synchronex/mcp-proxy/-/mcp-proxy-1.0.1.tgz","fileCount":30,"integrity":"sha512-UqfCdbyl+kF9bWmRoBOHFFXHN87O5K08vU3/xDtSGiMofEMYUC2uQtpEsOYib49JH4tTdgE2H+zJNn0E+Jb/5w==","signatures":[{"sig":"MEUCIQDFNTtLSO1DddL1KzC/QwQ6Fyp1Eal8YMtt/XbcpDs4bAIgY6QZTDXcXvQ1SmQmqjNlf4TE3dW5GHDt/mAR7nW7cs4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61506},"type":"module","engines":{"node":">=22.5.0"},"gitHead":"ba956ca62275399004a947a71be0c52d757a34f0","mcpName":"ai.synchronex/mcp-proxy","scripts":{"dev":"tsx watch bin/synchronex-proxy.ts","test":"vitest run","build":"tsc -p tsconfig.json","start":"node dist/bin/synchronex-proxy.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:897758d9-1fb4-4509-8947-19ddab1676c6"}},"repository":{"url":"git+https://github.com/kmdesle/synchronex.git","type":"git","directory":"packages/mcp-proxy"},"_npmVersion":"11.18.0","description":"Credential-aware MCP proxy - schema caching plus per-project credential routing","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","vitest":"^4.1.2","typescript":"^5.9.3","@types/node":"^25.5.2"},"_npmOperationalInternal":{"tmp":"tmp/mcp-proxy_1.0.1_1783050234485_0.8350474078920664","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@synchronex/mcp-proxy","version":"1.1.0","keywords":["mcp","model-context-protocol","mcp-server","synchronex","ai-agent","claude","codex","cursor","gemini","memory","credential-routing"],"license":"Apache-2.0","_id":"@synchronex/mcp-proxy@1.1.0","maintainers":[{"name":"kmdesle21","email":"kevin@synchronex.ai"}],"homepage":"https://synchronex.ai","bugs":{"url":"https://github.com/kmdesle/synchronex/issues"},"bin":{"synchronex-proxy":"dist/bin/synchronex-proxy.js"},"dist":{"shasum":"ccb496f3d28431debb99f8fd2ed596c593892e01","tarball":"https://registry.npmjs.org/@synchronex/mcp-proxy/-/mcp-proxy-1.1.0.tgz","fileCount":30,"integrity":"sha512-rircA022hK32Gi0nHIcRz94d/bM78SA5KwhVMEWrE6w0z6XlccBu9NHRlpnRM17J835jwCRier09FIbDZ5BZCQ==","signatures":[{"sig":"MEUCIDpedhjmJhIzJTNp3Nc7jflVVY8fgdehjLdT42FQye+sAiEArWOQmn8u0JGcAfpeliLZh0cnuKtefrY9IbHKmf5hqqo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63672},"type":"module","engines":{"node":">=22.5.0"},"gitHead":"d0cb976a9ac589e2595e008564c279b03a6fe0a2","mcpName":"ai.synchronex/mcp-proxy","scripts":{"dev":"tsx watch bin/synchronex-proxy.ts","test":"vitest run","build":"tsc -p tsconfig.json","start":"node dist/bin/synchronex-proxy.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:897758d9-1fb4-4509-8947-19ddab1676c6"}},"repository":{"url":"git+https://github.com/kmdesle/synchronex.git","type":"git","directory":"packages/mcp-proxy"},"_npmVersion":"12.0.1","description":"Credential-aware MCP proxy - schema caching plus per-project credential routing","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vitest":"^4.1.2","typescript":"^5.9.3","@types/node":"^25.9.5"},"_npmOperationalInternal":{"tmp":"tmp/mcp-proxy_1.1.0_1785034637639_0.37943964941476604","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@synchronex/mcp-proxy","version":"1.2.0","keywords":["mcp","model-context-protocol","mcp-server","synchronex","ai-agent","claude","codex","cursor","gemini","memory","credential-routing"],"license":"Apache-2.0","_id":"@synchronex/mcp-proxy@1.2.0","maintainers":[{"name":"kmdesle21","email":"kevin@synchronex.ai"}],"homepage":"https://synchronex.ai","bugs":{"url":"https://github.com/kmdesle/synchronex/issues"},"bin":{"synchronex-proxy":"dist/bin/synchronex-proxy.js"},"dist":{"shasum":"7875e807e4b905ea612da58226b3a0cb73ec1bb5","tarball":"https://registry.npmjs.org/@synchronex/mcp-proxy/-/mcp-proxy-1.2.0.tgz","fileCount":30,"integrity":"sha512-FOdbcP3Yx0XYGp7oKlqBIDBwim2t0cT174sq66cEWYipJRzp8JnkYT1w4w4D0cPUq8LTRTlfiNXy2bLze6a9gA==","signatures":[{"sig":"MEUCIQDUgOcqnhq3UHR0trT8KPjPqnijISk4Qso2ObnRMbt2mgIgWmYY6fOKNnn1TnxDE7i7LyBdMaKU3xL5ShMKwvWnFO4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64403},"type":"module","engines":{"node":">=22.5.0"},"gitHead":"8e6be4702f916457b787ae9f54811f51aaff87dc","mcpName":"ai.synchronex/mcp-proxy","scripts":{"dev":"tsx watch bin/synchronex-proxy.ts","test":"vitest run","build":"tsc -p tsconfig.json","start":"node dist/bin/synchronex-proxy.js"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:897758d9-1fb4-4509-8947-19ddab1676c6"}},"repository":{"url":"git+https://github.com/kmdesle/synchronex.git","type":"git","directory":"packages/mcp-proxy"},"_npmVersion":"12.0.2","description":"Credential-aware MCP proxy - schema caching plus per-project credential routing","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","vitest":"^4.1.2","typescript":"^5.9.3","@types/node":"^25.9.5"},"_npmOperationalInternal":{"tmp":"tmp/mcp-proxy_1.2.0_1786094989964_0.6464133303131172","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@synchronex/mcp-proxy","version":"1.2.1","mcpName":"ai.synchronex/mcp-proxy","description":"Credential-aware MCP proxy - schema caching plus per-project credential routing","type":"module","bin":{"synchronex-proxy":"dist/bin/synchronex-proxy.js"},"keywords":["mcp","model-context-protocol","mcp-server","synchronex","ai-agent","claude","codex","cursor","gemini","memory","credential-routing"],"scripts":{"dev":"tsx watch bin/synchronex-proxy.ts","build":"tsc -p tsconfig.json","start":"node dist/bin/synchronex-proxy.js","test":"vitest run"},"dependencies":{"@modelcontextprotocol/sdk":"^1.30.0","zod":"^4.3.6"},"devDependencies":{"@types/node":"^25.9.5","tsx":"^4.23.1","typescript":"^5.9.3","vitest":"^4.1.2"},"engines":{"node":">=22.5.0"},"repository":{"type":"git","url":"git+https://github.com/kmdesle/synchronex.git","directory":"packages/mcp-proxy"},"homepage":"https://synchronex.ai","license":"Apache-2.0","publishConfig":{"access":"public"},"gitHead":"a3cd84a53b6d36958812d9af5de2ee73c47d15e0","_id":"@synchronex/mcp-proxy@1.2.1","bugs":{"url":"https://github.com/kmdesle/synchronex/issues"},"_nodeVersion":"22.23.1","_npmVersion":"12.0.2","dist":{"integrity":"sha512-4EVJOXBFLCKQHFfZaHkDrgTAZoh0LvtNVyKIXpY12cP9TJYytsAaibTqXSp9bUHkvfjX3woJqDVXseOsUmOUZw==","shasum":"d84012caf0201e78f1af12f95ccd8c9f52ff6f0b","tarball":"https://registry.npmjs.org/@synchronex/mcp-proxy/-/mcp-proxy-1.2.1.tgz","fileCount":30,"unpackedSize":64403,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGxlB1J6HBcCO0qL6x0Lrrd+pz5todyHjWaCVXCxiffMAiB3xbbYdMWwEHCb6BSNvWSuqgWOHW7JdQk97zefjF6H6Q=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:897758d9-1fb4-4509-8947-19ddab1676c6"}},"directories":{},"maintainers":[{"name":"kmdesle21","email":"kevin@synchronex.ai"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-proxy_1.2.1_1786656557165_0.49479305785062455"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-03T02:01:07.637Z","modified":"2026-08-13T21:29:17.501Z","1.0.0":"2026-07-03T02:01:07.971Z","1.0.1":"2026-07-03T03:43:54.662Z","1.1.0":"2026-07-26T02:57:17.784Z","1.2.0":"2026-08-07T09:29:50.102Z","1.2.1":"2026-08-13T21:29:17.345Z"},"bugs":{"url":"https://github.com/kmdesle/synchronex/issues"},"license":"Apache-2.0","homepage":"https://synchronex.ai","keywords":["mcp","model-context-protocol","mcp-server","synchronex","ai-agent","claude","codex","cursor","gemini","memory","credential-routing"],"repository":{"type":"git","url":"git+https://github.com/kmdesle/synchronex.git","directory":"packages/mcp-proxy"},"description":"Credential-aware MCP proxy - schema caching plus per-project credential routing","maintainers":[{"name":"kmdesle21","email":"kevin@synchronex.ai"}],"readme":"# @synchronex/mcp-proxy\n\nCredential-aware MCP proxy for Synchronex.\n\nIt provides:\n- local standalone memory tools backed by SQLite + FTS:\n  - `get_kernel`\n  - `remember`\n  - `log_decision`\n  - `recall`\n- `proxy_search`\n- `proxy_schema`\n- `proxy_call`\n\nand routes credentials per project/profile using:\n- `~/.synchronex/vault.enc`\n- `~/.synchronex/master.key`\n- `~/.synchronex/projects.json`\n- `~/.synchronex/servers.json`\n\nLocal memory state is stored per profile at:\n- `~/.synchronex/local-memory/<profile>.sqlite`\n\nThe local tools do not depend on Supabase or embeddings. They are the\nlocal-mode MVP for Synchronex Memory MCP.\n\n## Upstream servers: stdio and http\n\nEach `servers.json` entry declares `serverType: 'stdio' | 'http'` (defaults to\n`'stdio'` for entries written before this existed):\n\n- `stdio` spawns `command`/`args` as a local process; `credentialKeys` become\n  env vars merged into the child process's environment.\n- `http` connects via MCP Streamable HTTP to `url`; `credentialKeys` are\n  literal HTTP header names (e.g. `Authorization`, `X-Sendinel-Project-Id`)\n  sent as-is from the vault credential map — no local process, no npx.\n\nSee `docs/brain/ops/mcp-proxy.md` for server-classification guidance.\n\n## Terminal session attribution\n\nWhen the proxy runs inside a Synchronex desktop terminal pane, the terminal\ninjects `SYNCHRONEX_SESSION_ID` into the pane environment before launching the\nAI CLI. Stdio MCP servers inherit that environment, so the proxy attaches the\nsession id to each local-memory or upstream `proxy_call` telemetry record.\n\nThe proxy posts those call records to Synchronex through `/api/proxy/health`\nonce per minute. The app verifies the MCP API key, checks that the terminal\nsession belongs to the authenticated user, then writes `ai_cost_events` rows\nwith `source=\"interactive_terminal\"` and `cost_usd=0`. `api_equivalent_cost_usd`\nis estimated server-side from the reported input/output token counts so local\nMCP usage can be shown honestly as avoided API spend.\n\nThis uses environment inheritance rather than MCP request metadata because\nstdio MCP does not provide a portable per-request Synchronex session header. If\nthe proxy is launched outside a Synchronex terminal pane, `SYNCHRONEX_SESSION_ID`\nis absent and aggregate proxy telemetry still reports, but per-terminal cost\nevents are skipped.\n","readmeFilename":"README.md"}