dsh-tavily-mcp
Third-party community plugin for DeepSeek Harness. Not an official DeepSeek or Tavily product. MIT licensed.
English | 中文
Connects Tavily's hosted MCP server and registers the tools that server publishes. At release time those tools are search, extract, crawl, map, and research. They show up as mcp__tavily__*.
What it does
The agent can call Tavily without a local npx process. The plugin reads an API key from the DSH credential store and hands a Streamable HTTP connection to the built-in @deepseek-ai/dsh-mcp-client. The key is not stored in cordis.patch.yml.
If the credential is empty, the plugin stays loaded and registers no Tavily tools. Saving the credential reconnects.
How it works
- Resolve
apiKeyEnv(defaultTAVILY_API_KEY) throughctx.credentials. The store wins over the process environment. - Call
https://mcp.tavily.com/mcpwith that key as thetavilyApiKeyquery parameter and asAuthorization: Bearer. - Mount one
@deepseek-ai/dsh-mcp-clientchild. Tool names, schemas, and results come from the server. This package does not reimplement them. - When
credentials/reference-updatedfires for the same credential name, dispose that child and connect again.
Each tool call times out after 3 minutes. A dropped connection uses the MCP client's own reconnect policy.
Install
dsh plugin --profile web add dsh-tavily-mcp
GitHub checkout instead:
dsh plugin --profile web add github:NingYuanLee/dsh-tavily-mcp
The package declares dsh.bundle.patch, so dsh plugin add writes the bundle into the profile. Restart DeepSeek Harness if the tools do not appear in the current session.
Create a key at Tavily, then set the TAVILY_API_KEY credential in this plugin's settings, or export the same name in the environment that launches DeepSeek Harness.
Configuration
| Field | Default | Meaning |
|---|---|---|
apiKeyEnv |
TAVILY_API_KEY |
Credential reference. The value is not kept in this config. |
url |
https://mcp.tavily.com/mcp |
Remote MCP endpoint. http and https only, no user info. |
serverName |
tavily |
Namespace for tool names: mcp__<serverName>__<tool>. Must match [A-Za-z0-9_-]{1,32} and be unique among MCP clients in the same scope. |
Example profile override. A later patch replaces the whole config object, so repeat every field you still want:
- id: tavily-mcp
config:
apiKeyEnv: TAVILY_API_KEY
url: https://mcp.tavily.com/mcp
serverName: tavily
The Cordis row id is tavily-mcp. The package name is dsh-tavily-mcp.
Security
- The key is sent only to the configured endpoint.
- It is placed in the URL. Connection errors from the HTTP stack or the MCP client can include that URL. Treat those errors as secret.
- This plugin's own log lines do not print the key.
- Search text, page URLs, and crawl instructions are sent to Tavily.
- The plugin does not spawn a process and does not read the credentials file directly.
See SECURITY.md.
Compatibility
| Item | Value |
|---|---|
| dsh | >=0.2.1-rc.2 <0.3.0-0 |
| Node | >=22.19.0 |
| Verified on | dsh 0.2.1-rc.3, Windows x64, desktop profile |
| Requires | credentials, tools, and the shipped @deepseek-ai/dsh-mcp-client |
Display metadata is locale/en.json, locale/zh.json, and icon.svg. There is no Web UI and no build step.
Uninstall
dsh plugin --profile <name> remove dsh-tavily-mcp
Removing the plugin disconnects the MCP server and unregisters its tools. It does not delete the TAVILY_API_KEY credential. Nothing else is stored on disk by this package.
Troubleshooting
No mcp__tavily__* tools. The credential named by apiKeyEnv is empty, the server rejected the key, or another MCP client already reserved serverName tavily. Set the credential and restart the plugin. The plugin log says the credential is missing without printing its value.
serverName is already in use. Pick another serverName in config. That also changes the public tool names.
A call times out. Crawl and research can be slow. The limit is 3 minutes per call and is not a config field in 0.1.0.
Development
node --test test/*.test.js
node --check src/index.js && node --check src/endpoint.js
npm run check:pack
src/endpoint.js pure URL builder (unit-tested, no network)
src/index.js Cordis plugin: resolve the credential and mount dsh-mcp-client
locale/ display metadata (en, zh)
test/ node:test suites, including packaging invariants
No comments yet. Be the first to write one.