Skip to content

Repository files navigation

dsh-research-plugins

Research plugins for DeepSeek Harness — a pnpm monorepo adding web search and MCP (Model Context Protocol) bridges for AI research, web scraping, and live documentation to your DSH agent.

GitHub stars GitHub forks @pymodel/dsh-tavily on npm dsh-mcp-firecrawl on npm dsh-mcp-context7 on npm MIT license visitors

What this is · Install · API keys · Repo layout · License


What this is

dsh-research-plugins gives your DeepSeek Harness (DSH) agent three research superpowers it does not have out of the box:

  • Web search via the Tavily Search API — a settings toggle that swaps the built-in DeepSeek search for Tavily, with keyless search support.
  • Web scraping & crawling via the Firecrawl MCP server — scrape, crawl, map, and search the open web inside tool calls.
  • Up-to-date library docs via the Context7 MCP server — on-demand documentation and code examples for any library or framework.

Everything is delivered as drop-in DSH plugins — no vendor lock-in, no forks, just a dsh plugin add away.

Package What it adds
@pymodel/dsh-tavily Tavily Search API as a web search provider (settings toggle, keyless search) + a Tavily MCP bridge (tavily-search / tavily-extract keyless; crawl / map with a key)
dsh-mcp-firecrawl Firecrawl MCP: keyless search / scrape / parse; full tool surface with an API key
dsh-mcp-context7 Context7 MCP: mcp__context7__* up-to-date library docs and code examples

Install

Each package installs independently into a DSH profile:

dsh plugin --profile web add @pymodel/dsh-tavily
dsh plugin --profile web add dsh-mcp-firecrawl
dsh plugin --profile web add dsh-mcp-context7
dsh web

Or follow GitHub (this repo, latest commits):

dsh plugin --profile web add github:PyModel/dsh-research-plugins#path:packages/dsh-tavily
dsh plugin --profile web add github:PyModel/dsh-research-plugins#path:packages/dsh-mcp-firecrawl
dsh plugin --profile web add github:PyModel/dsh-research-plugins#path:packages/dsh-mcp-context7

API keys

The MCP bridges use the harness's shipped @deepseek-ai/dsh-mcp-client. They read keys from the launch environment (a real env var, the project .env, or $DSH_HOME/.env) — not from $DSH_HOME/.credentials.yaml:

Plugin Env var Required Endpoint
dsh-tavily (MCP part) TAVILY_API_KEY no (keyless MCP: search + extract; crawl/map need a key) https://mcp.tavily.com/mcp/
dsh-mcp-firecrawl FIRECRAWL_API_KEY no (keyless: search/scrape/parse; full surface with a key) https://mcp.firecrawl.dev/v2/mcp
dsh-mcp-context7 CONTEXT7_API_KEY no (keyless works) https://mcp.context7.com/mcp

Keys are sent as an Authorization: Bearer header at load time — never in the URL and never in plain YAML. Without a key the bridges run in each vendor's documented keyless mode (X-Tavily-Access-Mode: keyless for Tavily), so every row works out of the box. A key added to .env needs a dsh web restart.

Already have your own MCP row?

The bundles insert loader entries mcp-tavily, mcp-firecrawl and mcp-context7. If your profile's cordis.patch.yml also inserts one of those ids, DSH refuses to boot (duplicate loader entry id: mcp-tavily) and DSH Desktop opens Safe Mode. A second row under another id with the same serverName fails too (serverName "tavily" is already in use).

Delete your own row, or keep your settings (a proxy or gateway URL, say) by turning it into an override of the plugin's row. An override replaces the whole config, so restate every key:

# $DSH_HOME/profiles/web/cordis.patch.yml
- id: mcp-tavily
  config:
    serverName: tavily
    transport: streamable-http
    url: http://127.0.0.1:8787/tavily/mcp
    toolCallTimeoutMs: 60000
    failOnStartupError: false

Repo layout

packages/
  dsh-tavily/          # web-search provider + settings card + Tavily MCP row
  dsh-mcp-firecrawl/   # pure-config Firecrawl MCP bundle
  dsh-mcp-context7/    # pure-config Context7 MCP bundle

The Firecrawl and Context7 packages are pure-config bundles (package.json + cordis.patch.yml) with no build step. The Tavily package keeps its prebuilt lib/ and browser client.


Contributing

Issues and pull requests are welcome. Please open a discussion on GitHub before starting large changes.


Author

elkaix · pymodel


License

MIT © elkaix

About

No description or website provided.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages