@cicctencent/agent-server 0.2.74 → 0.2.75

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.
Files changed (87) hide show
  1. package/dist/cjs/agent/agent-server.d.ts.map +1 -1
  2. package/dist/cjs/agent/agent-server.js +90 -6
  3. package/dist/cjs/agent/agent-server.js.map +1 -1
  4. package/dist/cjs/connectors/calendar-adapter.d.ts +4 -11
  5. package/dist/cjs/connectors/calendar-adapter.d.ts.map +1 -1
  6. package/dist/cjs/connectors/calendar-adapter.js +84 -115
  7. package/dist/cjs/connectors/calendar-adapter.js.map +1 -1
  8. package/dist/cjs/connectors/db-adapter.d.ts +5 -22
  9. package/dist/cjs/connectors/db-adapter.d.ts.map +1 -1
  10. package/dist/cjs/connectors/db-adapter.js +316 -119
  11. package/dist/cjs/connectors/db-adapter.js.map +1 -1
  12. package/dist/cjs/connectors/email-adapter.d.ts +12 -14
  13. package/dist/cjs/connectors/email-adapter.d.ts.map +1 -1
  14. package/dist/cjs/connectors/email-adapter.js +286 -127
  15. package/dist/cjs/connectors/email-adapter.js.map +1 -1
  16. package/dist/cjs/connectors/fs-adapter.d.ts +3 -9
  17. package/dist/cjs/connectors/fs-adapter.d.ts.map +1 -1
  18. package/dist/cjs/connectors/fs-adapter.js +77 -87
  19. package/dist/cjs/connectors/fs-adapter.js.map +1 -1
  20. package/dist/cjs/connectors/http-adapter.d.ts +14 -18
  21. package/dist/cjs/connectors/http-adapter.d.ts.map +1 -1
  22. package/dist/cjs/connectors/http-adapter.js +260 -135
  23. package/dist/cjs/connectors/http-adapter.js.map +1 -1
  24. package/dist/cjs/connectors/index.d.ts +4 -2
  25. package/dist/cjs/connectors/index.d.ts.map +1 -1
  26. package/dist/cjs/connectors/index.js +137 -1
  27. package/dist/cjs/connectors/index.js.map +1 -1
  28. package/dist/cjs/connectors/mcp-adapter.d.ts +9 -17
  29. package/dist/cjs/connectors/mcp-adapter.d.ts.map +1 -1
  30. package/dist/cjs/connectors/mcp-adapter.js +186 -136
  31. package/dist/cjs/connectors/mcp-adapter.js.map +1 -1
  32. package/dist/cjs/connectors/mq-adapter.d.ts +10 -15
  33. package/dist/cjs/connectors/mq-adapter.d.ts.map +1 -1
  34. package/dist/cjs/connectors/mq-adapter.js +264 -142
  35. package/dist/cjs/connectors/mq-adapter.js.map +1 -1
  36. package/dist/cjs/index.d.ts +1 -1
  37. package/dist/cjs/index.d.ts.map +1 -1
  38. package/dist/cjs/index.js +4 -3
  39. package/dist/cjs/index.js.map +1 -1
  40. package/dist/cjs/spi/types.d.ts +2 -0
  41. package/dist/cjs/spi/types.d.ts.map +1 -1
  42. package/dist/cjs/types.d.ts +170 -10
  43. package/dist/cjs/types.d.ts.map +1 -1
  44. package/dist/esm/agent/agent-server.d.ts.map +1 -1
  45. package/dist/esm/agent/agent-server.js +90 -6
  46. package/dist/esm/agent/agent-server.js.map +1 -1
  47. package/dist/esm/connectors/calendar-adapter.d.ts +4 -11
  48. package/dist/esm/connectors/calendar-adapter.d.ts.map +1 -1
  49. package/dist/esm/connectors/calendar-adapter.js +84 -115
  50. package/dist/esm/connectors/calendar-adapter.js.map +1 -1
  51. package/dist/esm/connectors/db-adapter.d.ts +5 -22
  52. package/dist/esm/connectors/db-adapter.d.ts.map +1 -1
  53. package/dist/esm/connectors/db-adapter.js +315 -118
  54. package/dist/esm/connectors/db-adapter.js.map +1 -1
  55. package/dist/esm/connectors/email-adapter.d.ts +12 -14
  56. package/dist/esm/connectors/email-adapter.d.ts.map +1 -1
  57. package/dist/esm/connectors/email-adapter.js +253 -127
  58. package/dist/esm/connectors/email-adapter.js.map +1 -1
  59. package/dist/esm/connectors/fs-adapter.d.ts +3 -9
  60. package/dist/esm/connectors/fs-adapter.d.ts.map +1 -1
  61. package/dist/esm/connectors/fs-adapter.js +77 -87
  62. package/dist/esm/connectors/fs-adapter.js.map +1 -1
  63. package/dist/esm/connectors/http-adapter.d.ts +14 -18
  64. package/dist/esm/connectors/http-adapter.d.ts.map +1 -1
  65. package/dist/esm/connectors/http-adapter.js +260 -135
  66. package/dist/esm/connectors/http-adapter.js.map +1 -1
  67. package/dist/esm/connectors/index.d.ts +4 -2
  68. package/dist/esm/connectors/index.d.ts.map +1 -1
  69. package/dist/esm/connectors/index.js +136 -1
  70. package/dist/esm/connectors/index.js.map +1 -1
  71. package/dist/esm/connectors/mcp-adapter.d.ts +9 -17
  72. package/dist/esm/connectors/mcp-adapter.d.ts.map +1 -1
  73. package/dist/esm/connectors/mcp-adapter.js +153 -136
  74. package/dist/esm/connectors/mcp-adapter.js.map +1 -1
  75. package/dist/esm/connectors/mq-adapter.d.ts +10 -15
  76. package/dist/esm/connectors/mq-adapter.d.ts.map +1 -1
  77. package/dist/esm/connectors/mq-adapter.js +230 -141
  78. package/dist/esm/connectors/mq-adapter.js.map +1 -1
  79. package/dist/esm/index.d.ts +1 -1
  80. package/dist/esm/index.d.ts.map +1 -1
  81. package/dist/esm/index.js +1 -1
  82. package/dist/esm/index.js.map +1 -1
  83. package/dist/esm/spi/types.d.ts +2 -0
  84. package/dist/esm/spi/types.d.ts.map +1 -1
  85. package/dist/esm/types.d.ts +170 -10
  86. package/dist/esm/types.d.ts.map +1 -1
  87. package/package.json +7 -3
