mcpField
S
seekfetch

seekfetch

Local
github.com/esticklackSearch2Updated 2w ago

About seekfetch

seekfetch is an unofficial client for the DeepSeek Search & Fetch API, providing web search, page-to-Markdown extraction, and research for AI agents and developers. It is available as an MCP server, CLI, and TypeScript library, with model-ready summaries and paginated long-page content.

Key features

  1. 01Ranked web search results
  2. 02Extract pages as Markdown
  3. 03Return page content and sources from one research call
  4. 04Read long documents in offset-based chunks
  5. 05Retry with backoff and honor rate limits
  6. 06CLI and TypeScript library

Use cases

  1. 01Gather web sources for an agent
  2. 02Extract page content into Markdown notes
  3. 03Search results for specific sites or languages
  4. 04Read long pages in chunks to manage context

MCP support

The stdio MCP server provides MCP clients with DeepSeek search, page-fetch, and research tools; a DeepSeek API key is required.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"esticklack-seekfetch": {
"command": "npx",
"args": [
"-y",
"seekfetch"
],
"env": {
"DEEPSEEK_API_KEY": "<DEEPSEEK_API_KEY>"
}
}
}
}
Run commandnpx -y seekfetch
Environment variables to set
DEEPSEEK_API_KEYSecretYour DeepSeek API key (platform.deepseek.com)

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npmseekfetch0.1.0

Tools

3

Saved tool list · updated 1w ago

ParameterTypeRequiredDescription
langarrayNoLanguage codes, e.g. ["en", "es"].
afterstringNoOnly pages dated after this: YYYY, YYYY-MM or YYYY-MM-DD.
countintegerNoResults to return (default 10).
querystringYesSearch query, max 128 chars after filters are added.
sitesarrayNoOnly return results from these domains, e.g. ["github.com"].
beforestringNoOnly pages dated before this: YYYY, YYYY-MM or YYYY-MM-DD.
min_scorenumberNoDrop results below this rerank_score.
localizationstringNoOptional IP address used to localize results.
exclude_sitesarrayNoExclude results from these domains.
summary_charsintegerNoMax characters of each summary (default 800).
include_contentbooleanNoAlso return each page's text (truncated). Costs no extra request but uses much more context.
original_questionstringNoThe user's original question, in their words. Improves ranking; trimmed to 128 chars.

Details

From the project README

seekfetch

Web search and page-to-Markdown for AI agents, powered by the DeepSeek Search & Fetch API. One package, three ways to use it: an MCP server, a CLI, and a TypeScript library.

Unofficial community project. seekfetch is not affiliated with, endorsed by, or sponsored by DeepSeek. It is a client for DeepSeek's public API and needs your own API key.

CI npm License: MIT

Why

  • Calls the dedicated endpoints (/v1/tools/search, /v1/tools/fetch). No chat model sits in between, so a search costs one API request and no model tokens.
  • Search, fetch and research. research returns the best pages with their content from a single search request, and only fetches the pages that came back empty.
  • Built for context windows. It returns DeepSeek's model-ready summaries by default, filters by relevance score, and pages through long documents with an offset.
  • Production behavior. It retries 408/429/5xx with backoff and honors Retry-After. It paces requests to the 5 QPS account limit and validates inputs locally so bad requests never cost a call. It parses responses tolerantly, so new or missing fields don't break it.

Quick start

  1. Get an API key at platform.deepseek.com.
  2. Add seekfetch to your MCP client (below), or run it from the shell:
export DEEPSEEK_API_KEY=sk-...
npx -y seekfetch search "model context protocol registry"

Requires Node.js 22.12 or later.

MCP setup

The server runs over stdio with npx -y seekfetch mcp.

