Skip to main content
Glama
habitssss

DeepSeek Web MCP

by habitssss

DeepSeek Web MCP

English | 中文

An MCP server that calls DeepSeek's official Search and Fetch APIs directly. It returns search results and page content without calling a chat model to generate an answer.

This is a community project, not an official DeepSeek product. It is licensed under MIT.

Installation

You need Node.js 22 or newer and a DeepSeek API key.

Add the server to an MCP client that supports stdio. The client downloads and runs the npm package with npx; no separate installation is needed. Set DEEPSEEK_API_KEY through your client's secret manager if available. Otherwise, keep the key in a private local configuration file and never commit it to Git.

{
  "mcpServers": {
    "deepseek-web": {
      "command": "npx",
      "args": ["-y", "deepseek-web-mcp@0.1.0"],
      "env": {
        "DEEPSEEK_API_KEY": "YOUR_DEEPSEEK_API_KEY"
      }
    }
  }
}

The MCP client starts the server as a child process. The server does not open a web page or listen on an HTTP port. If started directly in a terminal, it waits for MCP messages without displaying a prompt.

Related MCP server: deepseek-search-mcp

Tools

Tool

Official endpoint

Result

search

POST https://api.deepseek.com/v1/tools/search

Ranked search results with URLs, summaries, and optional page content

fetch

POST https://api.deepseek.com/v1/tools/fetch

Page title and Markdown content

{
  "query": "DeepSeek site:api-docs.deepseek.com",
  "count": 3,
  "need_content": true
}

query is required. It must contain 1 to 128 Unicode characters and cannot be all whitespace. DeepSeek's search operators are passed through, including site:, -site:, quoted phrases, lang:, after:, and before:.

Optional parameter

Meaning

Default

count

Number of results, from 1 to 50

10

need_content

Include page content when available

false

ori_question

Original user question, up to 128 Unicode characters; accepts null

Omitted

localization

IP address used to localize results

Omitted

An empty search returns {"results":[]} and is not an error. Setting need_content to true does not guarantee content for every result.

fetch

{
  "url": "https://api-docs.deepseek.com/guides/search"
}

url is required and limited to 8192 characters. It must use HTTP or HTTPS and cannot contain a username or password. DeepSeek fetches the page. The local MCP process does not connect to the target site.

Both tools return MCP structuredContent and the same JSON as text for clients that do not use structured results. Additional fields returned by the API are preserved. Page content is passed through as received, including any Markdown escapes.

Cost and data handling

Search queries, original questions, localization IPs, and target URLs are sent to DeepSeek. Authentication uses the DEEPSEEK_API_KEY environment variable. The server does not store the key or log request content. Standard output is reserved for MCP messages.

Each tool call sends one API request. There are no automatic retries. Requests time out after 30 seconds and respond to client cancellation. A timeout or cancellation does not guarantee that DeepSeek stops processing the request.

DeepSeek lists both Search and Fetch at USD 0.75 per 1,000 successful requests that produce results. Check the official guide for current prices and limits. Free usage arrangements for products such as DeepSeek Harness do not imply that this server's direct API requests are free.

HTTP failures are returned as MCP tool errors with a status code. Upstream error bodies and exception details are not forwarded, to avoid exposing credentials. Treat web content as untrusted data, not instructions.

Testing

Run the local tests without an API key or network calls to DeepSeek:

npm test

To test against the real APIs, first set DEEPSEEK_API_KEY in your environment, then run:

npm run test:live

The live test starts the CLI, completes the MCP stdio handshake, and calls both tools. It verifies search results and the fetched official documentation. It makes two billable API requests and prints counts, content length, and elapsed time without printing the key.

Development

To run from source:

git clone https://github.com/habitssss/deepseek-web-mcp.git
cd deepseek-web-mcp
npm ci

For a source checkout, use "command": "node" and "args": ["/absolute/path/deepseek-web-mcp/cli.js"] in your MCP configuration instead of npx.

The code uses JavaScript ES modules and needs no build step. server.js defines the tools and API requests. cli.js starts the stdio transport. Run npm test after changes, and run the live test when changing API arguments or response handling.

Available Tools

2 tools
fetchA
Read-onlyIdempotent

Retrieve one public web page through DeepSeek and return its title and Markdown content. Use to read a known URL. No chat model is called.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
titleYes
contentYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the safety profile is covered. The description adds real context beyond them: only public pages are reachable (implying no auth or paywalled content), and 'No chat model is called' rules out any expectation of LLM summarization or reasoning over the page.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with no filler: action and return value first, usage directive second, clarification third. Fully front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so return values need not be explained, and the annotations cover the safety profile. Scope (single page, public only) is stated. Minor gap: no mention of failure behavior for unreachable or non-public URLs, which matters for a fetch tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter and schema coverage is 0%, so the description must carry the semantics. 'Known URL' and 'public web page' give implied format and scope, but nothing is said about URL validation, redirects, or what happens on non-public targets. A 3 is fair for a self-evident single 'url' string.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (retrieve), resource (one public web page), and a defined output (title and Markdown content). 'Use to read a known URL' functionally separates it from the sibling search tool, which finds URLs the agent doesn't already have.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to read a known URL' gives clear when-to-use context and implicitly routes away from search for unknown URLs. It stops short of an explicit 'do not use for search/discovery' exclusion, but the selection condition is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv0.1.0
    • First observedfetch
    • First observedsearch

TDQS

A3.9/5.0

Scored across 2 tools

Disambiguation5/5

fetch and search target clearly distinct operations: retrieving a known URL versus discovering URLs via query. The descriptions reinforce the boundary ('read a known URL' vs 'current information'), leaving no realistic chance of misselection.

Naming Consistency4/5

Both names are lowercase single verbs in a consistent style, so the set reads predictably. It's a minor deviation from the stronger verb_noun convention (fetch_page, search_web) that would encode the resource.

Tool Count3/5

Two tools is on the thin side for a web-access server, though each earns its place. It sits at the borderline where a couple of adjacent capabilities (e.g. batch fetch) might be expected.

Completeness4/5

fetch plus search cover the core read-only web domain with no dead ends for the stated purpose. Minor gaps exist around bulk retrieval, pagination, or content-type controls, but agents can work around them.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    Enables MCP clients to run web searches via DeepSeek's open platform API, with optional web page fetching that returns Markdown content, and supports query syntax for source, language, and time filters.
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables MCP clients to run web searches and fetch web page contents through DeepSeek's Search and Fetch APIs, returning structured JSON results with configurable tool names and multiple transport options.
    2
    2
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables agents to run web searches with query operators and to fetch web pages as Markdown through DeepSeek's native Search/Fetch JSON API. It acts as a fallback for hosts whose built-in web tools are unavailable or return errors such as HTTP 403, rather than retrying them repeatedly.
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI agents to perform real-time web search and fetch/parse webpages into clean Markdown through DeepSeek's Search and Fetch APIs. It provides configurable summaries, scoring, and robust retries for integration with MCP-compatible assistants.
    2
    1
    MIT