@@ -8,6 +8,7 @@ exports.getAdapter = getAdapter;
8
8
  exports.listAdapterTypes = listAdapterTypes;
9
9
  exports.listAdapters = listAdapters;
10
10
  exports.resetAdapters = resetAdapters;
11
+ exports.listDataSourceTypes = listDataSourceTypes;
11
12
  // ===== 适配器注册表 =====
12
13
  const adapters = new Map();
13
14
  /** 注册数据源适配器 */
@@ -42,7 +43,7 @@ const email_adapter_ts_1 = require("./email-adapter.js");
42
43
  const calendar_adapter_ts_1 = require("./calendar-adapter.js");
43
44
  const mcp_adapter_ts_1 = require("./mcp-adapter.js");
44
45
  const mq_adapter_ts_1 = require("./mq-adapter.js");
45
- // 注册内置适配器(如果尚未注册)
46
+ /** 注册内置适配器(如果尚未注册) */
46
47
  function registerBuiltinAdapters() {
47
48
  if (!adapters.has('database'))
48
49
  registerAdapter(new db_adapter_ts_1.DatabaseAdapter());
@@ -60,4 +61,139 @@ function registerBuiltinAdapters() {
60
61
  registerAdapter(new mq_adapter_ts_1.MessageQueueAdapter());
61
62
  }
62
63
  registerBuiltinAdapters();
64
+ // ============================================================
65
+ // 数据源类型描述(供前端向导展示)
66
+ // 字段 key 使用兼容别名(dbDriver / fsRootPath / mqUrl / emailProtocol / calendarBackend 等),
67
+ // 这些键在 @cicctencent/agent-server 的 DataSourceConfig 中作为兼容字段保留。
68
+ // ============================================================
69
+ /** 列出所有适配器的显示信息(供前端向导使用) */
70
+ function listDataSourceTypes() {
71
+ return [
72
+ {
73
+ type: 'database',
74
+ label: '数据库',
75
+ description: '连接 MySQL / PostgreSQL / MongoDB 数据库,自动发现 Schema 并生成查询工具',
76
+ icon: 'database',
77
+ drivers: [
78
+ { value: 'mysql', label: 'MySQL', defaultPort: 3306 },
79
+ { value: 'postgres', label: 'PostgreSQL', defaultPort: 5432 },
80
+ { value: 'mongodb', label: 'MongoDB', defaultPort: 27017 },
81
+ ],
82
+ configFields: [
83
+ { key: 'dbDriver', label: '数据库类型', type: 'select', required: true, options: [
84
+ { value: 'mysql', label: 'MySQL' },
85
+ { value: 'postgres', label: 'PostgreSQL' },
86
+ { value: 'mongodb', label: 'MongoDB' },
87
+ ] },
88
+ { key: 'dbHost', label: '主机地址', type: 'text', placeholder: 'localhost', required: true },
89
+ { key: 'dbPort', label: '端口', type: 'number', placeholder: '3306' },
90
+ { key: 'dbUser', label: '用户名', type: 'text', placeholder: 'root' },
91
+ { key: 'dbPassword', label: '密码', type: 'password', placeholder: '数据库密码' },
92
+ { key: 'dbName', label: '数据库名', type: 'text', placeholder: 'my_database', required: true },
93
+ ],
94
+ },
95
+ {
96
+ type: 'filesystem',
97
+ label: '文件系统',
98
+ description: '访问本地或网络文件系统,提供目录浏览、文件读取和搜索功能',
99
+ icon: 'folder2-open',
100
+ configFields: [
101
+ { key: 'fsRootPath', label: '根目录路径', type: 'path', placeholder: '/path/to/data', required: true },
102
+ { key: 'fsAllowedExtensions', label: '允许的文件扩展名', type: 'tags', placeholder: '如 .csv, .json, .xlsx(留空不限制)' },
103
+ { key: 'fsWritable', label: '允许写入', type: 'select', options: [
104
+ { value: 'false', label: '只读(推荐)' },
105
+ { value: 'true', label: '允许写入' },
106
+ ] },
107
+ ],
108
+ },
109
+ {
110
+ type: 'message-queue',
111
+ label: '消息队列',
112
+ description: '连接 RabbitMQ 或 Kafka,消费和发布消息',
113
+ icon: 'inbox',
114
+ drivers: [
115
+ { value: 'rabbitmq', label: 'RabbitMQ', defaultPort: 5672 },
116
+ { value: 'kafka', label: 'Kafka', defaultPort: 9092 },
117
+ ],
118
+ configFields: [
119
+ { key: 'mqDriver', label: '消息队列类型', type: 'select', required: true, options: [
120
+ { value: 'rabbitmq', label: 'RabbitMQ' },
121
+ { value: 'kafka', label: 'Kafka' },
122
+ ] },
123
+ { key: 'mqUrl', label: '连接 URL', type: 'text', placeholder: 'amqp://localhost:5672 或 localhost:9092', required: true },
124
+ { key: 'mqGroupId', label: '消费者组 ID(Kafka)', type: 'text', placeholder: 'workai' },
125
+ { key: 'mqWritable', label: '允许发布', type: 'select', options: [
126
+ { value: 'false', label: '只读消费(推荐)' },
127
+ { value: 'true', label: '允许发布消息' },
128
+ ] },
129
+ ],
130
+ },
131
+ {
132
+ type: 'http-api',
133
+ label: 'HTTP 服务',
134
+ description: '接入 RESTful API 服务,支持手动定义端点或导入 OpenAPI 文档自动生成工具',
135
+ icon: 'globe2',
136
+ configFields: [
137
+ { key: 'services', label: '服务配置', type: 'json', placeholder: '由向导动态管理' },
138
+ ],
139
+ },
140
+ {
141
+ type: 'mcp',
142
+ label: 'MCP 服务器',
143
+ description: '连接标准 MCP 服务器(stdio/SSE/HTTP),自动发现并注册远程工具',
144
+ icon: 'diagram-3',
145
+ configFields: [
146
+ { key: 'services', label: '服务配置', type: 'json', placeholder: '由向导动态管理' },
147
+ ],
148
+ },
149
+ {
150
+ type: 'email',
151
+ label: '邮箱',
152
+ description: '连接 IMAP+SMTP 或 Exchange (Microsoft 365) 邮箱,提供邮件发送、收取、搜索、回复、标记等 AI 工具',
153
+ icon: 'envelope',
154
+ configFields: [
155
+ { key: 'emailProtocol', label: '邮箱协议', type: 'select', required: true, options: [
156
+ { value: 'imap', label: 'IMAP + SMTP' },
157
+ { value: 'exchange', label: 'Exchange Online (Microsoft 365 Graph API)' },
158
+ { value: 'exchange-ews', label: 'Exchange 自建 (EWS 用户名+密码)' },
159
+ ] },
160
+ { key: 'smtpHost', label: 'SMTP 主机', type: 'text', placeholder: 'smtp.example.com', required: true },
161
+ { key: 'smtpPort', label: 'SMTP 端口', type: 'number', placeholder: '587' },
162
+ { key: 'smtpSecure', label: 'SMTP SSL', type: 'select', options: [
163
+ { value: 'false', label: 'STARTTLS (587)' },
164
+ { value: 'true', label: 'SSL (465)' },
165
+ ] },
166
+ { key: 'smtpUser', label: '邮箱账号', type: 'text', placeholder: 'user@example.com', required: true },
167
+ { key: 'smtpPass', label: '邮箱密码', type: 'password', placeholder: '密码或应用专用密码', required: true },
168
+ { key: 'smtpFrom', label: '发件人显示名', type: 'text', placeholder: 'WorkAgent <noreply@example.com>' },
169
+ { key: 'imapHost', label: 'IMAP 主机', type: 'text', placeholder: 'imap.example.com(留空则同 SMTP)' },
170
+ { key: 'imapPort', label: 'IMAP 端口', type: 'number', placeholder: '993' },
171
+ { key: 'exchangeTenantId', label: 'Azure AD 租户 ID', type: 'text', placeholder: 'tenant-id', required: true },
172
+ { key: 'exchangeClientId', label: 'Azure AD Client ID', type: 'text', placeholder: '应用注册的 Client ID', required: true },
173
+ { key: 'exchangeClientSecret', label: 'Azure AD Client Secret', type: 'password', placeholder: '应用 Client Secret', required: true },
174
+ { key: 'exchangeFromEmail', label: '发件人邮箱', type: 'text', placeholder: 'noreply@company.com', required: true },
175
+ { key: 'ewsUrl', label: 'EWS 服务地址', type: 'text', placeholder: 'mail.company.com', required: true },
176
+ { key: 'ewsUsername', label: '用户名', type: 'text', placeholder: '域名\\用户名 或 邮箱地址', required: true },
177
+ { key: 'ewsPassword', label: '密码', type: 'password', placeholder: '域用户密码', required: true },
178
+ { key: 'ewsFromEmail', label: '发件人邮箱', type: 'text', placeholder: 'user@company.com(留空则同用户名)' },
179
+ ],
180
+ },
181
+ {
182
+ type: 'calendar',
183
+ label: '日历',
184
+ description: '日历事件管理,支持本地存储或 CalDAV 服务器,提供事件创建、查询、更新、删除等 AI 工具',
185
+ icon: 'calendar3',
186
+ configFields: [
187
+ { key: 'calendarBackend', label: '日历后端', type: 'select', required: true, options: [
188
+ { value: 'local', label: '本地存储(推荐)' },
189
+ { value: 'caldav', label: 'CalDAV 服务器' },
190
+ ] },
191
+ { key: 'caldavUrl', label: 'CalDAV URL', type: 'text', placeholder: 'https://cal.example.com/user/' },
192
+ { key: 'caldavUser', label: 'CalDAV 用户名', type: 'text', placeholder: 'username' },
193
+ { key: 'caldavPass', label: 'CalDAV 密码', type: 'password', placeholder: 'password' },
194
+ { key: 'calendarName', label: '日历名称', type: 'text', placeholder: 'My Calendar' },
195
+ ],
196
+ },
197
+ ];
198
+ }
63
199
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/connectors/index.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,yBAAyB;AACzB,+DAA+D;;AAS/D,0CAEC;AAGD,gCAMC;AAGD,4CAEC;AAGD,oCAEC;AAGD,sCAEC;AA/BD,qBAAqB;AAErB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAqC,CAAC;AAE9D,eAAe;AACf,SAAgB,eAAe,CAAC,OAA0B;IACxD,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC;AAED,iBAAiB;AACjB,SAAgB,UAAU,CAAC,IAAoB;IAC7C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,QAAQ,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,oBAAoB;AACpB,SAAgB,gBAAgB;IAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,kBAAkB;AAClB,SAAgB,YAAY;IAC1B,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,iBAAiB;AACjB,SAAgB,aAAa;IAC3B,QAAQ,CAAC,KAAK,EAAE,CAAC;AACnB,CAAC;AAcD,YAAY;AACZ,mDAAkD;AAClD,uDAAmD;AACnD,mDAAoD;AACpD,yDAAkD;AAClD,+DAAwD;AACxD,qDAA8C;AAC9C,mDAAsD;AAEtD,kBAAkB;AAClB,SAAS,uBAAuB;IAC9B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,eAAe,CAAC,IAAI,+BAAe,EAAE,CAAC,CAAC;IACtE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,eAAe,CAAC,IAAI,gCAAc,EAAE,CAAC,CAAC;IACrE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC;QAAE,eAAe,CAAC,IAAI,iCAAiB,EAAE,CAAC,CAAC;IAC1E,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;QAAE,eAAe,CAAC,IAAI,+BAAY,EAAE,CAAC,CAAC;IAChE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,eAAe,CAAC,IAAI,qCAAe,EAAE,CAAC,CAAC;IACtE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,eAAe,CAAC,IAAI,2BAAU,EAAE,CAAC,CAAC;IAC5D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC;QAAE,eAAe,CAAC,IAAI,mCAAmB,EAAE,CAAC,CAAC;AACjF,CAAC;AACD,uBAAuB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/connectors/index.ts"],"names":[],"mappings":"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"}
@@ -1,28 +1,20 @@
1
1
  /**
2
2
  * MCP 服务器适配器
3
3
  *
4
- * 连接外部 MCP 服务器,发现其暴露的工具。
5
- * testConnection 尝试连接 MCP 服务器,discoverTools 获取工具列表。
4
+ * 连接标准 MCP 服务器(stdio / sse / http),自动发现远程工具。
5
+ * 支持多服务实例,每个 MCP 服务器生成独立的 MCP 服务器配置(mcp-passthrough 透传)。
6
+ *
7
+ * 字段读取兼容规范键(mcpTransport / command / args / env / url)
8
+ * 与历史别名(services[{ mcpCommand / mcpArgs / mcpEndpoint / mcpHeaders / mcpEnv }])。
6
9
  */
7
10
  import type { DataSourceConfig, DiscoveredTool, ConnectionTestResult, DataSourceAdapter, MCPServerConfig } from '../types.js';
8
11
  export declare class MCPAdapter implements DataSourceAdapter {
9
12
  readonly type: "mcp";
13
+ readonly label = "MCP \u670D\u52A1\u5668";
10
14
  testConnection(config: DataSourceConfig): Promise<ConnectionTestResult>;
11
15
  discoverTools(config: DataSourceConfig): Promise<DiscoveredTool[]>;
12
- generateManifest(config: DataSourceConfig): Promise<{
13
- tools: DiscoveredTool[];
14
- metadata: {
15
- transport: "stdio" | "sse" | "streamable-http";
16
- command: string;
17
- url: string;
18
- };
19
- }>;
20
- generateMCPServerConfigs(config: DataSourceConfig): Promise<MCPServerConfig[]>;
21
- /** 从 MCP 服务器获取工具列表 */
22
- private fetchTools;
23
- /** 通过 stdio 连接 MCP 服务器 */
24
- private fetchToolsStdio;
25
- /** 通过 HTTP/SSE 连接 MCP 服务器 */
26
- private fetchToolsHTTP;
16
+ generateManifest(config: DataSourceConfig, _tools?: DiscoveredTool[]): Record<string, unknown>;
17
+ generateMCPServerConfigs(config: DataSourceConfig, tools?: DiscoveredTool[]): MCPServerConfig[];
18
+ private createAndConnect;
27
19
  }
28
20
  //# sourceMappingURL=mcp-adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-adapter.d.ts","sourceRoot":"","sources":["../../../src/connectors/mcp-adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EACR,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,EAClB,MAAM,aAAa,CAAC;AAErB,qBAAa,UAAW,YAAW,iBAAiB;IAChD,QAAQ,CAAC,IAAI,EAAG,KAAK,CAAU;IAEzB,cAAc,CAChB,MAAM,EAAE,gBAAgB,GACzB,OAAO,CAAC,oBAAoB,CAAC;IAiB1B,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAIlE,gBAAgB,CAAC,MAAM,EAAE,gBAAgB;;;;;;;;IAYzC,wBAAwB,CAC1B,MAAM,EAAE,gBAAgB,GACzB,OAAO,CAAC,eAAe,EAAE,CAAC;IAe7B,sBAAsB;YACR,UAAU;IAWxB,0BAA0B;YACZ,eAAe;IAqF7B,6BAA6B;YACf,cAAc;CAwB/B"}
1
+ {"version":3,"file":"mcp-adapter.d.ts","sourceRoot":"","sources":["../../../src/connectors/mcp-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,EAEhB,MAAM,aAAa,CAAC;AAgCrB,qBAAa,UAAW,YAAW,iBAAiB;IAClD,QAAQ,CAAC,IAAI,EAAG,KAAK,CAAU;IAC/B,QAAQ,CAAC,KAAK,4BAAa;IAErB,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAsBvE,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAiDxE,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,cAAc,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAa9F,wBAAwB,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,CAAC,EAAE,cAAc,EAAE,GAAG,eAAe,EAAE;YA6BjF,gBAAgB;CAgB/B"}
@@ -1,154 +1,204 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.MCPAdapter = void 0;
37
+ function readService(svc) {
38
+ return {
39
+ name: svc.name,
40
+ transport: (svc.mcpTransport || 'stdio'),
41
+ command: svc.mcpCommand,
42
+ args: svc.mcpArgs,
43
+ env: svc.mcpEnv,
44
+ endpoint: svc.mcpEndpoint,
45
+ headers: svc.mcpHeaders,
46
+ };
47
+ }
48
+ /**
49
+ * 解析 MCP 服务列表。
50
+ * 优先使用 `config.services`(work-client 多服务形态);
51
+ * 缺失时回退到扁平单服务配置(work-space 向导:顶层 mcpTransport/command/args/env/url)。
52
+ */
53
+ function resolveMcpServices(config) {
54
+ if (config.services && config.services.length > 0)
55
+ return config.services;
56
+ return [{
57
+ name: config.name || 'default',
58
+ mcpTransport: config.mcpTransport,
59
+ mcpCommand: config.command,
60
+ mcpArgs: config.args,
61
+ mcpEnv: config.env,
62
+ mcpEndpoint: config.url,
63
+ mcpHeaders: config.headers,
64
+ }];
65
+ }
4
66
  class MCPAdapter {
5
67
  type = 'mcp';
68
+ label = 'MCP 服务器';
6
69
  async testConnection(config) {
7
- try {
8
- const tools = await this.fetchTools(config);
9
- return {
10
- success: true,
11
- message: `MCP 服务器连接成功,发现 ${tools.length} 个工具`,
12
- resources: tools.map(t => t.name),
13
- };
14
- }
15
- catch (err) {
16
- return {
17
- success: false,
18
- message: 'MCP 服务器连接失败',
19
- error: err.message,
20
- };
70
+ const services = resolveMcpServices(config);
71
+ if (services.length === 0)
72
+ return { success: false, message: '至少需要一个 MCP 服务器配置' };
73
+ const start = Date.now();
74
+ const errors = [];
75
+ let connected = 0;
76
+ for (const svcRaw of services) {
77
+ const svc = readService(svcRaw);
78
+ try {
79
+ const client = await this.createAndConnect(svc);
80
+ try {
81
+ await client.listTools();
82
+ connected++;
83
+ }
84
+ finally {
85
+ client.disconnect();
86
+ }
87
+ }
88
+ catch (e) {
89
+ errors.push(`${svc.name}: ${e?.message || '连接失败'}`);
90
+ }
21
91
  }
92
+ const latency = Date.now() - start;
93
+ if (connected === 0)
94
+ return { success: false, message: errors.join('; '), latency };
95
+ const info = { servers: services.length, connected };
96
+ if (errors.length > 0)
97
+ info.warnings = errors.join('; ');
98
+ return { success: true, message: 'MCP 服务器连接成功', latency, info };
22
99
  }
23
100
  async discoverTools(config) {
24
- return this.fetchTools(config);
101
+ const services = resolveMcpServices(config);
102
+ const allTools = [];
103
+ for (const svcRaw of services) {
104
+ const svc = readService(svcRaw);
105
+ try {
106
+ const client = await this.createAndConnect(svc);
107
+ try {
108
+ const remoteDefs = await client.listTools();
109
+ for (const def of remoteDefs) {
110
+ const params = (def.function?.parameters || { type: 'object', properties: {} });
111
+ allTools.push({
112
+ name: def.function.name,
113
+ description: def.function.description || '',
114
+ inputSchema: {
115
+ type: 'object',
116
+ properties: Object.fromEntries(Object.entries(params.properties || {}).map(([k, v]) => [
117
+ k,
118
+ { type: v.type || 'string', description: v.description || k, ...(v.enum ? { enum: v.enum } : {}) },
119
+ ])),
120
+ ...(params.required?.length ? { required: params.required } : {}),
121
+ },
122
+ executorType: 'mcp-passthrough',
123
+ executorMeta: {
124
+ serviceName: svc.name,
125
+ mcpTransport: svc.transport,
126
+ ...(svc.command ? { mcpCommand: svc.command } : {}),
127
+ ...(svc.args ? { mcpArgs: svc.args } : {}),
128
+ ...(svc.endpoint ? { mcpEndpoint: svc.endpoint } : {}),
129
+ ...(svc.env ? { mcpEnv: svc.env } : {}),
130
+ },
131
+ });
132
+ }
133
+ }
134
+ finally {
135
+ client.disconnect();
136
+ }
137
+ }
138
+ catch (e) {
139
+ console.warn(`[McpAdapter] discoverTools for '${svc.name}' failed:`, e?.message);
140
+ }
141
+ }
142
+ return allTools;
25
143
  }
26
- async generateManifest(config) {
27
- const tools = await this.discoverTools(config);
144
+ generateManifest(config, _tools) {
145
+ const services = resolveMcpServices(config);
28
146
  return {
29
- tools,
30
- metadata: {
31
- transport: config.mcpTransport,
32
- command: config.command,
33
- url: config.url,
34
- },
147
+ name: config.name,
148
+ description: config.description || `MCP 连接器 — ${services.length} 服务器`,
149
+ category: 'data',
150
+ version: '1.0.0',
151
+ icon: 'diagram-3',
152
+ enabled: true,
153
+ dataSourceType: 'mcp',
35
154
  };
36
155
  }
37
- async generateMCPServerConfigs(config) {
38
- const tools = await this.discoverTools(config);
39
- return [
40
- {
41
- name: `mcp-${config.name || 'proxy'}`,
42
- transport: config.mcpTransport || 'stdio',
43
- command: config.command,
44
- args: config.args,
45
- env: config.env,
46
- url: config.url,
47
- tools,
48
- },
49
- ];
50
- }
51
- /** 从 MCP 服务器获取工具列表 */
52
- async fetchTools(config) {
53
- const transport = config.mcpTransport || 'stdio';
54
- if (transport === 'stdio') {
55
- return this.fetchToolsStdio(config);
156
+ generateMCPServerConfigs(config, tools) {
157
+ const services = resolveMcpServices(config);
158
+ const all = tools && tools.length > 0 ? tools : undefined;
159
+ const result = [];
160
+ for (const svcRaw of services) {
161
+ const svc = readService(svcRaw);
162
+ const svcName = svc.name || 'default';
163
+ const safeName = svcName.replace(/[^a-zA-Z0-9_-]/g, '_');
164
+ const svcTools = (all || []).filter(t => t.executorMeta?.serviceName === svcName);
165
+ const transport = svc.transport;
166
+ const mcpTransport = transport === 'streamableHttp' ? 'streamable-http' : transport;
167
+ const base = {
168
+ name: safeName,
169
+ transport: mcpTransport,
170
+ tools: svcTools,
171
+ };
172
+ if (mcpTransport === 'stdio') {
173
+ base.command = svc.command;
174
+ base.args = svc.args || [];
175
+ if (svc.env && Object.keys(svc.env).length > 0)
176
+ base.env = svc.env;
177
+ }
178
+ else {
179
+ base.url = svc.endpoint;
180
+ if (svc.headers && Object.keys(svc.headers).length > 0)
181
+ base.headers = svc.headers;
182
+ }
183
+ result.push(base);
56
184
  }
57
- return this.fetchToolsHTTP(config);
58
- }
59
- /** 通过 stdio 连接 MCP 服务器 */
60
- async fetchToolsStdio(config) {
61
- const { spawn } = require('child_process');
62
- return new Promise((resolve, reject) => {
63
- const proc = spawn(config.command, config.args || [], {
64
- env: { ...process.env, ...(config.env || {}) },
65
- stdio: ['pipe', 'pipe', 'pipe'],
66
- });
67
- const timeout = setTimeout(() => {
68
- proc.kill();
69
- reject(new Error('MCP 服务器连接超时'));
70
- }, 15000);
71
- let buffer = '';
72
- proc.stdout.on('data', (data) => {
73
- buffer += data.toString();
74
- const lines = buffer.split('\n');
75
- buffer = lines.pop() || '';
76
- for (const line of lines) {
77
- if (!line.trim())
78
- continue;
79
- try {
80
- const msg = JSON.parse(line);
81
- if (msg.result?.tools) {
82
- clearTimeout(timeout);
83
- proc.kill();
84
- resolve(msg.result.tools.map((t) => ({
85
- name: t.name,
86
- description: t.description || '',
87
- inputSchema: t.inputSchema || {
88
- type: 'object',
89
- properties: {},
90
- },
91
- })));
92
- }
93
- }
94
- catch {
95
- // 忽略非 JSON 行
96
- }
97
- }
98
- });
99
- proc.stderr.on('data', () => {
100
- // 忽略 stderr
101
- });
102
- proc.on('error', err => {
103
- clearTimeout(timeout);
104
- reject(new Error(`启动 MCP 服务器失败: ${err.message}`));
105
- });
106
- proc.on('close', () => {
107
- clearTimeout(timeout);
108
- // 如果还没 resolve,返回空数组
109
- resolve([]);
110
- });
111
- // 发送 initialize + tools/list 请求
112
- const initMsg = JSON.stringify({
113
- jsonrpc: '2.0',
114
- id: 1,
115
- method: 'initialize',
116
- params: {
117
- protocolVersion: '2024-11-05',
118
- capabilities: {},
119
- clientInfo: { name: 'connector-test', version: '1.0' },
120
- },
121
- });
122
- const listMsg = JSON.stringify({
123
- jsonrpc: '2.0',
124
- id: 2,
125
- method: 'tools/list',
126
- params: {},
127
- });
128
- proc.stdin.write(initMsg + '\n');
129
- proc.stdin.write(listMsg + '\n');
130
- });
185
+ return result;
131
186
  }
132
- /** 通过 HTTP/SSE 连接 MCP 服务器 */
133
- async fetchToolsHTTP(config) {
134
- const resp = await fetch(`${config.url}/tools`, {
135
- method: 'GET',
136
- headers: { 'Content-Type': 'application/json' },
137
- signal: AbortSignal.timeout(10000),
138
- });
139
- if (!resp.ok) {
140
- throw new Error(`HTTP ${resp.status}`);
141
- }
142
- const data = await resp.json();
143
- const tools = data.tools || data;
144
- return (Array.isArray(tools) ? tools : []).map((t) => ({
145
- name: t.name,
146
- description: t.description || '',
147
- inputSchema: t.inputSchema || {
148
- type: 'object',
149
- properties: {},
150
- },
151
- }));
187
+ async createAndConnect(svc) {
188
+ const { createMCPClient } = await Promise.resolve().then(() => __importStar(require('@cicctencent/agent-core')));
189
+ const config = {
190
+ name: svc.name,
191
+ transport: svc.transport,
192
+ command: svc.command,
193
+ args: svc.args || [],
194
+ env: svc.env || {},
195
+ endpoint: svc.endpoint,
196
+ headers: svc.headers,
197
+ timeout: 15000,
198
+ };
199
+ const client = createMCPClient(config);
200
+ await client.connect(config);
201
+ return client;
152
202
  }
153
203
  }
154
204
  exports.MCPAdapter = MCPAdapter;
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-adapter.js","sourceRoot":"","sources":["../../../src/connectors/mcp-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-adapter.js","sourceRoot":"","sources":["../../../src/connectors/mcp-adapter.ts"],"names":[],"mappings":"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"}