Skip to main content
Glama
shhsgff
by shhsgff
README.md
# dsh-ai-script-studio-mcp

把《[AI 智能剧本创作工具](https://github.com/shhsgff/ai-script-studio)》接进 DeepSeek Harness(或任意 MCP 客户端)的 **MCP 桥插件**。

装好之后,你在 DeepSeek Harness 里说一句「用第一章的设定,帮我建个新剧本,三章,每章三节」,Harness 就会调用本插件的工具,把章节结构直接写进正在运行的软件里——不用复制粘贴。

> 应用本体与插件是**两个独立仓库**:  
> 应用 → <https://github.com/shhsgff/ai-script-studio>  
> 插件 → 本仓库

---

## 它是怎么工作的

```
DeepSeek Harness ──stdio(MCP)──> server.js ──HTTP POST /rpc──> AI 智能剧本创作工具(桌面端 127.0.0.1:45871)
     调用工具                                    x-aisc-token 校验                   真正改剧本、建章节、写正文
```

- `server.js` 是一个不依赖第三方包的标准 stdio MCP 服务器(JSON-RPC 2.0,逐行)。
- 它只把工具调用转发给**正在运行的桌面软件**;软件没开时,工具会返回一句中文错误,不会静默失败。
- 桥地址与令牌由软件生成,默认放在  
  `%APPDATA%\ai-script-studio\mcp\mcp-bridge.json`(Windows)  
  也可以用命令行参数或环境变量指定。

## 前置条件

1. 《AI 智能剧本创作工具》桌面版已安装并**正在运行**;
2. 软件里 设置 → **DSH / MCP** →「开启 MCP 服务」已打开(软件会自动写好桥配置);
3. Node.js ≥ 20;
4. 想用 DSH 插件方式的话,需要本机已装 DeepSeek Harness(`dsh` 命令可用,v0.1.7 起验证过)。

## 安装

### 方式 A:软件里点一下(最省事)

软件 → 设置 → DSH / MCP →「安装为 DSH 插件」→ 选一个 profile → 安装。
这条路径和本仓库的 `install` 命令等价(软件内部就在做同一件事)。

### 方式 B:本仓库 CLI

```bash
# 直接从 GitHub 跑,不落地源码
npx -y github:shhsgff/dsh-ai-script-studio-mcp install --profile web

# 或者克隆下来
git clone https://github.com/shhsgff/dsh-ai-script-studio-mcp
cd dsh-ai-script-studio-mcp
node bin/aisc-mcp.mjs install --profile web
```

装完重启对应的 DSH profile,插件的工具就会出现在工具列表里。

### 方式 C:任何支持 MCP 的客户端(Claude Desktop / Cursor / Cherry Studio …)

在客户端的 `mcpServers` 里加一段:

```json
{
  "mcpServers": {
    "ai-script-studio": {
      "command": "node",
      "args": ["D:/path/to/dsh-ai-script-studio-mcp/server.js"]
    }
  }
}
```

`server.js` 会自己去找 `%APPDATA%\ai-script-studio\mcp\mcp-bridge.json`;
放在别处就用第二个参数指定:`[".../server.js", "D:/my/mcp-bridge.json"]`。

## 命令

```
aisc-mcp install   [--profile web] [--bridge <桥配置>] [--plugin <mcp客户端包名>] [--out <bundle目录>]
aisc-mcp uninstall [--profile web]
aisc-mcp status
aisc-mcp snippet   [--profile web]
aisc-mcp doctor
```

| 命令 | 作用 |
| --- | --- |
| `install` | 在本机生成一个标准 DSH bundle(包内绝对路径指向真实的 server 与桥配置),再 `dsh plugin --profile <p> add` 装进去;装完会跑 `--dump-config` 验证条目真的生效 |
| `uninstall` | `dsh plugin remove`,并清掉 `node_modules` 里可能残留的软链 |
| `status` | 列出每个 profile 装没装、桥配置的端口与令牌状态 |
| `snippet` | 只打印要手动粘贴进 `cordis.patch.yml` 的那几行 |
| `doctor` | 环境自检(node、dsh、server.js、桥配置) |

选项默认值:`--profile` 优先 `web`,其次 `headless`;`--bridge` 默认 `%APPDATA%\ai-script-studio\mcp\mcp-bridge.json`;`--plugin` 默认从 `dsh --dump-config` 里反查当前 DSH 版本真正使用的 `mcp-client` 包名(版本换了也不会装错)。

## 提供的工具

| 工具 | 作用 | 关键参数 |
| --- | --- | --- |
| `create_script` | 新建一个剧本标签页,可一次给全章节/小节 | `title`、`chapters[]`(`title` + `paragraphs` 或 `sections[]`) |
| `add_chapter` | 在当前剧本末尾加一章 | `title`、`paragraphs[]` |
| `append_text` | 往某章正文末尾追加段落 | `text`(可用空行分段)、`chapter`(省略=当前章) |
| `list_scripts` | 列出当前打开的剧本与字数 | — |
| `get_script` | 读正文,续写前先了解已有内容 | `title`、`maxChars`(默认 6000) |

调用成功后软件界面会实时刷新(章节、字数、状态栏都会变)。

## 常见问题

**工具返回「无法连接到 AI 剧本创作工具(MCP 服务可能未开启)」**  
软件没开,或 设置 → DSH / MCP →「开启 MCP 服务」没打开。打开后重试即可。

**工具返回「没有找到桥配置(mcp-bridge.json)」**  
先在软件里点一次「开启 MCP 服务」生成桥配置,再 `aisc-mcp install` 重装一次。

**DSH 启动时报 `require is not defined` / 插件工具一直报错**  
这是 bundle 目录声明了 ESM 却放了 CommonJS 服务器导致的。本仓库从 1.0.0 起统一用 `server.cjs` + 不声明 `"type": "module"`,重新 `install` 一次即可。

**换了机器 / 换了软件安装位置**  
patch 里写的是本机绝对路径,换机器后重新跑一次 `install`(`--out` 会复用 `%APPDATA%\dsh-ai-script-studio-mcp\bundle-<profile>`,覆盖生成)。

**确认插件真的进了配置**

```bash
dsh --profile web --dump-config | findstr mcp-ai-script-studio
```

能看到 `- id: mcp-ai-script-studio` 就说明生效了。

## 安全说明

- 桥只监听 `127.0.0.1`,外部网络访问不到;
- 每个请求带 `x-aisc-token`(软件随机生成,存在本机桥配置里);
- 插件本身不改你的 `cordis.patch.yml`,安装/卸载都走官方 `dsh plugin` 命令,profile 的 `package.json` 是唯一被修改的地方。

## 开发

```bash
npm test        # 起一个假桥,验证握手、tools/list、tools/call 转发与错误分支
node bin/aisc-mcp.mjs status
```

目录:

```
server.js          stdio MCP 服务器(CommonJS,无依赖)
bin/aisc-mcp.mjs   CLI:install / uninstall / status / snippet / doctor
lib/dsh.mjs        DSH 探测(profile 列表、dump-config、插件名反查、软链清理)
lib/bundle.mjs     生成 bundle(package.json + cordis.patch.yml + index.js + server.cjs)
test/              node:test 自测
```

## 许可

MIT © shhsgff。详见 [LICENSE](./LICENSE)。