# dsh-easy-mcp

DSH MCP 服务器图形化管理插件:在独立的「MCP 服务」页面查看、新增、编辑、启用/禁用、删除、重连和测试 MCP 服务器——工具随配置变更实时注册/注销,无需重启、无需手写 YAML。

[![dsh-plugin](https://img.shields.io/badge/dsh-plugin-✅-green)](https://github.com/topics/dsh-plugin)
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)

[English](README.md) | 中文

![MCP 服务页](images/screenshot.png)

## 功能

- 设置面板新增「MCP 服务」页面:服务器列表(名称、传输类型 stdio / streamable-http / SSE、command 或 url、启用开关、状态),支持新增/编辑/启用/禁用/删除/重连。
- **协议能力完整**:除 tools 外还支持 **resources**(注册为 `read_resource` 工具)、**prompts**(注册为 `use_prompt` 工具)、**logging**(服务器日志转发到宿主日志)、**roots**(通告空根)、**sampling**(明确拒绝并报错)。
- **图片内容桥接**:服务器返回的 image 块落盘到临时文件,提示模型用 `read_image` 查看——不再丢弃。
- **SSE 传输**(2025-03 前的老协议),与 stdio、streamable-http 并列。
- **参数本地校验**:工具参数按服务器声明的 input schema 在本地预校验,错误清晰、不白跑网络往返。
- **连接测试**:通过 `initialize` + `tools/list` 探测每个服务器,报告延迟与工具数量;失败时显示具体错误。
- **错误可视化**:服务器异常时在卡片下方以红色显示具体错误(ENOENT、ECONNREFUSED、超时等)。
- **配置自动备份**:每次界面保存前把配置备份到 `~/.dsh/dsh-easy-mcp/backups/`(保留最近 5 份),误改可回滚。
- **实时生效**:配置存放在 `~/.dsh/settings.yaml` 的 `mcp` 段,热同步生效——不改结构层、无需重启。
- **自持执行引擎**:基于 `@modelcontextprotocol/sdk`,不依赖官方 `dsh-mcp-client` 包。
- 中文 / English 双语界面。

## 安装

```sh
dsh plugin --profile web add dsh-easy-mcp      # 安装
dsh plugin --profile web remove dsh-easy-mcp   # 卸载
```

重启 `dsh web`,打开 设置 → **MCP 服务**。

## 配置

服务器配置存放在 `~/.dsh/settings.yaml` 的 `mcp` 段,在界面维护(手改也会热同步):

```yaml
mcp:
  servers:
    - name: playwright
      enabled: true
      transport: stdio
      command: /opt/homebrew/bin/node
      args:
        - /path/to/playwright/mcp/cli.js
```

插件自带空默认——不预置任何服务器。缺失字段由 schema 补齐默认值(`enabled: true`、`env: {}`、自动重连等)。

## 注意事项

- `command` 可用 PATH 短名(`playwright-mcp`、`node`、`npx`),前提是 dsh 进程能找到它。若 dsh web 从 Finder / launchd / 无 fnm 的 shell 启动,请用绝对路径(`command: /opt/homebrew/bin/node` + 绝对路径 `args`)。
- resources/prompts 以工具形式注册,单服务器合计上限 50 个(超出的跳过并记日志)。
- SSE 是 2025-03 前的老协议——新服务器优先 streamable-http;SSE 保留给存量服务器。
- 图片临时文件在系统临时目录(`dsh-easy-mcp-images/`),断开连接时清理。

## 许可

MIT