Claude Code
claude mcp add seekfetch -e DEEPSEEK_API_KEY=sk-... -- npx -y seekfetch mcp
Claude Desktop — claude_desktop_config.json
{
  "mcpServers": {
    "seekfetch": {
      "command": "npx",
      "args": ["-y", "seekfetch", "mcp"],
      "env": { "DEEPSEEK_API_KEY": "sk-..." }
    }
  }
}
Cursor — ~/.cursor/mcp.json
{
  "mcpServers": {
    "seekfetch": {
      "command": "npx",
      "args": ["-y", "seekfetch", "mcp"],
      "env": { "DEEPSEEK_API_KEY": "sk-..." }
    }
  }
}
VS Code — .vscode/mcp.json
{
  "inputs": [
    { "type": "promptString", "id": "deepseek-key", "description": "DeepSeek API key", "password": true }
  ],
  "servers": {
    "seekfetch": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "seekfetch", "mcp"],
      "env": { "DEEPSEEK_API_KEY": "${input:deepseek-key}" }
    }
  }
}
Codex — ~/.codex/config.toml
[mcp_servers.seekfetch]
command = "npx"
args = ["-y", "seekfetch", "mcp"]
env = { DEEPSEEK_API_KEY = "sk-..." }

On Windows, if your client can't find npx, use "command": "cmd" with "args": ["/c", "npx", "-y", "seekfetch", "mcp"].

Tools
ToolWhat it does
deepseek_searchRanked web results with a summary each (capped at 800 chars; summary_chars to change). Optional filters: sites, exclude_sites, lang, after, before, min_score; include_content adds page text.
deepseek_fetchA URL as Markdown. Long pages come in chunks of max_chars; continue with offset.
deepseek_researchQuestion → top-scoring pages with content and numbered sources, in one call.

All tools are read-only.

CLI

npm i -g seekfetch          # or prefix each command with npx -y

seekfetch search "rust async runtimes" -n 5 --min-score 1.5
seekfetch search "mcp server" --site github.com --lang en --after 2026-01-01
seekfetch research "how is the DeepSeek search API priced?" -o notes.md
seekfetch fetch https://example.com --max-chars 20000
seekfetch search "query" --json | jq '.results[].url'

Run seekfetch <command> --help for every flag.

Agent skill

skills/seekfetch/SKILL.md teaches agents with a shell (Claude Code, Codex and others that read SKILL.md) when and how to use the CLI. Copy the folder into your agent's skills directory, for example ~/.claude/skills/seekfetch/.

Library

import { DeepSeekWebClient, buildQuery, research } from "seekfetch";

const client = new DeepSeekWebClient({ apiKey: process.env.DEEPSEEK_API_KEY! });

const { results } = await client.search({
  query: buildQuery("vector databases", { sites: ["github.com"], after: "2026" }),
  count: 10,
});

const page = await client.fetch("https://example.com"); // { title, content (Markdown) }
const report = await research(client, { question: "What changed in MCP this year?", maxPages: 3 });

Configuration

VariableDefault
DEEPSEEK_API_KEY—Required.
DEEPSEEK_BASE_URLhttps://api.deepseek.comOverride for proxies.
DEEPSEEK_TIMEOUT_MS60000Per attempt.
DEEPSEEK_MAX_RETRIES3For 408, 429, 5xx and network errors.

API limits and pricing

As documented by DeepSeek on 2026-10-18; check the Search & Fetch guide for current terms.

  • Queries are limited to 128 characters, filters included. count is 1–50.
  • Observed in practice: summaries run 1,000–3,500 characters (the docs say 600–800), page content from search is capped around 20,000 characters, and site: is a strong preference rather than a strict filter.
  • 5 QPS per account for search, and separately for fetch. Fetch also has a per-domain limit.
  • Billing is per successful request, published at $0.75 per 1,000 for each API. Empty results and errors are not billed.

Development

npm install
npm test          # unit + MCP tests against a fake API
npm run build

Issues and PRs are welcome.

License

MIT. "DeepSeek" is a trademark of its owner and is used here only to describe the API this client calls.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.