dingtalk-mcp 1.1.19 → 1.1.21

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.
@@ -139,22 +139,11 @@ tools:
139
139
  type: object
140
140
  required: false
141
141
  position: body
142
- description: 日程地点对象,包含displayName字段。示例:{"displayName":"会议室A"}
143
- - name: reminders
144
- type: array
145
- required: false
146
- position: body
147
- description: 日程提醒设置,数组中每个对象包含method和minutes字段。method只支持"dingtalk"(钉钉内提醒),minutes为Integer类型表示提前N分钟提醒。示例:[{"method":"dingtalk","minutes":15}]
148
- - name: recurrence
149
- type: object
150
- required: false
151
- position: body
152
- description: 日程循环规则对象
153
- - name: extra
154
- type: object
155
- required: false
156
- position: body
157
- description: 扩展配置,如noPushNotification、noChatNotification等。示例:{"noPushNotification":"true","noChatNotification":"false"}
142
+ description: 日程地点对象
143
+ properties:
144
+ displayName:
145
+ type: string
146
+ description: 日程地点的名称。
158
147
 
159
148
  - name: deleteEvent
160
149
  description: 删除指定的日程
@@ -50,10 +50,10 @@ tools:
50
50
  properties:
51
51
  dentryCategories:
52
52
  type: array
53
- enum: [ "alidoc" ]
54
53
  description: 文件类别
55
54
  items:
56
55
  type: string
56
+ enum: [ "alidoc" ]
57
57
  creatorIds:
58
58
  type: array
59
59
  description: 创建者的userId
@@ -63,7 +63,7 @@ tools:
63
63
  type: string
64
64
  description: 分页游标,第一次查询不需要此值,第二次查询需要,从本接口的返回值nextToken获取,如果返回值为空则说明没有更多数据
65
65
  maxResults:
66
- type: string
66
+ type: integer
67
67
  description: 分页大小,默认值10
68
68
  # 数据表
69
69
  - name: getNotableSheet
@@ -284,9 +284,24 @@ export class DingTalkMCPServer {
284
284
  type: arg.type,
285
285
  description: arg.description
286
286
  };
287
- if ((arg.type === 'array' || arg.type === 'object') && arg.items) {
287
+ // array 类型添加 items 属性
288
+ if (arg.type === 'array' && arg.items) {
288
289
  schema[arg.name].items = arg.items;
289
290
  }
291
+ // object 类型处理:如果有 properties,直接添加;如果有 items,将 items 的属性赋值到 schema
292
+ if (arg.type === 'object') {
293
+ if (arg.properties) {
294
+ schema[arg.name].properties = arg.properties;
295
+ } else if (arg.items) {
296
+ // 配置文件约定:object 类型使用 items 定义结构
297
+ if (arg.items.properties) {
298
+ schema[arg.name].properties = arg.items.properties;
299
+ }
300
+ if (arg.items.required) {
301
+ schema[arg.name].required = arg.items.required;
302
+ }
303
+ }
304
+ }
290
305
  });
291
306
  return schema;
292
307
  }
@@ -336,7 +351,7 @@ export class DingTalkMCPServer {
336
351
  timeout: 30000
337
352
  });
338
353
  if (this.debug) {
339
- console.log(response)
354
+ console.error(response)
340
355
  }
341
356
 
