Skip to content
dsh.fish
Bundle

@mcp-manager/mcp-manager

Dual-face MCP plugin for deepseek-harness: the host half supervises MCP servers from one `mcp` settings section and exposes the `mcp` Remote namespace; the client half renders the MCP service panel and its JSON configuration editor

Source
yixiuzhemu
License
MIT
Updated
Updated 20 days ago

Readme

# MCP-Manager

English | [中文](README.zh.md)

`@mcp-manager/mcp-manager` — a **dual-face Model Context Protocol manager plugin** for [deepseek-harness](https://github.com/deepseek-ai/deepseek-harness) (dsh, built on [Cordis](https://cordis.js.org)). Single package, two entry points, one composition row: the Host half supervises any number of MCP servers, while the browser half renders a service management panel and a JSON configuration editor.

![img_1.png](img_1.png)
![img.png](img.png)
![img_2.png](img_2.png)
![img_3.png](img_3.png)
![img_4.png](img_4.png)

## Features

- **Board View**: Card-based UI for adding, editing, and managing MCP servers with one-click operations
- **JSON View**: Direct JSON configuration editor for power users
- **MCP Market**: Browse and install popular MCP servers from [mcp-cn.com](https://www.mcp-cn.com/) with one click
- **Connection Testing**: Test server connections with step-by-step results before saving
- **Health Check**: Per-server health monitoring with detailed diagnostic output
- **Multiple Transports**: Supports stdio, HTTP, SSE, and Streamable HTTP
- **Headers Editor**: Postman-style row-based editor for HTTP headers
- **Delete Confirmation**: Two-step confirmation to prevent accidental deletions
- **Host-side HTTP Proxy**: Market API requests go through Node.js to bypass browser CORS restrictions

## Version compatibility

`@deepseek-ai/dsh-*` `0.1.5-rc.2` lockstep line or newer (see `package.json` peer dependencies).

## Quick start

```sh
dsh plugin --profile web add @mcp-manager/mcp-manager
```

Restart `dsh web`, then open **Settings → MCP**. The install auto-inserts the composition row; the panel appears as its own sidebar entry.

## Usage

### List View

The default view shows all configured MCP servers with their live status (connecting / ready / failed / disabled), tool count, and quick controls:

- **Expand**: Show/hide the server's registered tools
- **Restart**: Reconnect the server
- **Delete**: Remove the server (with confirmation)
- **Enable/Disable**: Toggle the server on/off

### Board View

Click **"Configure MCP"** to enter the board view. Each server is rendered as a card with:

- Enable/disable toggle
- Edit (pencil) button
- Delete (trash) button with two-step confirmation
- Health check (pulse) button

Use **"+ Add Server"** to create a new server entry. The form supports:

- Transport type selection (stdio / HTTP / SSE / Streamable HTTP)
- Command + arguments for stdio
- URL + headers for HTTP-type servers
- Environment variables (one per line)
- **Test Connection** button to verify the server before saving

### JSON View

Switch to the JSON tab to edit the raw `mcp.json` configuration directly.

### Market

Switch to the Market tab to browse popular MCP servers from [mcp-cn.com](https://www.mcp-cn.com/). Features:

- Search by keyword
- Infinite scroll pagination
- Server logo, tags, and usage count
- One-click add to pre-fill the board form

## Architecture

One npm package exposes two entry points:

| Entry | Plane | Responsibility |
|---|---|---|
| `.` | Host (Node) | Supervises MCP connections from `~/.dsh/mcp.json` (stdio / http / sse / streamable-http, tool discovery, auto-reconnect); exposes the `mcp` Remote namespace including `fetchMarket` for CORS-free market API access. |
| `./client` | Client (web) | MCP service panel + board view + JSON editor + market browser, injected into `settings.section`. |

**Host face**: `McpRegistry` (extends `TypertRemoteService`) layers entry config over `mcp.json` user config, then hands the result to an internal `ServerSupervisor` — one connection per server, re-creating only what changed. Tools register under `mcp__<serverName>__` on `ctx.tools`. The `fetchMarket` method proxies HTTP requests to external APIs on behalf of the client, avoiding browser CORS restrictions.

**Client face**: `apply` self-mounts the `mcp` Remote namespace, creates a `McpManagerController`, and injects the panel into `settings.section`. All RPC calls are serialized on a single queue to prevent concurrent answer clobbering.

## License

MIT

Install

dsh plugin --profile web add github:yixiuzhemu/MCP-Manager

Profile: web

  • This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source