{"_id":"@bluelamp/mcp-shim","name":"@bluelamp/mcp-shim","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@bluelamp/mcp-shim","version":"1.0.0","description":"BlueLamp 共通 MCP shim: manifest.json を読んで stdio MCP server を立て、tool 呼び出しを portal /api/cli/mcp-dispatch にフォワードする薄いランナー","keywords":["bluelamp","mcp","shim","cloud-proxy"],"license":"MIT","author":{"name":"BlueLamp","email":"dev@bluelamp.app"},"type":"module","main":"dist/index.js","types":"dist/index.d.ts","bin":{"bluelamp-mcp-shim":"dist/cli.js"},"publishConfig":{"access":"public"},"scripts":{"build":"tsc","prepublishOnly":"npm run build","test":"node --test tests/*.test.mjs"},"dependencies":{"@modelcontextprotocol/sdk":"^1.21.0"},"devDependencies":{"@types/node":"^22.10.5","typescript":"^5.7.3"},"engines":{"node":">=18"},"_id":"@bluelamp/mcp-shim@1.0.0","gitHead":"cb2e527c7901250ccd3683e76580bc2c5ea6842b","_nodeVersion":"24.10.0","_npmVersion":"11.6.0","dist":{"integrity":"sha512-V734rDRnrNR6rS1O9FvbD10326xAvAbPH7K5WyA8rUfdUl1QncU7K9dWeHcHvnvvjSlfTr3OIwc4daHT4GGMtQ==","shasum":"05ef5e4b56090950001ad5a05a7a2e713dcf754b","tarball":"https://registry.npmjs.org/@bluelamp/mcp-shim/-/mcp-shim-1.0.0.tgz","fileCount":10,"unpackedSize":21137,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDe3Q9Ddvsrew+7DdJd/RlPinGDr8WeJQD9CHzrXSKM/gIhAOdAhM758U55/XdL7kVfjluxt6UZRl9Vp8W7bMLJXtzt"}]},"_npmUser":{"name":"bluelamp","email":"shiraishi.tatsuya@mikoto.co.jp"},"directories":{},"maintainers":[{"name":"bluelamp","email":"shiraishi.tatsuya@mikoto.co.jp"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-shim_1.0.0_1778832035854_0.3460456164554442"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-15T08:00:35.715Z","1.0.0":"2026-05-15T08:00:36.014Z","modified":"2026-05-15T08:00:36.270Z"},"maintainers":[{"name":"bluelamp","email":"shiraishi.tatsuya@mikoto.co.jp"}],"description":"BlueLamp 共通 MCP shim: manifest.json を読んで stdio MCP server を立て、tool 呼び出しを portal /api/cli/mcp-dispatch にフォワードする薄いランナー","keywords":["bluelamp","mcp","shim","cloud-proxy"],"author":{"name":"BlueLamp","email":"dev@bluelamp.app"},"license":"MIT","readme":"# @bluelamp/mcp-shim\n\nBlueLamp の cloud_proxy MCP を **manifest.json 1 ファイルだけで動かす** ための共通 shim ランナー。\n\n受講生 PC で stdio MCP server を立て、Claude Code から飛んできた tool 呼び出しを\nBlueLamp Portal の `/api/cli/mcp-dispatch` にフォワードする。実際の外部 API 呼び出しは\nportal の `callGenericProxy` 経由で manifest の `externalApi.baseUrl` に転送される。\n\n```\n[受講生 PC]\n   Claude Code\n       ▼ stdio (MCP)\n   bluelamp-mcp-shim ← この npm パッケージ\n       ▼ HTTPS POST /api/cli/mcp-dispatch\n[BlueLamp Portal (bluelampportal-backend)]\n       ▼ callGenericProxy（tool.proxy 解釈 + JWT 発行）\n   外部 API（例: mikoto-company-api）\n```\n\n## なぜ必要か\n\n仕様書 v2.2 §6-1「manifest.json + 空依存（cloud_proxy）」を実装するため。\nA 分類 (cloud_proxy + externalApi.enabled) の MCP は、\n\n- 個別の `dist/index.js` を書かなくて良い（shim が代わりに動く）\n- 配布物は `manifest.json` だけで十分\n- ツール追加・スキーマ変更は manifest を編集 → portal で sync するだけ\n\nPhase 53A の `mcp-list/character-os-mcp/dist/index.js`（最初に手書きした 80 行の薄い shim）を\n汎用化したものが本パッケージ。\n\n## 使い方\n\n### npm 経由\n\n```bash\nnpm install -g @bluelamp/mcp-shim\n```\n\n```bash\nBLUELAMP_MCP_MANIFEST_PATH=/path/to/manifest.json \\\nBLUELAMP_CLI_TOKEN=xxxxxxxx \\\nbluelamp-mcp-shim\n```\n\n### Claude Code 設定例\n\n```json\n{\n  \"mcpServers\": {\n    \"character-os-mcp\": {\n      \"command\": \"bluelamp-mcp-shim\",\n      \"env\": {\n        \"BLUELAMP_MCP_MANIFEST_PATH\": \"/Users/me/.claude/mcp-servers/character-os-mcp/manifest.json\",\n        \"BLUELAMP_CLI_TOKEN\": \"xxxxxxxx\"\n      }\n    }\n  }\n}\n```\n\n## 環境変数\n\n| 名前 | 必須 | デフォルト | 説明 |\n|---|---|---|---|\n| `BLUELAMP_MCP_MANIFEST_PATH` | ✅ | — | manifest.json の絶対パス |\n| `BLUELAMP_CLI_TOKEN` | ✅ | — | BlueLamp 認証トークン（受講生ごとに発行） |\n| `BLUELAMP_PORTAL_API_BASE_URL` | — | `https://bluelampportal-backend-235426778039.asia-northeast1.run.app` | portal のベース URL（dev 用に上書き可、旧名 `BLUELAMP_API_BASE_URL` / `BLUELAMP_API_URL` / `BLUELAMP_API` / `AOS_API_BASE` も Phase 66-A A12-a まで後方互換読み込み） |\n\n必須 env が未設定だと shim は起動時に exit 1 する（黙って動かない）。\n\n## API（プログラム埋め込み用）\n\n```ts\nimport { runShim, readEnvConfig } from '@bluelamp/mcp-shim';\n\nawait runShim(readEnvConfig());\n```\n\n公開シンボル:\n- `runShim(config)` — manifest を読み、stdio MCP server を起動\n- `readEnvConfig(env?)` — 環境変数から `ShimEnvConfig` を組み立て\n- `loadManifest(path)` — manifest.json を読んで shape チェック\n- `buildToolList(manifest)` — Claude Code に提示する tools[] を生成\n- `dispatchTool(opts)` — 単発の tool 呼び出しを portal にフォワード（テスト用に `fetchImpl` 注入可）\n\n## 開発\n\n```bash\nnpm install\nnpm run build   # tsc → dist/\nnpm test        # node --test tests/*.test.mjs\n```\n\n## ライセンス\n\nMIT\n","readmeFilename":"README.md","_rev":"1-5d86441efa154c0ae06852d54532030a"}