Preface¶
DSH’s web_search tool, under the default official search, calls DeepSeek’s metered search service, which depends on DEEPSEEK_API_KEY and incurs balance consumption. If you want to switch DSH to an anonymous, key-free free search backend and also connect the same backend to MCP clients such as Claude Code / Codex, dsh-web-search-free provides both a plugin toggle and an MCP server.
What This Is¶
sheep-programmer/dsh-web-search-free is an MIT-licensed DSH plugin, published on npm as @sheep233_/dsh-web-search-free. It provides three things: a free web search provider inside DSH, an official/free toggle in DSH settings, and a standalone MCP server.
Core Features¶
Free Backend¶
- Free backends: Parallel (default) / Exa (fallback)
- Anonymous, key-free — no API key required, no balance deductions
- When free search is enabled,
web_searchrequests are sent only tosearch.parallel.ai/mcp.exa.ai - Optional environment variable
EXA_API_KEYto increase Exa’s anonymous quota
DSH Settings Toggle¶
Settings path: DSH Settings → Plugin Settings → Configurable → Free Web Search.
- The
enabledtoggle is off by default, meaning the official search is used; turning it on uses the free search - Free backend radio: Parallel (default) / Exa (fallback)
- Changes automatically maintain the profile patch file
~/.dsh/profiles/web/cordis.patch.ymlby overriding thesearchProvideron thewebline; turning it off removes the override block - Restart DSH after changes for them to take effect
MCP Server¶
The MCP server is located at lib/mcp-server.js, zero-dependency, and does not depend on DSH.
- Exposes the
web_searchtool - Parameters:
query(required);provider(optional, values:parallel/exa);numResults(optional) - Transports: stdio and HTTP/SSE
- stdio mode does not listen on any port
- HTTP/SSE default address is
http://127.0.0.1:3100, bound to the loopback interface only by default - Only calls the free endpoints listed above; reads no files or environment variables except the optional
EXA_API_KEY
Installation and Activation¶
For the settings card to appear, the following conditions must be met: the profile is web; the package is declared in dsh.profile.bundles; DSH is restarted after installation; and the browser page is refreshed before opening settings.
- Install the dependency using DSH’s official install command:
dsh plugin --profile web add @sheep233_/dsh-web-search-free
- Add the package name to
dsh.profile.bundlesin~/.dsh/profiles/web/package.json, while ensuring the same package name is present independencies; the version range should follow the npm package’s current release or what the package manager records — this article does not pin a version number. The configuration looks like:
{
"dsh": {
"profile": {
"bundles": [
"@sheep233_/dsh-web-search-free"
]
}
},
"dependencies": {
"@sheep233_/dsh-web-search-free": "Use the version range per current release"
}
}
-
Restart DSH and refresh the browser page.
-
Open
DSH Settings → Plugin Settings → Configurable → Free Web Search, enableenabled, choose Parallel or Exa, then restart DSH. -
For end-to-end verification in a local source directory, you can run:
npm run verify
Typical Usage: Connecting to MCP Clients¶
stdio Mode¶
stdio is the default transport and does not require any additional port.
Claude Code:
claude mcp add dsh-web-search -- npx -y @sheep233_/dsh-web-search-free
Codex:
codex mcp add dsh-web-search -- npx -y @sheep233_/dsh-web-search-free
You can also use a local source path:
claude mcp add dsh-web-search -- node /absolute/path/dsh-web-search-free/lib/mcp-server.js
codex mcp add dsh-web-search -- node /absolute/path/dsh-web-search-free/lib/mcp-server.js
HTTP/SSE Mode¶
First, start the MCP server:
node /absolute/path/dsh-web-search-free/lib/mcp-server.js --http --port 3100
It listens at http://127.0.0.1:3100 by default. Use --host / --port to adjust the address and port.
Claude Code:
claude mcp add --transport http dsh-web-search http://127.0.0.1:3100
Codex:
codex mcp add --transport http dsh-web-search http://127.0.0.1:3100
Other MCP clients that support stdio or HTTP/SSE can also connect using the same commands or URL.
Reverting to Official Search¶
Turn off the enabled toggle in the settings card, then restart DSH. You can also manually delete the override block between # >>> web-search-free and # <<< web-search-free in ~/.dsh/profiles/web/cordis.patch.yml.
Use Cases and Notes¶
- Suitable for replacing the official metered search with a free backend in DSH’s
webprofile. - Suitable for connecting the free
web_searchtool to Claude Code / Codex or other MCP clients that support stdio / HTTP/SSE. - The plugin runs within the current DSH process environment; review the source code and MIT license before installation.
- The DSH plugin side has no keys, no data collection, and no listening; when free search is enabled, requests go only to
search.parallel.ai/mcp.exa.ai. - HTTP/SSE binds to the loopback interface only by default; if you change
--hostto expose it to the network, you should assess access control risks yourself. EXA_API_KEYis optional and used to increase Exa’s anonymous quota; when not set, the anonymous endpoint is used.
Conclusion¶
The value of dsh-web-search-free lies in bundling DSH’s free web search toggle, profile patch integration, and a reusable MCP server into a single package. GitHub repository:
https://github.com/sheep-programmer/dsh-web-search-free
For a directory listing entry, refer to what DSH or the community directory provides; this article does not include any unverified directory URLs.