{"_id":"@curatedmcp/launcher","_rev":"3-5cf373c5f9fa9ea77fcd473208e7e7e4","name":"@curatedmcp/launcher","dist-tags":{"latest":"1.0.3"},"versions":{"0.1.0":{"name":"@curatedmcp/launcher","version":"0.1.0","keywords":["mcp","model-context-protocol","claude","cursor","windsurf","anthropic","discovery"],"author":{"name":"CuratedMCP"},"license":"MIT","_id":"@curatedmcp/launcher@0.1.0","maintainers":[{"name":"curatedmcp","email":"curatedmcp@gmail.com"}],"homepage":"https://github.com/curatedmcp/launcher#readme","bugs":{"url":"https://github.com/curatedmcp/launcher/issues"},"bin":{"launcher":"dist/index.js"},"dist":{"shasum":"5ff13958e79a9f7b83ea0bcb39b3268ae2011d65","tarball":"https://registry.npmjs.org/@curatedmcp/launcher/-/launcher-0.1.0.tgz","fileCount":15,"integrity":"sha512-COmUDXVHn6tNjiEWNGAKgYN75K5L5kBux3civIU8hFG5YP+hou9oM0GpJM2tryDEB9pwuNBoY5mHm0mRiX7z/A==","signatures":[{"sig":"MEYCIQCpylNUjw8typ5JKvN02e1x2X/QyZtVRH9wTVMcae6qLQIhAKfAI4xjKgjDcZlQ0BYRXS8YbZXTZaYP292xhomjJb2i","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19934},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"32a90e8b565f9fb1133e2538132755cebf450552","scripts":{"dev":"node --loader ts-node/esm src/index.ts","test":"vitest run","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"curatedmcp","email":"curatedmcp@gmail.com"},"repository":{"url":"git+https://github.com/curatedmcp/launcher.git","type":"git"},"_npmVersion":"10.8.2","description":"Find and install MCP servers from inside Claude, Cursor, or Windsurf","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.0.0","typescript":"^5","@types/node":"^20"},"_npmOperationalInternal":{"tmp":"tmp/launcher_0.1.0_1777146650387_0.8107987926564402","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@curatedmcp/launcher","version":"1.0.0","keywords":["mcp","mcp-hub","mcp-server","mcp-client","mcp-gateway","mcp-proxy","mcp-orchestrator","launcher","install","model-context-protocol","claude","claude-desktop","cursor","windsurf","copilot","gemini","anthropic","ai-tools","ai-agent","agent-orchestration","discovery"],"author":{"name":"CuratedMCP"},"license":"MIT","_id":"@curatedmcp/launcher@1.0.0","maintainers":[{"name":"curatedmcp","email":"curatedmcp@gmail.com"}],"homepage":"https://curatedmcp.com/launcher","bugs":{"url":"https://github.com/oneprofile-dev/mcp-launcher/issues"},"bin":{"launcher":"dist/index.js"},"dist":{"shasum":"f22b46c80992879a8717573321c0dd871df7ad43","tarball":"https://registry.npmjs.org/@curatedmcp/launcher/-/launcher-1.0.0.tgz","fileCount":35,"integrity":"sha512-l73Qg2Nhy6UTVL0gQ8/gKnkkRb8O8zoiFmf3mvvZL+hiKyCWfws3V+0t4fNuT2784ZGSR/V1TvUd/5ZWNkCe+g==","signatures":[{"sig":"MEUCICoi7Mt5HeLbO98h/OV9PYtedyaF4ozwhjn66l/YuhZhAiEA4H9FYMfcViALE9avAj+80D48Z+JgaVPFFWGA/tkvUxI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61120},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"cb22504c873ad0574e8ede068b1631dd8961ef3a","scripts":{"dev":"node --loader ts-node/esm src/index.ts","test":"vitest run","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"curatedmcp","email":"curatedmcp@gmail.com"},"repository":{"url":"git+https://github.com/oneprofile-dev/mcp-launcher.git","type":"git"},"_npmVersion":"10.8.2","description":"The MCP Hub — one config that connects every AI agent (Claude, Cursor, Windsurf, Copilot, Gemini) to every MCP server you register","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.0.0","typescript":"^5","@types/node":"^20"},"_npmOperationalInternal":{"tmp":"tmp/launcher_1.0.0_1777666390170_0.9630974067726172","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@curatedmcp/launcher","version":"1.0.3","description":"The MCP Hub — one config that connects every AI agent (Claude, Cursor, Windsurf, Copilot, Gemini) to every MCP server you register","license":"MIT","type":"module","bin":{"launcher":"dist/index.js"},"main":"./dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"build":"tsc","dev":"node --loader ts-node/esm src/index.ts","test":"vitest run","prepublishOnly":"npm run build"},"keywords":["mcp","mcp-hub","mcp-server","mcp-client","mcp-gateway","mcp-proxy","mcp-orchestrator","launcher","install","model-context-protocol","claude","claude-desktop","cursor","windsurf","copilot","gemini","anthropic","ai-tools","ai-agent","agent-orchestration","discovery"],"author":{"name":"CuratedMCP"},"homepage":"https://curatedmcp.com/launcher","repository":{"type":"git","url":"git+https://github.com/oneprofile-dev/mcp-launcher.git"},"bugs":{"url":"https://github.com/oneprofile-dev/mcp-launcher/issues"},"dependencies":{"@modelcontextprotocol/sdk":"^1.29.0"},"devDependencies":{"@types/node":"^20","typescript":"^5","vitest":"^1.0.0"},"_id":"@curatedmcp/launcher@1.0.3","gitHead":"ccd791d6e81746bc8596052f24f0091b9d0528ae","types":"./dist/index.d.ts","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-0NcJujSCWBFewR573xzve4Wz7v/6mtYIb5PR5VfjwbBpS73AzYZisYo3OgrkNETVtLty0pMXhHMrIRE5AmnT7Q==","shasum":"9539b5fbbb51d716fa798cb7f1daf6d1d9fdbc8e","tarball":"https://registry.npmjs.org/@curatedmcp/launcher/-/launcher-1.0.3.tgz","fileCount":42,"unpackedSize":62618,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC4/qyxQqThGYwugX8/8OywezE34N7OXrMkd0jr8Pf+7gIhAO1HCN3QHBU22KT1wn9Jk5wsNO0VuBl5AtlLUnoh4OX5"}]},"_npmUser":{"name":"curatedmcp","email":"curatedmcp@gmail.com"},"directories":{},"maintainers":[{"name":"curatedmcp","email":"curatedmcp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/launcher_1.0.3_1777669292735_0.3413695666164591"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-25T19:50:50.246Z","modified":"2026-05-01T21:01:32.987Z","0.1.0":"2026-04-25T19:50:50.530Z","1.0.0":"2026-05-01T20:13:10.324Z","1.0.3":"2026-05-01T21:01:32.879Z"},"bugs":{"url":"https://github.com/oneprofile-dev/mcp-launcher/issues"},"author":{"name":"CuratedMCP"},"license":"MIT","homepage":"https://curatedmcp.com/launcher","keywords":["mcp","mcp-hub","mcp-server","mcp-client","mcp-gateway","mcp-proxy","mcp-orchestrator","launcher","install","model-context-protocol","claude","claude-desktop","cursor","windsurf","copilot","gemini","anthropic","ai-tools","ai-agent","agent-orchestration","discovery"],"repository":{"type":"git","url":"git+https://github.com/oneprofile-dev/mcp-launcher.git"},"description":"The MCP Hub — one config that connects every AI agent (Claude, Cursor, Windsurf, Copilot, Gemini) to every MCP server you register","maintainers":[{"name":"curatedmcp","email":"curatedmcp@gmail.com"}],"readme":"# @curatedmcp/launcher\n\n[![npm version](https://img.shields.io/npm/v/@curatedmcp/launcher?color=brightgreen)](https://www.npmjs.com/package/@curatedmcp/launcher)\n[![npm downloads](https://img.shields.io/npm/dm/@curatedmcp/launcher)](https://www.npmjs.com/package/@curatedmcp/launcher)\n[![CI](https://github.com/oneprofile-dev/mcp-launcher/actions/workflows/test.yml/badge.svg)](https://github.com/oneprofile-dev/mcp-launcher/actions/workflows/test.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![Node.js ≥18](https://img.shields.io/node/v/@curatedmcp/launcher)](https://nodejs.org)\n\n> **The MCP Hub.** One config that bridges every AI agent (Claude, Cursor, Windsurf, Copilot, Gemini) to every MCP server you register.\n\n```bash\nnpx @curatedmcp/launcher init\n```\n\n**Plug it in once. Add servers anytime. Use them in any AI agent.**\n\n---\n\n## Why\n\nIf you use MCP servers across multiple AI clients, you've felt this pain:\n\n- You configure GitHub MCP in Claude Desktop. Then you switch to Cursor and have to do it again.\n- You add five servers to Claude. Want them in Windsurf too? Edit a different config file.\n- A new AI agent ships? Re-paste every server config from scratch.\n\n**Launcher fixes that.** It's one MCP entry that fans out to every server you've added, in every AI client.\n\n```\n   Claude   Cursor   Windsurf   Copilot   Gemini\n       \\      \\      |      /      /\n        ┌──────────────────────────┐\n        │  @curatedmcp/launcher    │   ← one config in each agent\n        │  (the MCP hub)           │\n        └────┬──────┬──────┬───────┘\n             │      │      │\n          GitHub  Postgres  Stripe   ← `launcher add`'d once, available everywhere\n```\n\n---\n\n## Install (60 seconds)\n\n### 1. Add Launcher to your AI client\n\nDrop this entry into your MCP config:\n\n```json\n{\n  \"mcpServers\": {\n    \"curatedmcp\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@curatedmcp/launcher\"]\n    }\n  }\n}\n```\n\nConfig file location:\n\n| Client          | Path                                                                  |\n| --------------- | --------------------------------------------------------------------- |\n| Claude Desktop  | `~/Library/Application Support/Claude/claude_desktop_config.json` (mac) / `%APPDATA%\\Claude\\claude_desktop_config.json` (win) |\n| Cursor          | `~/.cursor/mcp.json`                                                  |\n| Windsurf        | `~/.codeium/windsurf/mcp_config.json`                                 |\n| Claude Code     | `~/.claude/mcp.json` (or `.claude/mcp.json` per-project)              |\n\n### 2. Add servers to your stack\n\n```bash\nnpx @curatedmcp/launcher add github\n# Prompts for GITHUB_TOKEN\n\nnpx @curatedmcp/launcher add postgres --env DATABASE_URL=postgres://...\nnpx @curatedmcp/launcher list\n```\n\n### 3. Restart your AI client\n\nTools appear with a `<slug>__` prefix:\n\n- `github__create_issue`\n- `postgres__query`\n- `filesystem__read_file`\n\nThat's it. Add more servers any time — just `add` and restart.\n\n---\n\n## CLI Reference\n\n```\nlauncher                      # Run as MCP server (used by AI clients)\nlauncher init                 # Print the config snippet for your AI client\nlauncher add <slug>           # Add a server from the CuratedMCP catalog\n  --env KEY=value             # Pre-supply env vars (otherwise prompted)\nlauncher remove <slug>        # Remove a server from your stack\nlauncher list                 # Show your stack\nlauncher --version            # Print version\nlauncher --help               # Print help\n```\n\n---\n\n## How it works\n\n1. Your AI client launches `npx @curatedmcp/launcher` over stdio (one MCP entry, like any other).\n2. Launcher reads `~/.curatedmcp/stack.json` and **spawns each registered server as a child process** over stdio.\n3. On `tools/list`, Launcher **aggregates** every child's tools and returns them prefixed with the server's slug.\n4. On `tools/call`, Launcher **routes** the request to the matching child by name prefix and forwards the response unchanged.\n\nThis makes Launcher invisible to the agent — it sees one MCP server with all the tools — while behind the scenes you've got N independent processes, isolated, each with its own credentials.\n\n---\n\n## Config file\n\n`~/.curatedmcp/stack.json` — plain JSON, hand-editable, version-controllable:\n\n```json\n{\n  \"version\": 1,\n  \"entries\": [\n    {\n      \"slug\": \"github\",\n      \"name\": \"GitHub\",\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol/server-github\"],\n      \"env\": { \"GITHUB_TOKEN\": \"ghp_xxxxxxxxxxxx\" },\n      \"addedAt\": \"2026-05-01T10:14:00.000Z\"\n    }\n  ]\n}\n```\n\nSet `\"disabled\": true` on an entry to skip it without removing it.\n\n---\n\n## In-agent discovery\n\nLauncher itself exposes 5 discovery tools to your AI client, so you can ask the agent:\n\n> \"Find me an MCP server for Postgres.\"\n> \"What's the best Stripe MCP?\"\n> \"Add the Postgres MCP server to my stack.\"\n\nThe agent uses `search_servers`, `get_server_details`, and `add_to_stack` to do all of that without you leaving the chat.\n\n---\n\n## Privacy\n\n- **All config is local** at `~/.curatedmcp/stack.json`. No cloud sync, no account.\n- **Anonymous telemetry only** (event names like \"search\", \"add\"). Disable with `--no-telemetry` or `CURATOR_TELEMETRY=false`.\n- A persistent UUID is stored at `~/.curatedmcp/launcher.json` for de-duplication.\n\n---\n\n## Compatibility\n\n- Works with Claude Desktop, Claude Code, Cursor, Windsurf, Copilot, Gemini, OpenAI Agents — anything that supports MCP over stdio.\n- Node.js ≥ 18.\n- Single dependency: `@modelcontextprotocol/sdk`.\n\n---\n\n## Links\n\n- 🌐 [curatedmcp.com/launcher](https://curatedmcp.com/launcher)\n- 📚 [Marketplace](https://curatedmcp.com/marketplace)\n- 🐙 [GitHub](https://github.com/curatedmcp/launcher)\n- 💬 [Issues](https://github.com/curatedmcp/launcher/issues)\n\nMIT licensed.\n","readmeFilename":"README.md"}