Atlas / MCP servers / sluisr / ๐Ÿ‹ DeepSeek CLI

๐Ÿ‹ DeepSeek CLIBLOCK

mcp/sluisr/deepseek-cli

DeepSeek CLI โ€” unofficial adaptation of Gemini CLI by sluisr. Full agentic AI in your terminal using DeepSeek API.

Verdict
BLOCK
Grade
F
Trust score
21 /100
Exposed tools
200 238r ยท 23w ยท 2d
Transport
stdio ยท streamable-http
License
Apache-2.0
Stars
5
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

Unofficial fork of Google Gemini CLI adapted to use the DeepSeek API. Original work Copyright 2025 Google LLC โ€” Adaptations Copyright 2026 sluisr โ€” Apache 2.0 License.

[](LICENSE) [](https://www.npmjs.com/package/@sluisr/deepseek-cli)

DeepSeek CLI is an open-source AI agent that brings the power of DeepSeek directly into your terminal. High-performance autonomous coding, tool execution, and context management by sluisr.

๐Ÿš€ Why DeepSeek CLI?

  • ๐Ÿ’ฐ Pay-per-use & Cost-Efficient: Pay only for tokens used via DeepSeek API with up to 90% KV Cache discount.
  • ๐Ÿง  DeepSeek V4 Models: Full support for deepseek-v4-flash and deepseek-v4-pro (Reasoning / Thinking CoT mode).
  • โšก Fast Code Patching: Atomic unified diff patching (apply_patch) for instant, token-efficient code modifications.
  • ๐Ÿ› ๏ธ Built-in Developer Tools: File system operations, native server-side web search, shell execution, memory persistence, and FIM autocompletion.
  • ๐Ÿ”‘ Silent Sudo & System Auth: Native non-blocking zero-lag AskPass integration for sudo, ssh, and git.
  • ๐Ÿ”Œ MCP Extensible: Full Model Context Protocol (MCP) server support.
  • ๐Ÿ”’ Isolated Configuration: Operates under ~/.deepseek/ without polluting system or official CLI configurations.

๐Ÿ“ฆ Installation

Quick Install (NPM Global)

npm install -g @sluisr/deepseek-cli

Then run:

deepseek

Update to Latest Version

npm install -g @sluisr/deepseek-cli@latest

๐Ÿ” Authentication

Get your API key at platform.deepseek.com/api_keys and export it:

export DEEPSEEK_API_KEY="your-api-key-here"
deepseek

Or enter it interactively when prompted on first launch.

Optional custom base URL or pr

Read from source at commit 8c6eb2a380c4OBSERVED ยท 2026-10-12
Advertisement
02

Connect

Built from this server's own package name, version and transport as found in its source โ€” not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add ingestion-service --env DEEPSEEK_SUDO_PASSWORD=${DEEPSEEK_SUDO_PASSWORD} --env FORCE_GENERIC_KEYBINDING_HINTS=${FORCE_GENERIC_KEYBINDING_HINTS} --env GEMINI_API_KEY=${GEMINI_API_KEY} --env GEMINI_CLI_CREDENTIALS_PATH=${GEMINI_CLI_CREDENTIALS_PATH} -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "ingestion-service": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "DEEPSEEK_SUDO_PASSWORD": "${DEEPSEEK_SUDO_PASSWORD}",
        "FORCE_GENERIC_KEYBINDING_HINTS": "${FORCE_GENERIC_KEYBINDING_HINTS}",
        "GEMINI_API_KEY": "${GEMINI_API_KEY}",
        "GEMINI_CLI_CREDENTIALS_PATH": "${GEMINI_CLI_CREDENTIALS_PATH}"
      }
    }
  }
}
03

Exposed tools (200)