342
357
  return {
@@ -347,7 +362,7 @@ export class DingTalkMCPServer {
347
362
  };
348
363
  } catch (error) {
349
364
  if (this.debug) {
350
- console.log(error)
365
+ console.error(error)
351
366
  }
352
367
  let errorMessage = error.message;
353
368
  if (axios.isAxiosError(error) && error.response) {
@@ -1,11 +1,11 @@
1
1
  **条件查询配置**
2
2
  ---------------------------
3
- | **字段类型** | **可用操作符** | **查询条件值** |
4
- |----------|----------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
5
- | 文本 | equal \| notEqual \| contain \| notContain \| empty \| notEmpty | 示例:`["abc"]`<br/> operator 是 empty/notEmpty 时不需要传值。 |
6
- | 数字 | equal \| notEqual \| greater \| greaterEqual \| less \| lessEqual \| empty \| notEmpty | 示例:`["123"]` <br/>operator 是 empty/notEmpty 时不需要传值。 |
7
- | 单选 | equal \| notEqual \| contain \| notContain \| empty \| notEmpty | 示例: `["option1", "optionId2"]` <br/>operator 是 contain 时,包含 value 中的任何一个选项即满足条件。<br/>operator 是 notContain 时,不包含 value 中的所有选项即满足条件。<br/> operator 是 empty/notEmpty 时不需要传值。 |
8
- | 多选 | 同「单选」 | 同「单选」 |
9
- | 日期 | equal \| greater \| less \| empty \| notEmpty | 示例: `["2024-09-27"\| timestamp]` <br/>operator 是 empty/notEmpty 时不需要传值。 |
10
- | 人员 | equal \| notEqual \| contain \| notContain \| empty \| notEmpty | 示例: `[{"unionId": "xxx"}, {"unionId": "yyy"}]`<br/>operator 是 contain 时,包含 value 中的任何一个选项即满足条件。<br/> operator 是 notContain 时,不包含 value 中的所有选项即满足条件。<br/>operator 是 empty/notEmpty 时不需要传值。 |
11
- | 部门 | equal \| notEqual \| contain \| notContain \| empty \| notEmpty | 示例: `[{"deptId": "xxx"}, {"deptId": "yyy"}]`<br/>operator 是 contain 时,包含 value 中的任何一个选项即满足条件。<br/> operator 是 notContain 时,不包含 value 中的所有选项即满足条件。<br/>operator 是 empty/notEmpty 时不需要传值。 |
3
+ | **字段类型** | **可用操作符** | **查询条件值** |
4
+ |----------|----------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
5
+ | 文本 | equal \| notEqual \| contain \| notContain \| empty \| notEmpty | 示例:`["abc"]`<br/> operator 是 empty/notEmpty 时不需要传值。 |
6
+ | 数字 | equal \| notEqual \| greater \| greaterEqual \| less \| lessEqual \| empty \| notEmpty | 示例:`["123"]` <br/>operator 是 empty/notEmpty 时不需要传值。 |
7
+ | 单选 | equal \| notEqual \| contain \| notContain \| empty \| notEmpty | 示例: `["option1", "optionId2"]` <br/>operator 是 contain 时,包含 value 中的任何一个选项即满足条件。<br/>operator 是 notContain 时,不包含 value 中的所有选项即满足条件。<br/> operator 是 empty/notEmpty 时不需要传值。 |
8
+ | 多选 | 同「单选」 | 同「单选」 |
9
+ | 日期 | equal \| greater \| less \| empty \| notEmpty | 示例: `["2024-09-27"\| timestamp]` <br/>operator 是 empty/notEmpty 时不需要传值。 |
10
+ | 人员 | equal \| notEqual \| contain \| notContain \| empty \| notEmpty | 示例: `[{"unionId": "xxx"}, {"unionId": "yyy"}]`<br/>operator 是 contain 时,包含 value 中的任何一个选项即满足条件。<br/> operator 是 notContain 时,不包含 value 中的所有选项即满足条件。<br/>operator 是 empty/notEmpty 时不需要传值。 特别注意:uniondId是对应人员的unionId. |
11
+ | 部门 | equal \| notEqual \| contain \| notContain \| empty \| notEmpty | 示例: `[{"deptId": "xxx"}, {"deptId": "yyy"}]`<br/>operator 是 contain 时,包含 value 中的任何一个选项即满足条件。<br/> operator 是 notContain 时,不包含 value 中的所有选项即满足条件。<br/>operator 是 empty/notEmpty 时不需要传值。 |
@@ -3,16 +3,16 @@
3
3
 
4
4
  不同字段类型所使用的格式请参考下表:
5
5
 
6
- | 字段名 | 类型 (type) | 设置值(新增/更新记录时使用的格式) | 返回值(返回记录值时返回的格式) |
7
- | --- | --- |------------------------------------------------------------------------------------|-------------------------------------------------------|
8
- | 文本 | text | `"TextString" // 字符串` | `"TextString" // 字符串` |
9
- | 数字 | number | `123 // 支持整数/浮点数/字符串` | `"123" // 数字值,以字符串形式返回` |
10
- | 单选 | singleSelect | `"optionName1" // 单选选项名` | `{ "id": "id", // 选项ID "name": "optionName1" // 选项名 }` |
11
- | 多选 | multipleSelect | `["optionName1", "optionName2"] // 多选选项名` | `[ { "id": "id1", // 选项ID "name": "optionName1" // 选项名 }, { "id": "id2", // 选项ID "name": "optionName2" // 选项名 } ]` |
12
- | 日期 | date | `1688601600000 // 时间戳 "2023-12-20 03:00" // 或者 ISO 8601字符串` | `1688601600000 // 时间戳` |
13
- | 人员 | user | `[ { unionId: "xxx" } ]` | `[ { "unionId": "xxx" }, {"unionId": "yyy" } ]` |
14
- | 部门 | department | `[ { deptId: "xxx" } ]` | `[ { "deptId": "xxx" } ]` |
15
- | 附件 | attachment | 具体请参考[上传附件](https://open.dingtalk.com/document/orgapp/notable-upload-attachment) 。 | `[ { "filename": "image.xlsx", "size": 92250, "type": "xls", "url": "xxx" } ]`<br> <br><br>**说明**<br><br>url是附件访问链接。<br><br>* 当附件是在线文档时,其是在线文档链接,该链接没有访问时效。<br> <br>* 当附件是其它文件时,是一个有**访问时效** 的下载链接,一段时间后该链接将无法访问。 |
16
- | 单向关联 | unidirectionalLink | `{ "linkedRecordIds": [ "xxx", "yyy" ] }` | `{ "linkedRecordIds": [ "xxx", "yyy" ] }`<br> <br><br>**说明**<br><br>field property中包含关联的sheetId,配合这里返回的recordId,可以通过调用[获取记录](/document/orgapp/api-getrecord#) 接口去获取关联记录的值。 |
17
- | 双向关联 | bidirectionalLink | `{ "linkedRecordIds": [ "xxx", "yyy" ] }` | `{ "linkedRecordIds": [ "xxx", "yyy" ] }` |
18
- | 链接 | url | `{ "text": "Dingtalk", "link": "https://dingtalk.com" }` | `{ "text": "Dingtalk", "link": "https://dingtalk.com" }` |
6
+ | 字段名 | 类型 (type) | 设置值(新增/更新记录时使用的格式) |
7
+ | --- | --- |------------------------------------------------------------------------------------|
8
+ | 文本 | text | `"TextString" // 字符串` |
9
+ | 数字 | number | `123 // 支持整数/浮点数/字符串` |
10
+ | 单选 | singleSelect | `"optionName1" // 单选选项名` |
11
+ | 多选 | multipleSelect | `["optionName1", "optionName2"] // 多选选项名` |
12
+ | 日期 | date | `1688601600000 // 时间戳 "2023-12-20 03:00" // 或者 ISO 8601字符串` |
13
+ | 人员 | user | `[ { unionId: "xxx" } ]` |
14
+ | 部门 | department | `[ { deptId: "xxx" } ]` |
15
+ | 附件 | attachment | 具体请参考[上传附件](https://open.dingtalk.com/document/orgapp/notable-upload-attachment) 。 |
16
+ | 单向关联 | unidirectionalLink | `{ "linkedRecordIds": [ "xxx", "yyy" ] }` |
17
+ | 双向关联 | bidirectionalLink | `{ "linkedRecordIds": [ "xxx", "yyy" ] }` |
18
+ | 链接 | url | `{ "text": "Dingtalk", "link": "https://dingtalk.com" }` |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dingtalk-mcp",
3
- "version": "1.1.19",
3
+ "version": "1.1.21",
4
4
  "description": "DingTalk MCP Server - A TypeScript-based MCP server for DingTalk integration",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",