@kyaulabs/deepseek-websearch
This MCP server gives AI agents real-time web search capabilities powered by DeepSeek's native search tool — no third-party search API (e.g., SerpAPI, Tavily) required.
Core capability: Perform web searches via a single web_search tool call, with DeepSeek handling the entire pipeline server-side — searching, fetching pages, and synthesizing a detailed, Markdown-formatted answer with cited source URLs.
Use cases:
Look up recent events, current data, or time-sensitive information beyond the model's training cutoff
Fact-checking and documentation/changelog lookups
Price checks, release schedules, and technical references
Additional features:
Model selection: Choose between
deepseek-v4-flash(fast, low-cost) ordeepseek-v4-pro(more powerful, for complex queries)Cancellable searches: Supports
AbortSignalfor in-flight cancellationStandalone use: Import the core
searchWeb()function directly into your own code without the MCP server layerConfiguration: Set API key, model, and other parameters via environment variables or a JSON config file
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@kyaulabs/deepseek-websearch What's the latest news about the James Webb Space Telescope?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@kyaulabs/deepseek-websearch
An OpenCode-native MCP server that gives your agents real-time web search via DeepSeek's server-side web_search_20250305 tool. One tool call handles search, page fetch, decryption, and answer synthesis — no third-party search API required.
Based on lyumeng/websearch-deepseek (MIT). See Attribution.
How It Works
DeepSeek's Anthropic-compatible endpoint implements a built-in web_search_20250305 tool type. When your OpenCode agent calls the web_search tool, this MCP server forwards the query to DeepSeek, which performs the entire search pipeline server-side:
Agent calls web_search("latest Rust version")
│
▼
MCP Server ──POST──▶ api.deepseek.com/anthropic/v1/messages
tools: [{ type: "web_search_20250305" }]
│
▼ (all server-side)
1. Search the web
2. Fetch relevant pages
3. Decrypt page content
4. Synthesize a detailed answer
│
▼
MCP Server ◀──response── { text answer + source URLs }
│
▼
Agent receives Markdown answer with cited sourcesNo SerpAPI. No Tavily. No Brave Search key. DeepSeek does the searching itself.
Related MCP server: @jhzhu89/mcp-server-web-search
Quick Start
1. Get a DeepSeek API Key
Sign up at platform.deepseek.com and create an API key.
2. Add to Your OpenCode Config
Add the server to your project's opencode.json (or ~/.config/opencode/opencode.json for global):
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"deepseek-websearch": {
"type": "local",
"command": ["npx", "@kyaulabs/deepseek-websearch"],
"enabled": true,
"environment": {
"DEEPSEEK_API_KEY": "{env:DEEPSEEK_API_KEY}"
}
}
}
}The {env:DEEPSEEK_API_KEY} syntax reads from your environment — set it in .envrc (direnv) or your shell profile:
export DEEPSEEK_API_KEY=sk-xxxxxxxxxxxxxxxx3. Ask Your Agent
Restart OpenCode. Your agent now has a web_search tool available. Ask anything that needs current information:
"What's new in React 19?"
"Search for the latest Node.js LTS release schedule"
"Find the current DeepSeek API pricing"
The agent will automatically invoke web_search when it needs real-time data beyond its training cutoff.
Configuration
Environment Variables
Variable | Required | Default | Description |
| Yes | — | DeepSeek API key |
| No | — | Fallback key variable name |
| No |
|
|
| No |
|
|
| No |
| Max response tokens |
| No |
| API base URL (for proxies) |
JSON Config File
Prefer a config file over env vars? Create ~/.deepseek-websearch.json:
{
"apiKey": "sk-xxxxxxxxxxxxxxxx",
"model": "deepseek-v4-pro",
"thinking": "disabled",
"maxTokens": 16384
}Resolution order (each layer overrides the previous): defaults → JSON file → environment variables.
Model Selection
Model | Speed | Cost | Use When |
| Fast | Low | Daily searches (default) |
| Slower | Higher | Deep research, complex queries |
Cost
Each search consumes ~8,000–15,000 DeepSeek API tokens (search + thinking + answer generation). Check DeepSeek pricing for current rates.
Features
Zero runtime dependencies beyond the official
@modelcontextprotocol/sdkOfficial MCP SDK — proper capability negotiation, error envelopes, no hand-rolled JSON-RPC
TypeScript strict mode with 90%+ test coverage (Vitest)
Structured errors — rate-limit detection (429), network errors, API errors, cancellation
Configurable — env vars, JSON config file, or per-call programmatic overrides
AbortSignal support — searches are cancellable
Clean module separation — import
searchWeb()directly from your own code if you don't need the MCP layer
Development
npm install # install dependencies
npm test # run unit test suite (56 tests)
npm run test:integration # run live API tests (requires DEEPSEEK_API_KEY)
npm run build # compile TypeScript → dist/
npm run check # type-check without emittingUsing the Core Library Directly
The search logic is framework-agnostic. You can import it without the MCP server:
import { searchWeb } from "@kyaulabs/deepseek-websearch/search";
const result = await searchWeb("latest TypeScript features");
console.log(result.textAnswer); // AI-generated answer
console.log(result.results); // SearchResult[] with title, url, pageAgeAttribution
This project is based on lyumeng/websearch-deepseek by @lyumeng, originally released under the MIT License.
The original project established the approach of using DeepSeek's Anthropic-compatible endpoint with the web_search_20250305 tool type for server-side web search via MCP. This version is an independent engineering rewrite with the following improvements:
Official
@modelcontextprotocol/sdkreplaces hand-rolled JSON-RPCTypeScript strict mode with comprehensive Vitest test suite (90%+ coverage)
Structured error handling with actionable codes (rate-limit detection, invalid config)
Env vars + optional JSON config file with merge cascade
Bug fix: system prompt placed as top-level
systemparameter (correct Anthropic Messages API format)
Available Tools
1 toolweb_searchA
Search the web for current, real-time, or factual information. Use when you need information beyond training data — recent events, current data, documentation lookups, or fact-checking. Returns a detailed AI-generated answer based on full page content, plus source URLs. Powered by DeepSeek's native web search.
Inputs: query (required), explanation.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 1 tool
Only one tool exists, so there is no possibility of confusion or overlapping purposes.
The single tool uses a clear snake_case verb_noun pattern ('web_search'), which is consistent and predictable.
One tool is slightly below the typical 3-15 range, but it is reasonably scoped for a focused web search server.
The tool covers the core search functionality thoroughly, returning both detailed AI-generated answers and source URLs, with no obvious gaps.
Maintenance
Related MCP Connectors
Enable AI assistants to perform web searches using Perplexity's Sonar Pro.
Real-time web search, reasoning, and research through Perplexity's API
Agent-native search engine with live web research optimized for AI agents.
The best web search for your AI Agent
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables real-time web search via DeepSeek's search-enhanced dialogue, providing search results as answers through MCP tools.1MIT
- AlicenseNot gradedqualityDmaintenanceEnables web search via Azure OpenAI Responses API with the web_search_preview tool, returning results with citations.34 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables web search and webpage content fetching with SSRF protections, returning structured results.MIT
- AlicenseNot gradedqualityCmaintenanceEnables MCP clients to perform DeepSeek-native web searches through the Anthropic-compatible Messages endpoint, returning summarized results with cited sources.MIT