/** * Bookworm MCP 注入脚本 * 将 MCP 服务器配置写入 ~/.claude.json (Claude Code v2.1+ 正确位置) * 用法: node inject-mcp.js */ const fs = require("fs"); const path = require("path"); const f = path.join(process.env.USERPROFILE, ".claude.json"); let d = {}; try { d = JSON.parse(fs.readFileSync(f, "utf8")); } catch (e) { console.log("未找到 .claude.json, 将创建新文件"); } d.mcpServers = { "context7": { command: "npx.cmd", args: ["--yes", "@upstash/context7-mcp@2.1.1"], type: "stdio" }, "sequential-thinking": { command: "npx.cmd", args: ["--yes", "@modelcontextprotocol/server-sequential-thinking@2025.12.18"], type: "stdio" }, "playwright": { command: "npx.cmd", args: ["--yes", "@playwright/mcp@0.0.68", "--headless"], type: "stdio" }, "session-continuity": { command: "npx.cmd", args: ["--yes", "claude-session-continuity-mcp@1.13.0"], type: "stdio" }, "notebooklm": { command: "npx.cmd", args: ["--yes", "notebooklm-mcp@latest"], type: "stdio", env: { https_proxy: "http://127.0.0.1:7893", http_proxy: "http://127.0.0.1:7893" } }, "cloudflare": { command: "npx.cmd", args: ["--yes", "mcp-remote", "https://docs.mcp.cloudflare.com/sse"], type: "stdio", env: { https_proxy: "http://127.0.0.1:7893", http_proxy: "http://127.0.0.1:7893" } }, "chrome-devtools": { command: "npx.cmd", args: [ "--yes", "chrome-devtools-mcp@0.18.1", "--executablePath", "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe", "--viewport", "1280x720", "--proxyServer", "http://127.0.0.1:7893" ], type: "stdio" }, "github": { command: "npx.cmd", args: ["--yes", "@modelcontextprotocol/server-github"], type: "stdio", env: { GITHUB_PERSONAL_ACCESS_TOKEN: process.env.GITHUB_PERSONAL_ACCESS_TOKEN || "" } }, "slack": { command: "npx.cmd", args: ["--yes", "@modelcontextprotocol/server-slack"], type: "stdio", env: { SLACK_BOT_TOKEN: process.env.SLACK_BOT_TOKEN || "", SLACK_TEAM_ID: "T0A4L1JLEER" } }, "firecrawl": { command: "npx.cmd", args: ["--yes", "firecrawl-mcp"], type: "stdio", env: { FIRECRAWL_API_KEY: process.env.FIRECRAWL_API_KEY || "" } }, "browserbase": { command: "npx.cmd", args: ["--yes", "@anthropic-ai/browserbase-mcp"], type: "stdio", env: { BROWSERBASE_API_KEY: process.env.BROWSERBASE_API_KEY || "", BROWSERBASE_PROJECT_ID: "d3dbb32f-be2f-4e3a-b9ec-68e27474763c" } }, "mcp-image": { command: "npx.cmd", args: ["--yes", "mcp-image"], type: "stdio", env: { GEMINI_API_KEY: process.env.GEMINI_API_KEY || "" } }, "google-drive": { command: "npx.cmd", args: ["--yes", "@piotr-agier/google-drive-mcp"], type: "stdio" }, "windows-mcp": { command: "uvx", args: ["--python", "3.13", "windows-mcp"], type: "stdio" }, "atlassian": { command: "uvx", args: ["mcp-atlassian"], type: "stdio", env: { JIRA_URL: "https://huakoh.atlassian.net", JIRA_USERNAME: "huakoh449@gmail.com", JIRA_API_TOKEN: process.env.ATLASSIAN_API_TOKEN || "", CONFLUENCE_URL: "https://huakoh.atlassian.net/wiki", CONFLUENCE_USERNAME: "huakoh449@gmail.com", CONFLUENCE_API_TOKEN: process.env.ATLASSIAN_API_TOKEN || "" } } }; fs.writeFileSync(f, JSON.stringify(d, null, 2)); const count = Object.keys(d.mcpServers).length; console.log("OK: " + count + " MCP servers written to " + f); console.log("请重启 Claude Code 后运行 /mcp 验证");