238 read ยท 23 write ยท 2 destructive. Blast radius: 2 tools can delete or overwrite โ€” an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
BrowserLikeAgentreadAn agent using instance tools.
CodebaseInvestigatorreadInvestigates codebase
DefaultreadPrompts for approval
DisabledAgentreadI am disabled
Editwritepackages/.../InputPrompt.tsx: return kittyProtocolSupporte... => return kittyProtocolSupporte...
EmptyDescAgentread
ExpansionreadCommand expansion needs shell access
FailAgentreadAn agent that fails to load
FailingRemoteAgentreadA remote agent
Freereadfree tier
MixedAgentreadUses both patterns.
MockAgentreadA mock agent for testing.
OtherAgentreadAnother agent
OverwrittenAgentreadA remote agent
PlanreadRead-only mode
ProjectAgentreadProject Agent Desc
R1readD1
RemoteAgentreadA remote agent
RemoteAgentAccumulationTestreadUser-provided description
RemoteAgentBadAuthreadA remote agent
RemoteAgentWithAuthreadA remote agent
RemoteAgentWithDescriptionreadUser-provided description
RemoteAgentWithEmptyAgentDescriptionreadUser-provided description
RemoteAgentWithSkillsOnlyreadUser-provided description
RemotePolicyAgentreadA remote agent
SecuredAgentreadA secured remote agent
Shellreaduser-command
ShellToolreadA shell tool
Skill1readDesc1
Skill2readDesc2
SkillFallbackAgentreadUser description
TestreadTest desc
TestAgentreadAn agent for testing.
TestLocalAgentreadA local test agent.
TestProtocolAgentreadA test agent for protocol tests.
TestRemoteAgentreadA remote test agent.
UsernamereadYour public username
ValuereadVal
YOLOreadAuto-approves all tools
__leadingreadtest
a__b__creadthree parts - not valid MCP
aboutreadAbout the CLI
accessibility-agentreadAn expert in web accessibility and ARIA roles.
addwriteAdd two numbers
agent_1readTest agent 1
agent_2readTest agent 2
agentsreadManage agents
alphareadAlpha command
analytics-agentreadAn expert in tracking, analytics, and metrics.
another-commandreadAnother test command
another-toolreadAnother tool
arg1readArgument 1
ask_userreadask user
auditreadTriage issues labeled as status/need-triage
authreadManage authentication
bravoreadBravo command
browser_agentreadmock definition
bugwriteSubmit a bug report
bug-memoryreadCapture a V8 heap snapshot to disk to attach to a bug report
builtinreaddesc2
builtin-skillreadA built-in skill
catchAllToolreadCatches all errors
chatreadBrowse auto-saved conversations and manage chat checkpoints
checkSystemStatusreadChecks the current system status
childreada child command
child1readFirst child.
cleardestructiveClear the screen
clickreadClick element
click_atreadClick at coordinates
closeDiffread
close_pagereadClose page
codebase_investigatorreadInvestigating codebase
commandsreadManage custom slash commands. Usage: /commands [list|reload]
commitwriteCommit changes
common-agentreadUser version
complex-agentreadA complex markdown agent
configreadConfigure an agent
confirmreada command that needs confirmation
confirming_toolreadConfirming tool description
context-check-commandreadchecks context
copyreadCopy the last result or code snippet to clipboard
corgireadToggles corgi mode
css-agentreadAn expert in CSS, styling, and UI design.
custom-scriptwriteRun custom script
cyclic-commandread
database-agentreadAn expert in database schemas, SQL, and creating database migrations.
debugreadExport the most recent API request as a JSON payload
dedupreadTriage issues labeled as status/possible-duplicate
deletedestructiveDelete a conversation checkpoint. Usage: /resume delete <tag>
devops-agentreadAn expert in CI/CD, Docker, and deployment scripts.
disablewriteDisable an enabled agent
disabled-builtinreaddisabled builtin
docsreadOpen full Gemini CLI documentation in your browser
docs-agentreadAn agent with expertise in updating documentation.
editwriteedit file
edit-toolwritedesc
editorwriteSet external editor preference
enablewriteEnable a disabled agent
error-toolreadThis tool failed
exit_plan_modereadexit plan mode
explorereadOpen extensions page in your browser
export-sessionreadExport the current session to a JSON file
extensionsreadManage extensions.
failToolreadMock description
failVisiblereadFails with a visible error if input is
failing-toolreadA tool that fails
fetch_postsread
filecmdreadA command from a file
fillreadFill form field
fooreadexample resource
freereadFree tier
gemmareadCheck local Gemma model routing status
get_contextreadGet information about the current session context.
get_ticketreadGet a ticket
helpreadShow help for this prompt
hiddenreadA hidden command
hidden-childreadA hidden child command
hooksreadManage hooks
hoverreadHover element
i18n-agentreadAn expert in internationalization and translations.
idereadIDE command
inboxwriteReview skills extracted from past sessions and move them to global or project skills
inferred-remotereadInferred
initreadInitializes the server.
installwriteInstall an extension from a git repo or local path
json-remotereadA JSON-based remote agent
legacy-toolreaddesc
linkreadLink an extension from a local path
listreadList available local and remote agents
list_pagesreadlist all pages
locked-skillreadA skill in a locked dir
lsreadlist directory
managereadOpens a dialog to configure the model
mcpreadMCP command
mcp-agentreadAn agent with MCP servers
mcp_myserver_searchreadSearch via MCP
mcpcmdreadA command from mcp
memoryreadCommands for interacting with memory
memory-leakreadDebug memory leaks
mobile-agentreadAn expert in React Native and mobile app development.
mock-agentreadMock Agent Description
modelreadManage model configuration
multiAnnotationToolreadA tool with multiple annotations
navigate_pagereadNavigate to URL
new_pagereadOpen a new page/tab
no-card-agentreadMissing card info
noactionreadunhandled type
non-stream-testreadA test non-streaming command
not-top-levelreadNot a top level command
notakesreadSubcommand that does not take arguments
nullableToolreadTool with nullable array
oauth-test-agentreadAn agent to test OAuth MCP with full fields
oncallreadOncall related commands
onereadfirst
openDiffread
other_toolread
paidreadPaid tier
parentreadA parent command
pending-toolreadThis tool is pending
permissionsreadPermissions command
planreadPlan command
policiesreadManage policies
policy-test-toolreadtests policy
press_keyreadPress key
privacyreadDisplay the privacy notice
profilereadProfile command
project-agentreaddesc
project-geminireaddesc
project-onlyreadProject only
prompt-1readA test prompt
question-markreadAlternative name for help
readOnlyToolreadA read-only tool
read_filereadRead a file
regularreaddesc1
regular-skillreadregular
remote-agentreadA remote agent
remote_agentreadRemote agent description.
remote_agent_callreadRemote agent call
replacewriteedit file
resourcereadTest Resource
restorereadRestores the server.
resumereadBrowse auto-saved conversations and manage chat checkpoints
reviewreadReview code
review-frontendreadReview frontend code
rewindwriteJump back to a specific message and restart the conversation
run_shell_commandwriteRun command
s1readd1
s2readd2
s3readd3
same-namereadext-desc
same-skillreadgemini-desc
savewriteSave the current conversation as a checkpoint. Usage: /resume save <tag>
schemareadList configured MCP servers and tools with descriptions and schemas
security-agentreadAn expert in security audits and vulnerability patches.
select_pagereadSelect page
sessionreadShow session-specific usage statistics
setwriteSet the model to use. Usage: /model set <model-name> [--persist]
settingswriteView and edit Gemini CLI settings
setup-githubwriteSet up GitHub Actions
sharereadShare the current conversation to a markdown or json file. Usage: /resume share <file>
04

