im-connector 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,182 +1,93 @@
1
- # IM Connector(可扩展的多 IM 透传插件)
1
+ # im-connector
2
2
 
3
- 一个可在 npm 上分发的统一 IM 连接器:通过**一个 MCP 工具 `mcp__im__run`**,按 `provider` 路由到各平台的命令行客户端,返回其 JSON 输出。当前接入**钉钉**(dws)与**企业微信**(wecom-cli),并预留了飞书、Discord 等平台的扩展位。
3
+ 让 AI Agent 通过 MCP 调用**钉钉(dws)**和**企业微信(wecom-cli)**的 CLI,在渠道里干活:发消息、写日志/日报、建待办、查日程、处理审批。
4
4
 
5
- ```
6
- DSH Agent ── mcp__im__run { provider, args } ──▶ dist/mcp/server.js
7
- ├─ provider=dingtalk ──▶ dws ──▶ 钉钉
8
- └─ provider=wecom ──▶ wecom-cli ──▶ 企业微信
9
- ```
10
-
11
- ## 定位:Agent 侧集成(让机器人在渠道里干活)
12
-
13
- 本连接器只负责**「Agent → 渠道」方向**:Agent 通过 MCP 工具调用 dws / wecom-cli,让机器人在钉钉/企微里完成实际工作——发消息、写日志/日报、建待办、查日程、处理审批等。
14
-
15
- **渠道 → Agent 方向**(在群里/私聊里跟机器人对话)由独立的 `dsh-im` 插件负责,不在本连接器的范围内。
16
-
17
- ## 典型用法(让机器人在渠道里干活)
18
-
19
- ```json
20
- // 发消息到群 / 私聊
21
- { "provider": "dingtalk", "args": ["chat", "+messages-send", "--group", "<openConversationId>", "--markdown", "今天 18:00 前提交周报", "--yes"] }
22
- { "provider": "dingtalk", "args": ["chat", "+messages-send", "--user", "<userId>", "--markdown", "私聊通知", "--yes"] }
5
+ > 本包只负责「Agent → 渠道」方向。在群里/私聊里与机器人对话(渠道 → Agent)请用 dsh-im 插件。
23
6
 
24
- // 写/提交日志(日报周报)
25
- { "provider": "dingtalk", "args": ["report", "+create", "--template", "日报", "--content", "...", "--yes"] }
26
- { "provider": "dingtalk", "args": ["report", "+my", "--type", "日报"] }
27
-
28
- // 待办
29
- { "provider": "dingtalk", "args": ["todo", "+create", "--title", "整理今日测试报告", "--due", "2026-10-23 18:00"] }
30
- { "provider": "dingtalk", "args": ["todo", "+get-my-tasks"] }
7
+ ## 前置条件
31
8
 
32
- // 日程 / 审批 / 通讯录
33
- { "provider": "dingtalk", "args": ["calendar", "+today"] }
34
- { "provider": "dingtalk", "args": ["oa", "approval", "list-pending"] }
35
- { "provider": "dingtalk", "args": ["contact", "+me"] }
9
+ - Node.js >= 18
10
+ - 两个命令行工具(dws / wecom-cli)**已随包一起安装**(可选依赖),无需单独安装
11
+ - 首次使用只需各登录一次(凭据保存在 CLI 自己的本地登录态,本包不接触凭据):
36
12
 
37
- // 企业微信
38
- { "provider": "wecom", "args": ["contact", "users", "search", "--keywords", "张三"] }
39
- { "provider": "wecom", "args": ["message", "send", "--chat-id", "<id>", "--msg-type", "text", "--text", "{\"content\":\"通知内容\"}"] }
13
+ ```bash
14
+ dws auth login --recommend # 钉钉
15
+ wecom-cli auth init --noninteractive # 企业微信(扫码授权)
40
16
  ```
41
17
 
42
- 写操作需用户明确意图;不确定时先用 `--dry-run` 预览(两平台都支持)。
43
-
44
- ## 设计核心:Provider 注册表
45
-
46
- 每个 IM 平台只是 `src/providers/*.ts` 里的一条规格(`ImProviderSpec`),描述:
47
-
48
- - 该平台的 CLI 命令名、npm 包名与 bin 脚本路径(用于自动解析 npm 全局安装、规避 Windows shim)
49
- - 请求 JSON 输出的 flag(dws 用 `--format json`;wecom 默认 JSON 则留空)
50
- - 覆盖 bin 的环境变量名、示例命令
51
-
52
- **新增一个平台(飞书 / Discord / …)只需**:
53
- 1. 新建 `src/providers/feishu.ts`,导出一个 `ImProviderSpec`;
54
- 2. 在 `src/providers/registry.ts` 的 `providers` 数组里追加它。
18
+ > 使用 pnpm 安装时,若提示 CLI 不可用,允许依赖的安装脚本(`pnpm approve-builds`)或手动 `npm i -g dingtalk-workspace-cli @wecom/cli` 即可。
55
19
 
56
- MCP 工具的 `provider` 枚举与描述会**自动**从注册表生成,无需改其它代码。
57
-
58
- ## 快速开始(npm)
20
+ ## 安装
59
21
 
60
22
  ```bash
61
- npm i -g im-connector # 全局安装(提供 im-connector 命令)
62
- # 或直接用 npx(无需安装):
63
- npx -y im-connector
23
+ npx -y im-connector # 直接用,无需安装
24
+ npm i -g im-connector # 或全局安装
64
25
  ```
65
26
 
66
- `im-connector` 是一个 **stdio MCP server**:任何 MCP 客户端(DSH / Claude Desktop / 其它 Agent)都可以把它注册成 MCP 连接。配置示例:
27
+ > 注意:首次安装会下载两个 CLI(dws 约 130MB),之后无需再装。
28
+
29
+ ## 配置 MCP 客户端
30
+
31
+ 通用 MCP 客户端(如 Claude Desktop):
67
32
 
68
33
  ```json
69
34
  {
70
35
  "mcpServers": {
71
- "im": {
72
- "command": "npx",
73
- "args": ["-y", "im-connector"],
74
- "env": {
75
- "DINGTALK_DWS_BIN": "<npm root -g>/dingtalk-workspace-cli/bin/dws.js",
76
- "WECOM_CLI_BIN": "<npm root -g>/@wecom/cli/bin/wecom.js"
77
- }
78
- }
36
+ "im": { "command": "npx", "args": ["-y", "im-connector"] }
79
37
  }
80
38
  }
81
39
  ```
82
40
 
83
- > `env` 可选:不填时连接器会自动通过 `npm root -g` 解析两个 CLI;填了更稳(规避 Windows shim)。
84
-
85
- DSH 用户:本包**同时是 DSH 的 MCP 连接 bundle**(`package.json` 里声明了 `dsh.bundle.patch`),一条命令完成"装包 + 注册 MCP 连接":
41
+ **DSH 用户**一条命令即可(装包 + 注册 MCP 连接):
86
42
 
87
43
  ```
88
44
  plugin_manager install_bundle target: im-connector
89
45
  ```
90
46
 
91
- 安装后工具名为 `mcp__im__run`。细节与手工安装方式见 `mcp-bundle/README.md`。
92
-
93
- ## 前置条件
94
-
95
- ```bash
96
- # 钉钉
97
- npm install -g dingtalk-workspace-cli
98
- dws auth login --recommend --format json
99
-
100
- # 企业微信
101
- npm install -g @wecom/cli
102
- wecom-cli auth show --status # 未授权时:wecom-cli auth init --noninteractive 扫码
103
- ```
104
-
105
- 连接器不保存任何凭据,认证复用各 CLI 的本地登录态。
106
-
107
- ## 构建与验证
108
-
109
- ```bash
110
- pnpm install
111
- pnpm verify # typecheck + 测试 + build + MCP 冒烟
112
- ```
113
-
114
- ## 接入 DSH(官方推荐路径)
115
-
116
- 按 DSH 官方 `references/mcp-bundle.md` 的做法:**配置型 bundle**(只插入一条 `@deepseek-ai/dsh-mcp-client` 行,无 Host/Client 入口文件),display 元数据用 `locale/*.json` + `icon.svg`,patch 用官方 stdio 形式:
117
-
118
- ```yaml
119
- - insert:
120
- - id: im-connector-mcp
121
- name: '@deepseek-ai/dsh-mcp-client'
122
- config:
123
- serverName: im
124
- transport: stdio
125
- command: npx
126
- args: ['-y', 'im-connector']
127
- failOnStartupError: true
128
- ```
129
-
130
- - 推荐安装:`plugin_manager install_bundle target: im-connector`(包内已声明 `dsh.bundle.patch`,一步完成)
131
- - 手工安装:把 `mcp-bundle/` 复制到任意目录后 `install_bundle` 指向该目录
132
- - 不需要写死路径或凭据(`npx` 跨平台;凭据保持在两个 CLI 自己的登录态里,env 覆盖用 Loader `!!js`)
47
+ 安装后工具名为 `mcp__im__run`。
133
48
 
134
49
  ## 使用
135
50
 
136
- 调用 `mcp__im__run`,`provider` 选平台,`args` 是该平台 CLI 的命令数组:
51
+ Agent 调用 `mcp__im__run`,参数是 `{ provider, args }`,`args` 就是对应 CLI 的原生命令参数:
137
52
 
138
53
  ```json
139
- // 钉钉(dws)
140
- { "provider": "dingtalk", "args": ["contact", "+me"] }
54
+ // 发消息
55
+ { "provider": "dingtalk", "args": ["chat", "+messages-send", "--group", "<群ID>", "--markdown", "内容", "--yes"] }
56
+
57
+ // 待办
58
+ { "provider": "dingtalk", "args": ["todo", "+create", "--title", "整理今日测试报告", "--due", "2026-10-23 18:00"] }
141
59
  { "provider": "dingtalk", "args": ["todo", "+get-my-tasks"] }
60
+
61
+ // 日志 / 日报周报
62
+ { "provider": "dingtalk", "args": ["report", "+create", "--template", "日报", "--content", "..."] }
63
+
64
+ // 日程 / 审批 / 通讯录
65
+ { "provider": "dingtalk", "args": ["calendar", "+today"] }
142
66
  { "provider": "dingtalk", "args": ["oa", "approval", "list-pending"] }
143
- { "provider": "dingtalk", "args": ["chat", "+chat-messages", "--group", "研发群", "--limit", "20"] }
144
- { "provider": "dingtalk", "args": ["chat", "+messages-send", "--group", "<cid>", "--markdown", "内容", "--title", "标题", "--yes"] }
67
+ { "provider": "dingtalk", "args": ["contact", "+me"] }
145
68
 
146
- // 企业微信(wecom-cli)
69
+ // 企业微信
147
70
  { "provider": "wecom", "args": ["contact", "users", "search", "--keywords", "张三"] }
148
- { "provider": "wecom", "args": ["chat", "messages", "list", "--chat-id", "<id>", "--begin-time", "2026-10-01 00:00:00", "--end-time", "2026-10-21 00:00:00"] }
149
- { "provider": "wecom", "args": ["auth", "show", "--status"] }
150
71
  ```
151
72
 
152
- 写操作(发消息/提交/审批等)需用户明确意图,必要时加 `--yes`(钉钉)或先用 `--dry-run` 预览(两平台都支持 `--dry-run`)。
153
-
154
- ## 发布(维护者)
73
+ 完整命令见各 CLI 的 `--help`(如 `dws chat --help`、`wecom-cli message --help`)。
155
74
 
156
- ```bash
157
- npm login # 首次发布前登录(已登录则跳过)
158
- pnpm verify # typecheck + 测试 + build + MCP 冒烟(prepublishOnly 也会跑)
159
- npm publish # 发布到 npm(publishConfig.access=public)
160
- ```
75
+ ## 说明
161
76
 
162
- 发布内容(`files`):`dist/`(编译产物 + shebang 入口)、`mcp-bundle/`(DSH 连接 bundle)、`README.md`、`LICENSE`。
77
+ - **写操作**(发消息、提交审批等)请先让 Agent 确认意图;不确定时用 `--dry-run` 预览(两平台都支持)
78
+ - 参数会原样透传给 CLI,返回其 JSON 输出
79
+ - 支持的 provider:`dingtalk`、`wecom`
163
80
 
164
- 发布前可用 `npm pack --dry-run` 查看实际打包清单。
81
+ ## 开发
165
82
 
166
- ## 目录结构
167
-
168
- ```
169
- src/
170
- cli/runner.ts CliRunner:通用 CLI 透传(npm 全局解析、JSON 解析、错误信封映射)
171
- cli/errors.ts CliError + stderr 错误信封解析
172
- providers/ ImProviderSpec + registry(dingtalk / wecom,可扩展)
173
- mcp/server.ts MCP stdio server,暴露单一 `run { provider, args }` 工具
174
- index.ts 包入口
175
- tests/ fake-cli.mjs + cli/mcp 测试
176
- mcp-bundle/ DSH MCP 连接 bundle
177
- scripts/ mcp-smoke.mjs / duty-reminder.mjs(钉钉值班提醒,独立任务)
83
+ ```bash
84
+ pnpm install
85
+ pnpm verify # typecheck + 测试 + 构建 + MCP 冒烟
178
86
  ```
179
87
 
180
- ## 值班提醒(独立任务)
88
+ 发布(维护者):
181
89
 
182
- `scripts/duty-reminder.mjs` 由 DSH 周提醒触发,用 `spawnSync` 直接调 `dws`,与本连接器解耦,不受影响。
90
+ ```bash
91
+ npm version patch
92
+ npm publish --registry=https://registry.npmjs.org/
93
+ ```
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/cli/runner.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,+BAA+B;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,oCAAoC;IACpC,IAAI,EAAE,OAAO,CAAC;CACf;AAQD;;;;GAIG;AACH,qBAAa,SAAS;IACR,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,cAAc;IAEjD,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,0CAA0C;IACpC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAK/D,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;YAmExD,MAAM;CAwBrB"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/cli/runner.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,+BAA+B;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,oCAAoC;IACpC,IAAI,EAAE,OAAO,CAAC;CACf;AAQD;;;;GAIG;AACH,qBAAa,SAAS;IACR,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,cAAc;IAEjD,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,0CAA0C;IACpC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAK/D,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;YAmExD,MAAM;CAkCrB"}
@@ -1,6 +1,7 @@
1
1
  import { spawn } from "node:child_process";
2
- import { existsSync } from "node:fs";
3
- import { join } from "node:path";
2
+ import { existsSync, readFileSync } from "node:fs";
3
+ import { createRequire } from "node:module";
4
+ import { dirname, join } from "node:path";
4
5
  import { CliError, parseErrorEnvelope } from "./errors.js";
5
6
  /**
6
7
  * 通用 CLI 透传执行器:按 provider 规格定位 CLI(npm 全局 bin 脚本 → node 直跑,
@@ -95,8 +96,13 @@ export class CliRunner {
95
96
  if (bin !== this.spec.bin && existsSync(bin)) {
96
97
  return { command: bin, prefix: [], shell: false };
97
98
  }
98
- // 3) 默认 bin:解析 npm 全局包内脚本
99
+ // 3) 随包安装的 CLI(optionalDependencies 里的依赖,开箱即用)
99
100
  if (bin === this.spec.bin) {
101
+ const local = localCliScript(this.spec);
102
+ if (local) {
103
+ return { command: process.execPath, prefix: [local], shell: false };
104
+ }
105
+ // 4) 回退:npm 全局安装的 CLI
100
106
  const globalRoot = await npmGlobalRoot();
101
107
  if (globalRoot) {
102
108
  const script = join(globalRoot, ...this.spec.binScript.split("/"));
@@ -104,11 +110,55 @@ export class CliRunner {
104
110
  return { command: process.execPath, prefix: [script], shell: false };
105
111
  }
106
112
  }
113
+ // 5) 通过 package.json 的 bin 字段再找一次(处理 binScript 与安装布局不一致)
114
+ const viaManifest = await cliScriptFromManifest(this.spec);
115
+ if (viaManifest) {
116
+ return { command: process.execPath, prefix: [viaManifest], shell: false };
117
+ }
107
118
  }
108
- // 4) 回退:shell 执行(Windows shim)
119
+ // 6) 回退:shell 执行(Windows shim)
109
120
  return { command: bin, prefix: [], shell: process.platform === "win32" };
110
121
  }
111
122
  }
123
+ /**
124
+ * 解析随包安装的 CLI 脚本(包内 node_modules,如 optionalDependencies)。
125
+ * 返回可直接用 `node <script>` 执行的脚本路径;找不到返回 undefined。
126
+ */
127
+ function localCliScript(spec) {
128
+ try {
129
+ const require = createRequire(import.meta.url);
130
+ const pkgJson = require.resolve(`${spec.npmPackage}/package.json`);
131
+ const pkgDir = dirname(pkgJson);
132
+ // binScript = "<npmPackage>/bin/xxx.js" → 相对包目录的脚本路径
133
+ const rel = spec.binScript.slice(spec.npmPackage.length + 1);
134
+ const script = join(pkgDir, rel);
135
+ if (existsSync(script))
136
+ return script;
137
+ return undefined;
138
+ }
139
+ catch {
140
+ return undefined;
141
+ }
142
+ }
143
+ /** 通过包 manifest 的 bin 字段定位脚本(兼容 binScript 与实际 bin 布局不同的情况)。 */
144
+ async function cliScriptFromManifest(spec) {
145
+ try {
146
+ const require = createRequire(import.meta.url);
147
+ const pkgJson = require.resolve(`${spec.npmPackage}/package.json`);
148
+ const manifest = JSON.parse(readFileSync(pkgJson, "utf8"));
149
+ const pkgDir = dirname(pkgJson);
150
+ const bins = typeof manifest.bin === "string" ? [manifest.bin] : Object.values(manifest.bin ?? {});
151
+ for (const rel of bins) {
152
+ const script = join(pkgDir, rel);
153
+ if (existsSync(script))
154
+ return script;
155
+ }
156
+ return undefined;
157
+ }
158
+ catch {
159
+ return undefined;
160
+ }
161
+ }
112
162
  function parseStdoutJson(stdout) {
113
163
  const text = stdout.trim();
114
164
  if (!text)
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/cli/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/cli/runner.ts"],"names":[],"mappings":"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"}
@@ -34,6 +34,16 @@ plugin_manager install_bundle target: im-connector
34
34
  - `failOnStartupError: true`:连接失败时让该行激活失败,便于发现问题(官方模板同款)。
35
35
  - 对照官方 `templates/mcp/`:manifest 只需 name/version/`dsh.bundle.patch`(配置型 bundle 无 Host/Client 入口文件),display 元数据走 `locale/*.json` + `icon.svg`。
36
36
 
37
+ > ⚠️ 个别 Windows 环境下 `npx` 转发 stdio 到本包 server 不稳定(`npx --version` 与其它包正常,但管道下 MCP 握手被关闭)。遇到这种情况改用 node + 绝对路径:
38
+
39
+ ```yaml
40
+ config:
41
+ serverName: im
42
+ transport: stdio
43
+ command: node
44
+ args: ['<npm root -g>/im-connector/dist/mcp/server.js']
45
+ ```
46
+
37
47
  ## 验证
38
48
 
39
49
  安装后在会话里调用 `mcp__im__run`(例如 `{ provider: "dingtalk", args: ["contact", "+me"] }`)确认连接可用。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "im-connector",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "MCP server that lets agents drive DingTalk (dws) and WeCom (wecom-cli) CLIs: send messages, write reports, create todos, query calendars and approvals. Extensible provider registry for more IM platforms.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -40,6 +40,10 @@
40
40
  "dependencies": {
41
41
  "@modelcontextprotocol/sdk": "^1.12.0"
42
42
  },
43
+ "optionalDependencies": {
44
+ "dingtalk-workspace-cli": "^1.0.65",
45
+ "@wecom/cli": "^1.3.4"
46
+ },
43
47
  "devDependencies": {
44
48
  "@types/node": "^22.10.0",
45
49
  "typescript": "^5.7.0",