dsh-mcp-market
模型与 MCP 活跃维护

dsh-mcp-market

LeonxLJX/dsh-mcp-market

提供经过官方核验的MCP服务器公开目录,支持按需检索目标服务,自动生成适配官方dsh-mcp-client的cordis.yml配置行,无需手动编写对接逻辑,复制即可完成服务接入。

0
Stars 标星
0
Forks 分支
0
Watchers 关注
0
Open Issues
JavaScript
主要语言
MIT
开源协议
22 KB
仓库大小
19 天前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:LeonxLJX/dsh-mcp-market
git clone https://github.com/LeonxLJX/dsh-mcp-market.git
git clone git@github.com:LeonxLJX/dsh-mcp-market.git
README.md main

dsh-mcp-market

The front door to MCP for DeepSeek Harness. Search a verified catalog of MCP servers and get the exact cordis.yml row that wires one into the official @deepseek-ai/dsh-mcp-client bridge — in one step.

npm license node

DeepSeek Harness is an all-plugin Cordis agent harness. Plugins bring the tools. The official MCP bridge already knows how to talk to any MCP server — but someone still has to tell you which server to run and what exact config makes it work.

That someone is dsh-mcp-market.

  • 📦 A verified catalog — every entry is probed against the live npm registry by scripts/build-catalog.mjs; packages that 404 are dropped, versions are pinned to what actually exists. No hand-written guesses.
  • 🔌 A one-tool plugin — load dsh-mcp-market and the agent itself can search the catalog and read the wiring for any server (mcp_market_search).
  • 🧩 A zero-config CLIdsh-mcp-market add github appends the exact row to your overlay mcp-servers.cordis.yml, idempotently.

Why this exists

Layer What ships it Status
MCP protocol servers @modelcontextprotocol/server-* + community ✅ thousands exist
MCP → dsh tool bridge @deepseek-ai/dsh-mcp-client ✅ official
Discovery + verified config dsh-mcp-market 🟩 this project

The bridge is per-server configuration: a cordis.yml row with the right package name, the right version, the right env keys. Get any of those wrong and the tool silently never appears. The ecosystem had a bridge but no front door — that gap is what this plugin fills.

Install

As a harness plugin (declared in package.json of the harness app or installed via the plugin manager):

npm install dsh-mcp-market

It is a Cordis plugin and registers exactly one tool. Add it to your cordis.yml:

plugins:
  mcp-market:
    # optional: default result limit for the search tool (1-10)
    # config:
    #   defaultLimit: 5

Requires the same peer set as the official bridge: @deepseek-ai/dsh-tools and @deepseek-ai/cordis. ESM-only ("type": "module"), Node ≥ 20.

The CLI is also available standalone without touching the harness:

npx dsh-mcp-market search github
npx dsh-mcp-market add github --out mcp-servers.cordis.yml

Usage

As a harness tool

Once the plugin is loaded, the agent can run mcp_market_search with a free-text query, an optional category, and an optional limit. The result is a ranked list of matching servers, each with:

  • package + pinned version,
  • env keys the server expects,
  • the exact cordis.yml row to copy.

Example (what the agent sees when asked "add a search tool"):

mcp_market_search(query="github")

1. github — GitHub MCP server (@modelcontextprotocol/server-github@2025.4.8)
   env: GITHUB_TOKEN (Personal access token; repo + read:org scopes)
   category: dev
   Wire it in:
   ```yaml
   - id: github
     name: '@deepseek-ai/dsh-mcp-client'
     config:
       serverName: github
       transport: stdio
       command: npx
       args: ['-y', '@modelcontextprotocol/server-github@2025.4.8']
       env:
         GITHUB_TOKEN: !!js process.env.GITHUB_TOKEN

### From the CLI

dsh-mcp-market

Commands:
search Search the catalog
add [--out file] Append a server's cordis.yml row to an overlay file
(idempotent — never duplicates). Default out:
mcp-servers.cordis.yml
ls [--category cat] List all servers (optionally filtered)
categories List available categories


```bash
$ dsh-mcp-market search postgres
# postgres — Postgres MCP server (@modelcontextprotocol/server-postgres@0.6.2)

$ dsh-mcp-market add memory
# appending managed block to mcp-servers.cordis.yml

$ cat mcp-servers.cordis.yml
- id: memory
  name: '@deepseek-ai/dsh-mcp-client'
  config:
    serverName: memory
    transport: stdio
    command: npx
    args: ['-y', '@modelcontextprotocol/server-memory@0.6.2']
    env: {}

The overlay file is meant to be !included or merged into the harness cordis.yml alongside the official bridge's own rows. Rows added by the CLI are wrapped in a # --- dsh-mcp-market managed block --- marker; re-running add on the same id is a no-op.

The catalog

catalog/catalog.json currently ships 17 verified servers (all probed against npm):

id package tags
filesystem @modelcontextprotocol/server-filesystem official, files
memory @modelcontextprotocol/server-memory official, memory
sequential-thinking @modelcontextprotocol/server-sequential-thinking official, thinking
everything @modelcontextprotocol/server-everything official, demo
github @modelcontextprotocol/server-github official, dev
slack @modelcontextprotocol/server-slack official, chat
postgres @modelcontextprotocol/server-postgres official, db
brave-search @modelcontextprotocol/server-brave-search official, search
google-maps @modelcontextprotocol/server-google-maps official, geo
pdf @modelcontextprotocol/server-pdf official, files
gdrive @modelcontextprotocol/server-gdrive official, files
puppeteer @modelcontextprotocol/server-puppeteer official, browser
playwright @playwright/mcp browser
puppeteer-mcp-server puppeteer-mcp-server browser
figma figma-developer-mcp design
tavily tavily-mcp search
firecrawl firecrawl-mcp scrape

Regenerating the catalog

The catalog is generated, not curated:

npm run catalog        # scripts/build-catalog.mjs → probes npm, writes catalog/catalog.json

To add a candidate, extend the CANDIDATES array in scripts/build-catalog.mjs and re-run. The script resolves the live latest version, fetches description/homepage, and drops any package that 404s on the registry — the shipped catalog only ever contains installable servers.

Development

npm install
npm run typecheck     # tsc --noEmit
npm run test          # build + node --test tests/market.test.mjs (9 cases)
npm run catalog       # regenerate catalog/catalog.json from live npm data

The test suite pins the important contracts:

  • every catalog entry parses and has a unique id,
  • searchCatalog ranks by id > package > tags > description (github query → github server first),
  • an empty query with no category returns [] (browse is reserved for ls),
  • buildRow emits exactly the format the official @deepseek-ai/dsh-mcp-client consumes,
  • parseCatalog rejects structurally invalid payloads.

Project layout

dsh-mcp-market/
├── src/
│   ├── index.ts      # Cordis plugin entry: name / inject / apply
│   ├── tool.ts       # mcp_market_search tool registration (defineTool)
│   ├── catalog.ts    # catalog URL resolution + structural parsing
│   ├── search.ts     # tokenizer + ranked search + categories
│   ├── snippet.ts    # cordis.yml row + install command builders
│   └── types.ts      # public types
├── cli/index.mjs     # search / add / ls / categories
├── scripts/build-catalog.mjs  # live npm probe → catalog/catalog.json
├── catalog/catalog.json       # generated, committed
└── tests/market.test.mjs      # 9 contract tests (node:test)

License

MIT © 2026 LeonxLJX — see LICENSE.