{"_id":"@berrydev-ai/deepseek-mcp","name":"@berrydev-ai/deepseek-mcp","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@berrydev-ai/deepseek-mcp","version":"0.1.0","description":"MCP server that gives your coding agent a DeepSeek second opinion. Takes git refs and paths rather than code, and reads the repo itself.","keywords":["mcp","model-context-protocol","deepseek","code-review","claude-code","codex","ai"],"license":"MIT","author":{"name":"Eric Berry","email":"eric@berry.sh"},"type":"module","repository":{"type":"git","url":"git+https://github.com/berrydev-ai/deepseek-mcp.git"},"homepage":"https://github.com/berrydev-ai/deepseek-mcp#readme","bugs":{"url":"https://github.com/berrydev-ai/deepseek-mcp/issues"},"publishConfig":{"access":"public"},"engines":{"node":">=20"},"bin":{"deepseek-mcp":"dist/index.js"},"scripts":{"build":"tsc","dev":"tsc --watch","typecheck":"tsc --noEmit","start":"node dist/index.js","prepublishOnly":"npm run build"},"dependencies":{"@modelcontextprotocol/server":"^2.0.0","zod":"^4.0.0"},"devDependencies":{"@types/node":"^22.20.1","typescript":"^5.6.0"},"_id":"@berrydev-ai/deepseek-mcp@0.1.0","gitHead":"bae1a6fb708b2287f4d21657e5220ef26086e067","_nodeVersion":"22.23.2","_npmVersion":"10.9.8","dist":{"integrity":"sha512-iPf8NeN/4xnWFljjqX/KIUMS9TnvNSnoUuzEqVyoap0dbk9N8/u1THWROb/SLbkXRGEK2OYVWjnKI12HPHHBEg==","shasum":"59381ddd984d1c12603ddf311507d17f34e6a515","tarball":"https://registry.npmjs.org/@berrydev-ai/deepseek-mcp/-/deepseek-mcp-0.1.0.tgz","fileCount":15,"unpackedSize":41234,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHMyJjkS0kGnmpk+F1CcI3Z4m5S3YLhLz8ccTS+kILyvAiEAgfjsM1BKAxIWA7jm4m+1B82qtG7SUK1GnTbfpd5fSCg="}]},"_npmUser":{"name":"coderberry","email":"coderberry@gmail.com"},"directories":{},"maintainers":[{"name":"coderberry","email":"coderberry@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/deepseek-mcp_0.1.0_1786656740887_0.36935632120294515"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-13T21:32:20.725Z","0.1.0":"2026-08-13T21:32:21.027Z","modified":"2026-08-13T21:32:21.235Z"},"maintainers":[{"name":"coderberry","email":"coderberry@gmail.com"}],"description":"MCP server that gives your coding agent a DeepSeek second opinion. Takes git refs and paths rather than code, and reads the repo itself.","homepage":"https://github.com/berrydev-ai/deepseek-mcp#readme","keywords":["mcp","model-context-protocol","deepseek","code-review","claude-code","codex","ai"],"repository":{"type":"git","url":"git+https://github.com/berrydev-ai/deepseek-mcp.git"},"author":{"name":"Eric Berry","email":"eric@berry.sh"},"bugs":{"url":"https://github.com/berrydev-ai/deepseek-mcp/issues"},"license":"MIT","readme":"# deepseek-mcp\n\nA local MCP server that makes DeepSeek available to your primary coding agent\nfor code review and second opinions.\n\nThe server reads the repo itself. Your agent passes a git ref or a list of\npaths — never the code — so a review costs about twenty tokens on the way in\ninstead of several thousand.\n\n## Tools\n\n| Tool | Use it for | Model |\n|---|---|---|\n| `review_changes` | Review a diff. Uncommitted work by default, or a branch via `base`. | review |\n| `review_files` | Review whole files — architecture, an unfamiliar module, a suspected bug. | review |\n| `consult` | Ask a specific question. Supports multi-turn via `history`. | consult |\n\nAll three are read-only and take paths, not content.\n\n## Install\n\n```bash\nnpm i -g @berrydev-ai/deepseek-mcp\n```\n\nThat puts a `deepseek-mcp` binary on your PATH; no checkout needed. Or skip\nthe install and let your MCP client fetch it on demand with\n`npx -y @berrydev-ai/deepseek-mcp`, at the cost of a slower cold start.\n\nOne caveat if you install from source instead: avoid\n`npm i -g git+https://github.com/berrydev-ai/deepseek-mcp.git`. On npm 10.x\nit appears to succeed but symlinks the global package at a bare clone in the\ncache with no working tree, leaving `bin` dangling. Use the registry, or a\ntarball. `dist/` is committed so that installing from git or a tarball still\nworks — a global install has no devDependencies, so nothing can compile at\ninstall time.\n\n## Configure\n\nThere is no dotenv loader. The server reads `process.env` and nothing else,\nso `.env` is a reference for what to set rather than a file that gets read.\nConfiguration belongs in your MCP client's `env` block.\n\n### Claude Code\n\n```bash\nclaude mcp add deepseek -s user -e DEEPSEEK_API_KEY=sk-... -- deepseek-mcp\n```\n\n`-s user` registers it across all your projects. Without it the default is\nlocal scope, which is limited to the directory you ran the command in.\n\n### Codex\n\n```bash\ncodex mcp add deepseek --env DEEPSEEK_API_KEY=sk-... -- deepseek-mcp\n```\n\nNote `--env` rather than Claude's `-e`, and that the command to launch goes\nafter `--` in both. Codex writes to `~/.codex/config.toml` globally, so there\nis no scope flag to think about. The equivalent by hand:\n\n```toml\n[mcp_servers.deepseek]\ncommand = \"deepseek-mcp\"\n\n[mcp_servers.deepseek.env]\nDEEPSEEK_API_KEY = \"sk-...\"\n```\n\nVerify with `codex mcp get deepseek`, and `codex mcp remove deepseek` to undo.\n\n### Any other MCP client\n\n```json\n{\n  \"mcpServers\": {\n    \"deepseek\": {\n      \"command\": \"deepseek-mcp\",\n      \"env\": {\n        \"DEEPSEEK_API_KEY\": \"sk-...\"\n      }\n    }\n  }\n}\n```\n\nNote that a missing key does not stop the server from starting, so the client\nwill report it as connected either way — `assertConfigured` only fires on the\nfirst tool call. If every call comes back with \"DEEPSEEK_API_KEY is not set\",\nthe `env` block is the place to look.\n\nThe server operates on its working directory, which is normally your project.\nSet `DEEPSEEK_REPO_ROOT` to override.\n\n## Local development\n\n```bash\ngit clone https://github.com/berrydev-ai/deepseek-mcp.git\ncd deepseek-mcp && npm install && npm run build\n```\n\nRun `npm run build` and commit `dist/` alongside any source change, otherwise\ninstalls keep serving the previous build.\n\n## Direct or through AI Gateway\n\nOne env var, no code change. `https://api.deepseek.com` is the default and has\nno dependencies. Pointing `DEEPSEEK_BASE_URL` at a Cloudflare AI Gateway\nendpoint instead gets you request logs, spend caps, caching and the ability to\nswap models without touching this repo — worth it the moment you want to\ncompare two models on the same review.\n\n## Tuning the prompts\n\n`prompts/review.md` and `prompts/consult.md` are the entire behaviour of the\nserver. They are plain markdown; edit and restart. Both are written to keep\noutput tight, because whatever DeepSeek returns lands in your primary agent's\ncontext window and competes with everything else there.\n\nThe review prompt enforces severity grouping and `file:line` anchors, and\nforbids restating what the code does. If reviews come back vague, the fix is\nalmost always in that file rather than in the TypeScript.\n\n## Getting it actually invoked\n\nThe most common failure mode is not a bug — it is that the primary agent never\ncalls the tool. Coding agents are reluctant to delegate. The tool descriptions\nare written to draw a clear line (substantial changes yes, one-line edits no),\nbut you may still need to ask for it explicitly at first, or add a line to your\n`CLAUDE.md` telling the agent to get a DeepSeek review before opening a PR.\n\nDelegation only pays for itself on work that involves reading and analysing\nreal amounts of code. On small tasks the per-call overhead dominates.\n\n## Guards\n\n- Paths are resolved and rejected if they escape the repo root.\n- Git refs are validated so an argument cannot be smuggled in as an option.\n- Input is truncated at a character budget, and the response says when that happened.\n- Model calls abort at 55s, below the ~60s tool-call timeout most clients enforce,\n  so you get a clear message rather than a hang.\n- Every response carries a footer with file count, model and token usage.\n\n## Notes\n\nBuilt on `@modelcontextprotocol/server` v2 via `serveStdio`, which serves both\nthe 2025 and 2026-07-28 protocol revisions from one factory — clients on either\nrevision work without configuration.\n\nModel defaults are `deepseek-v4-flash` for reviews and `deepseek-v4-pro` for\nconsults. Check them against whichever endpoint you point at — the names move\nover time.\n\nWatch out for the older `deepseek-chat` and `deepseek-reasoner` names. They\nstill return 200, but the response comes back as `deepseek-v4-flash`, so a\nstale value costs you the reasoning model without ever raising an error. The\nmodel in the response footer is read from the provider's reply rather than\nfrom your config, so it will tell you what actually ran.\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n","readmeFilename":"README.md","_rev":"1-2c3049e3683b83513c5533c1b0b734a7"}