Trust audit

BLOCKgrade F ยท trust 21/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryWARN
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)FAIL
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (8 observation(s))
Network
declared (13 observation(s))
Shell
declared (5 observation(s))
Dependencies
not all pinned
Secrets in source
found

Findings (25)

HIGHCode injection ยท code.eval_exec ยท CWE-78, CWE-94, CWE-95
packages/cli/src/acp/commands/about.ts:32
sandboxEnv = `sandbox-exec (${
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection ยท code.eval_exec ยท CWE-78, CWE-94, CWE-95
packages/cli/src/ui/commands/aboutCommand.ts:33
sandboxEnv = `sandbox-exec (${
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection ยท code.eval_exec ยท CWE-78, CWE-94, CWE-95
packages/cli/src/ui/commands/bugCommand.ts:46
sandboxEnv = `sandbox-exec (${
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection ยท code.eval_exec ยท CWE-78, CWE-94, CWE-95
packages/sdk/src/types.ts:183
exec(cmd: string, options?: AgentShellOptions): Promise<AgentShellResult>;
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHNetwork egress ยท net.env_exfil ยท CWE-200, CWE-319
packages/cli/src/utils/sandbox.ts:170
{ ...process.env } ... curl
Why it matters. reads secrets in the same file that sends data out
HIGHPrompt injection ยท prompt.zero_width ยท CWE-94, CWE-1427
docs/changelogs/index.md:914
- **Experimental todos:** Track and display progress on complex tasks with a
Why it matters. invisible characters in instruction text
Fix. strip non-printing characters
HIGHPrompt injection ยท prompt.zero_width ยท CWE-94, CWE-1427
packages/vscode-ide-companion/NOTICES.txt:2217
# MIT License
Why it matters. invisible characters in instruction text
Fix. strip non-printing characters
MEDIUMInventory / provenance ยท inv.binary ยท CWE-1104
packages/core/src/utils/__fixtures__/dummy.wasm
dummy.wasm
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMNetwork egress ยท net.raw_ip ยท CWE-200, CWE-319
integration-tests/browser-agent-localhost.dynamic.responses:1
{"method":"generateContentStream","response":[{"candidates":[{"content":{"parts":[{"text":"I'll check the dynamic content page on the localhost server."},{"functionCall":{"name":"invoke_agent","args":
MEDIUMNetwork egress ยท net.raw_ip ยท CWE-200, CWE-319
integration-tests/browser-agent-localhost.dynamic.responses:2
{"method":"generateContentStream","response":[{"candidates":[{"content":{"parts":[{"functionCall":{"name":"navigate_page","args":{"url":"http://127.0.0.1:18923/dynamic.html"}}}],"role":"model"},"finis
MEDIUMNetwork egress ยท net.raw_ip ยท CWE-200, CWE-319
integration-tests/browser-agent-localhost.form.responses:1
{"method":"generateContentStream","response":[{"candidates":[{"content":{"parts":[{"text":"I'll fill out the contact form on the localhost server."},{"functionCall":{"name":"invoke_agent","args":{"age
MEDIUMNetwork egress ยท net.raw_ip ยท CWE-200, CWE-319
integration-tests/browser-agent-localhost.form.responses:2
{"method":"generateContentStream","response":[{"candidates":[{"content":{"parts":[{"functionCall":{"name":"navigate_page","args":{"url":"http://127.0.0.1:18923/form.html"}}}],"role":"model"},"finishRe
MEDIUMNetwork egress ยท net.raw_ip ยท CWE-200, CWE-319
integration-tests/browser-agent-localhost.multistep.responses:1
{"method":"generateContentStream","response":[{"candidates":[{"content":{"parts":[{"text":"I'll go through the multi-step flow on the localhost server."},{"functionCall":{"name":"invoke_agent","args":
MEDIUMObfuscation / stealth ยท obf.anti_debug ยท CWE-506, CWE-94
packages/core/src/sandbox/linux/LinuxSandboxManager.ts:84
{ code: 0x15, jt: 0, jf: 1, k: SYS_ptrace }, // If ptrace, jump to ERRNO
MEDIUMObfuscation / stealth ยท obf.base64_blob ยท CWE-506, CWE-94
integration-tests/browser-agent.persistent-session.responses:1
{"method":"generateContentStream","response":[{"candidates":[{"content":{"parts":[{"text":"I will invoke the browser agent to get the page title of example.com."}],"role":"model"},"index":0}],"usageMe
MEDIUMObfuscation / stealth ยท obf.base64_blob ยท CWE-506, CWE-94
integration-tests/browser-agent.persistent-session.responses:2
{"method":"generateContentStream","response":[{"candidates":[{"content":{"parts":[{"functionCall":{"name":"list_pages","args":{"wait_for_previous":true},"id":"q9a8dwir"},"thoughtSignature":"Et4DCtsDAb
MEDIUMObfuscation / stealth ยท obf.base64_blob ยท CWE-506, CWE-94
integration-tests/browser-agent.persistent-session.responses:3
{"method":"generateContentStream","response":[{"candidates":[{"content":{"parts":[{"functionCall":{"name":"new_page","args":{"url":"http://example.com","wait_for_previous":true},"id":"q8jik45z"},"thou
MEDIUMObfuscation / stealth ยท obf.base64_blob ยท CWE-506, CWE-94
integration-tests/browser-agent.persistent-session.responses:4
{"method":"generateContentStream","response":[{"candidates":[{"content":{"parts":[{"functionCall":{"name":"navigate_page","args":{"wait_for_previous":true,"url":"https://example.com","type":"url"},"id
MEDIUMObfuscation / stealth ยท obf.base64_blob ยท CWE-506, CWE-94
integration-tests/browser-agent.persistent-session.responses:5
{"method":"generateContentStream","response":[{"candidates":[{"content":{"parts":[{"functionCall":{"name":"navigate_page","args":{"wait_for_previous":true,"url":"http://example.com","type":"url"},"id"
MEDIUMHard-coded secrets ยท secret.generic ยท CWE-798, CWE-321
packages/core/src/code_assist/oauth2.test.ts:439
.mockResolvedValue({ token: 'test-access-token-user-code' });
MEDIUMHard-coded secrets ยท secret.private_key ยท CWE-798, CWE-321
packages/core/src/agents/browser/browserAgentInvocation.test.ts:632
'Failed to authenticate:\n-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEA12345...\n-----END RSA PRIVATE KEY-----\nPlease check credentials.',
MEDIUMHard-coded secrets ยท secret.private_key ยท CWE-798, CWE-321
packages/core/src/services/environmentSanitization.test.ts:105
RSA_KEY: '-----BEGIN RSA PRIVATE KEY-----...',
MEDIUMHard-coded secrets ยท secret.private_key ยท CWE-798, CWE-321
packages/core/src/services/environmentSanitization.test.ts:106
OPENSSH_KEY: '-----BEGIN OPENSSH PRIVATE KEY-----...',
MEDIUMHard-coded secrets ยท secret.private_key ยท CWE-798, CWE-321
packages/core/src/services/environmentSanitization.test.ts:107
EC_KEY: '-----BEGIN EC PRIVATE KEY-----...',
MEDIUMHard-coded secrets ยท secret.private_key ยท CWE-798, CWE-321
packages/core/src/services/environmentSanitization.test.ts:108
PGP_KEY: '-----BEGIN PGP PRIVATE KEY-----...',

Gates applied: no_behavioural_pass.

Audited 2026-10-12 ยท audit v0.4.1 ยท source sha 8c6eb2a380c4full audit observations/trust-audit/mcp-server/sluisr__deepseek-cli.json ยท Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-128c6eb2a380c4BLOCKF21first audit
06

Questions

What is the @sluisr/deepseek-cli MCP server?

DeepSeek CLI โ€” unofficial adaptation of Gemini CLI by sluisr. Full agentic AI in your terminal using DeepSeek API.

What tools does @sluisr/deepseek-cli expose?

200 in total: 238 read-only, 23 that write, and 2 that can delete or overwrite (clear, delete). Every one is listed on this page with its risk.

Is @sluisr/deepseek-cli safe to connect to an agent?

No โ€” not without reading the findings first. The audit graded it F (21/100) and found 7 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 2 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does @sluisr/deepseek-cli need?

It reads DEEPSEEK_SUDO_PASSWORD, FORCE_GENERIC_KEYBINDING_HINTS, GEMINI_API_KEY, GEMINI_CLI_CREDENTIALS_PATH, GITHUB_TOKEN, TEST_SECRET_TOKEN and WINDOWS_PFX_PASSWORD from the environment. Give it a token scoped to the least it needs โ€” an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does @sluisr/deepseek-cli run?

It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as ingestion-service at 1.0.0.

How current is this page?

The grade is for one exact copy of the source (8c6eb2a380c4), read on 2026-10-12. The repository is watched and re-audited when it changes.

Advertisement