item-wms-public-api-tool 2.0.4
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/AI_INTEGRATION_GUIDE.md +492 -0
- package/HELP.md +297 -0
- package/README.md +259 -0
- package/api/README.md +9 -0
- package/api/openapi.apifox.yaml +20771 -0
- package/dist/cli.d.ts +10 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +326 -0
- package/dist/cli.js.map +1 -0
- package/dist/client.d.ts +8 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +76 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +32 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +109 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31 -0
- package/dist/index.js.map +1 -0
- package/dist/openapi-tools.d.ts +25 -0
- package/dist/openapi-tools.d.ts.map +1 -0
- package/dist/openapi-tools.js +287 -0
- package/dist/openapi-tools.js.map +1 -0
- package/dist/server.d.ts +5 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +442 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/batchImportItemMaster.d.ts +59 -0
- package/dist/tools/batchImportItemMaster.d.ts.map +1 -0
- package/dist/tools/batchImportItemMaster.js +27 -0
- package/dist/tools/batchImportItemMaster.js.map +1 -0
- package/dist/tools/batchUploadOrderFiles.d.ts +29 -0
- package/dist/tools/batchUploadOrderFiles.d.ts.map +1 -0
- package/dist/tools/batchUploadOrderFiles.js +96 -0
- package/dist/tools/batchUploadOrderFiles.js.map +1 -0
- package/dist/tools/importInbound.d.ts +62 -0
- package/dist/tools/importInbound.d.ts.map +1 -0
- package/dist/tools/importInbound.js +22 -0
- package/dist/tools/importInbound.js.map +1 -0
- package/dist/tools/importOutbound.d.ts +76 -0
- package/dist/tools/importOutbound.d.ts.map +1 -0
- package/dist/tools/importOutbound.js +25 -0
- package/dist/tools/importOutbound.js.map +1 -0
- package/dist/tools/itemGet.d.ts +15 -0
- package/dist/tools/itemGet.d.ts.map +1 -0
- package/dist/tools/itemGet.js +12 -0
- package/dist/tools/itemGet.js.map +1 -0
- package/dist/tools/itemSearch.d.ts +8 -0
- package/dist/tools/itemSearch.d.ts.map +1 -0
- package/dist/tools/itemSearch.js +17 -0
- package/dist/tools/itemSearch.js.map +1 -0
- package/dist/tools/login.d.ts +26 -0
- package/dist/tools/login.d.ts.map +1 -0
- package/dist/tools/login.js +15 -0
- package/dist/tools/login.js.map +1 -0
- package/dist/tools/queryItemMaster.d.ts +63 -0
- package/dist/tools/queryItemMaster.d.ts.map +1 -0
- package/dist/tools/queryItemMaster.js +9 -0
- package/dist/tools/queryItemMaster.js.map +1 -0
- package/dist/tools/queryOrder.d.ts +74 -0
- package/dist/tools/queryOrder.d.ts.map +1 -0
- package/dist/tools/queryOrder.js +19 -0
- package/dist/tools/queryOrder.js.map +1 -0
- package/dist/tools/queryOrderDC.d.ts +25 -0
- package/dist/tools/queryOrderDC.d.ts.map +1 -0
- package/dist/tools/queryOrderDC.js +19 -0
- package/dist/tools/queryOrderDC.js.map +1 -0
- package/dist/tools/queryOrderDetail.d.ts +70 -0
- package/dist/tools/queryOrderDetail.d.ts.map +1 -0
- package/dist/tools/queryOrderDetail.js +19 -0
- package/dist/tools/queryOrderDetail.js.map +1 -0
- package/dist/tools/queryReceipt.d.ts +70 -0
- package/dist/tools/queryReceipt.d.ts.map +1 -0
- package/dist/tools/queryReceipt.js +19 -0
- package/dist/tools/queryReceipt.js.map +1 -0
- package/dist/tools/queryReceiptDetail.d.ts +70 -0
- package/dist/tools/queryReceiptDetail.d.ts.map +1 -0
- package/dist/tools/queryReceiptDetail.js +19 -0
- package/dist/tools/queryReceiptDetail.js.map +1 -0
- package/dist/tools/queryReceiptRC.d.ts +25 -0
- package/dist/tools/queryReceiptRC.d.ts.map +1 -0
- package/dist/tools/queryReceiptRC.js +19 -0
- package/dist/tools/queryReceiptRC.js.map +1 -0
- package/dist/tools/uploadOrderFile.d.ts +25 -0
- package/dist/tools/uploadOrderFile.d.ts.map +1 -0
- package/dist/tools/uploadOrderFile.js +94 -0
- package/dist/tools/uploadOrderFile.js.map +1 -0
- package/dist/tools/validateInbound.d.ts +13 -0
- package/dist/tools/validateInbound.d.ts.map +1 -0
- package/dist/tools/validateInbound.js +18 -0
- package/dist/tools/validateInbound.js.map +1 -0
- package/llms.txt +23 -0
- package/mcp.json +6562 -0
- package/mcp.schema.json +100 -0
- package/openapi.yaml +20685 -0
- package/package.json +34 -0
- package/scripts/sync-openapi.js +289 -0
- package/src/cli.ts +353 -0
- package/src/client.ts +90 -0
- package/src/config.ts +126 -0
- package/src/index.ts +31 -0
- package/src/openapi-tools.ts +346 -0
- package/src/server.ts +472 -0
- package/test-ai-integration.js +128 -0
- package/test-fix.js +68 -0
- package/test-mcp.js +92 -0
- package/test-order.json +25 -0
- package/tsconfig.json +18 -0
|
@@ -0,0 +1,492 @@
|
|
|
1
|
+
# AI工具集成指南
|
|
2
|
+
|
|
3
|
+
## 1. MCP与AI工具的交互原理
|
|
4
|
+
|
|
5
|
+
### 1.1 核心机制
|
|
6
|
+
|
|
7
|
+
MCP (Model Control Plane) 通过以下机制实现与AI工具的集成:
|
|
8
|
+
|
|
9
|
+
1. **配置驱动发现**:AI工具通过读取 `mcp.json` 文件发现可用工具
|
|
10
|
+
2. **标准化调用**:支持标准MCP JSON-RPC(stdio)以及动态CLI调用(基于OpenAPI)
|
|
11
|
+
3. **结构化输出**:返回JSON格式结果,便于AI工具解析
|
|
12
|
+
4. **自描述接口**:每个工具都包含详细的描述和参数定义
|
|
13
|
+
|
|
14
|
+
### 1.2 标准MCP (stdio/JSON-RPC)
|
|
15
|
+
|
|
16
|
+
当进程运行在非TTY模式(例如通过管道或由AI Agent启动)时,服务会进入标准MCP模式,支持 `initialize`、`tools/list`、`tools/call`、`resources/list`、`prompts/list` 等JSON-RPC方法。
|
|
17
|
+
|
|
18
|
+
示例请求/响应(按行发送JSON):
|
|
19
|
+
|
|
20
|
+
```json
|
|
21
|
+
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","clientInfo":{"name":"agent","version":"1.0.0"}}}
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
```json
|
|
25
|
+
{"jsonrpc":"2.0","id":2,"method":"tools/list"}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
```json
|
|
29
|
+
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"post_v1_public_user_login","arguments":{"username":"testuser","password":"testpass"},"options":{"baseUrl":"https://wms-staging.item.com/api/public"}}}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### 1.3 Prompts(代码生成提示)
|
|
33
|
+
|
|
34
|
+
提供内置提示模板,帮助模型生成更贴合接口的代码:
|
|
35
|
+
|
|
36
|
+
```json
|
|
37
|
+
{"jsonrpc":"2.0","id":4,"method":"prompts/list"}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
```json
|
|
41
|
+
{"jsonrpc":"2.0","id":5,"method":"prompts/get","params":{"name":"wms_call_flow","arguments":{"language":"zh","include_examples":"true"}}}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
该提示用于指导模型基于接口定义实现真实可用的 HTTP 调用,而不是调用 MCP 工具。
|
|
45
|
+
|
|
46
|
+
### 1.4 CLI交互流程
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
CLI/脚本 → 读取 openapi.yaml → 动态生成命令 → 直接调用 HTTP API
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
说明:工具名称由 OpenAPI 自动生成(`<method>_<path>`),CLI 与 MCP 使用同一套工具名。可用 `list/describe` 查看工具详情。
|
|
53
|
+
|
|
54
|
+
## 2. mcp.json文件分析
|
|
55
|
+
|
|
56
|
+
`mcp.json` 是AI工具与MCP交互的核心配置文件,包含以下关键信息:
|
|
57
|
+
|
|
58
|
+
### 2.1 基本信息
|
|
59
|
+
|
|
60
|
+
```json
|
|
61
|
+
{
|
|
62
|
+
"id": "wms.item.public",
|
|
63
|
+
"name": "item-wms-public-api-tool",
|
|
64
|
+
"version": "0.1.0",
|
|
65
|
+
"description": "Public APIs for auth, EDI import, queries, uploads, and item master data.",
|
|
66
|
+
"entrypoint": "item-wms-public-api-tool",
|
|
67
|
+
"tools": [ /* 工具列表 */ ]
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
- **id**:MCP唯一标识符
|
|
72
|
+
- **name**:MCP名称
|
|
73
|
+
- **version**:版本号
|
|
74
|
+
- **description**:功能描述
|
|
75
|
+
- **entrypoint**:CLI入口(动态工具)
|
|
76
|
+
- **tools**:可用工具列表
|
|
77
|
+
|
|
78
|
+
### 2.2 工具定义结构
|
|
79
|
+
|
|
80
|
+
每个工具包含完整的元数据:
|
|
81
|
+
|
|
82
|
+
```json
|
|
83
|
+
{
|
|
84
|
+
"name": "post_v1_public_user_login",
|
|
85
|
+
"description": "User authentication and access token retrieval for system access",
|
|
86
|
+
"inputSchema": {
|
|
87
|
+
"type": "object",
|
|
88
|
+
"properties": {
|
|
89
|
+
"username": { "type": "string" },
|
|
90
|
+
"password": { "type": "string" }
|
|
91
|
+
},
|
|
92
|
+
"required": ["username", "password"]
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
- **name**:工具名称,用于MCP调用与工具查找
|
|
98
|
+
- **description**:工具功能描述,帮助AI工具理解用途
|
|
99
|
+
- **inputSchema**:JSON Schema定义,包含:
|
|
100
|
+
- **properties**:参数列表及类型
|
|
101
|
+
- **required**:必传参数列表
|
|
102
|
+
|
|
103
|
+
## 3. AI工具集成步骤
|
|
104
|
+
|
|
105
|
+
### 3.1 步骤1:发现MCP
|
|
106
|
+
|
|
107
|
+
AI工具通过读取 `mcp.json` 文件发现MCP及其工具:
|
|
108
|
+
|
|
109
|
+
```javascript
|
|
110
|
+
const fs = require('fs');
|
|
111
|
+
const mcpConfig = JSON.parse(fs.readFileSync('mcp.json', 'utf8'));
|
|
112
|
+
|
|
113
|
+
console.log('发现MCP:', mcpConfig.name);
|
|
114
|
+
console.log('可用工具数量:', mcpConfig.tools.length);
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### 3.2 步骤2:选择工具
|
|
118
|
+
|
|
119
|
+
AI工具根据用户需求选择合适的工具:
|
|
120
|
+
|
|
121
|
+
```javascript
|
|
122
|
+
// 根据功能描述匹配工具
|
|
123
|
+
const loginTool = mcpConfig.tools.find(tool =>
|
|
124
|
+
tool.description.includes('authentication') ||
|
|
125
|
+
tool.name === 'post_v1_public_user_login'
|
|
126
|
+
);
|
|
127
|
+
|
|
128
|
+
// 根据名称精确匹配
|
|
129
|
+
const orderQueryTool = mcpConfig.tools.find(tool =>
|
|
130
|
+
tool.name === 'post_v1_public_edi_outbound_order_level_search_by_paging'
|
|
131
|
+
);
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### 3.3 步骤3:解析参数
|
|
135
|
+
|
|
136
|
+
AI工具解析工具的输入参数:
|
|
137
|
+
|
|
138
|
+
```javascript
|
|
139
|
+
// 获取工具参数信息
|
|
140
|
+
const toolParams = loginTool.inputSchema.properties;
|
|
141
|
+
const requiredParams = loginTool.inputSchema.required;
|
|
142
|
+
|
|
143
|
+
console.log('工具参数:', Object.keys(toolParams));
|
|
144
|
+
console.log('必传参数:', requiredParams);
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### 3.4 步骤4:构造MCP调用
|
|
148
|
+
|
|
149
|
+
AI工具根据工具名称和参数构造 MCP `tools/call` 请求:
|
|
150
|
+
|
|
151
|
+
```javascript
|
|
152
|
+
// 工具名由 <method>_<path> 生成
|
|
153
|
+
const toolName = 'post_v1_public_user_login';
|
|
154
|
+
|
|
155
|
+
const request = {
|
|
156
|
+
jsonrpc: '2.0',
|
|
157
|
+
id: 1,
|
|
158
|
+
method: 'tools/call',
|
|
159
|
+
params: {
|
|
160
|
+
name: toolName,
|
|
161
|
+
arguments: {
|
|
162
|
+
username: 'testuser',
|
|
163
|
+
password: 'testpass'
|
|
164
|
+
},
|
|
165
|
+
options: {
|
|
166
|
+
baseUrl: 'https://wms-staging.item.com/api/public'
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
console.log('构造的请求:', JSON.stringify(request));
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
说明:`baseUrl` 可省略,默认使用 `https://wms-staging.item.com/api/public`。CLI 可通过 `list/describe` 获取工具列表与参数。
|
|
175
|
+
|
|
176
|
+
### 3.5 步骤5:执行命令
|
|
177
|
+
|
|
178
|
+
AI工具执行动态CLI命令并获取结果:
|
|
179
|
+
|
|
180
|
+
```javascript
|
|
181
|
+
const child_process = require('child_process');
|
|
182
|
+
|
|
183
|
+
function executeMCPCommand(command) {
|
|
184
|
+
return new Promise((resolve, reject) => {
|
|
185
|
+
child_process.exec(command, (error, stdout, stderr) => {
|
|
186
|
+
if (error) {
|
|
187
|
+
reject(new Error(`命令执行失败: ${stderr}`));
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
try {
|
|
192
|
+
// 解析JSON结果
|
|
193
|
+
const result = JSON.parse(stdout);
|
|
194
|
+
resolve(result);
|
|
195
|
+
} catch (parseError) {
|
|
196
|
+
reject(new Error(`结果解析失败: ${stdout}`));
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
// 使用示例
|
|
203
|
+
const result = await executeMCPCommand(command);
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### 3.6 步骤6:处理结果
|
|
207
|
+
|
|
208
|
+
AI工具处理和使用命令执行结果:
|
|
209
|
+
|
|
210
|
+
```javascript
|
|
211
|
+
if (result.success) {
|
|
212
|
+
console.log('登录成功');
|
|
213
|
+
console.log('获取到的token:', result.onAuthToken);
|
|
214
|
+
|
|
215
|
+
// 使用token调用其他工具
|
|
216
|
+
const orderResult = await executeMCPCommand(
|
|
217
|
+
`${mcpConfig.entrypoint} call post_v1_public_edi_outbound_order_level_search_by_paging --json '{"Paging":{"page":1,"pageSize":10}}' --token ${result.onAuthToken}`
|
|
218
|
+
);
|
|
219
|
+
|
|
220
|
+
console.log('订单查询结果:', orderResult);
|
|
221
|
+
} else {
|
|
222
|
+
console.error('登录失败:', result.message);
|
|
223
|
+
}
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
## 4. AI工具集成验证
|
|
227
|
+
|
|
228
|
+
### 4.1 验证脚本
|
|
229
|
+
|
|
230
|
+
项目包含 `test-ai-integration.js` 脚本,用于验证AI工具集成:
|
|
231
|
+
|
|
232
|
+
```bash
|
|
233
|
+
node test-ai-integration.js
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### 4.2 验证内容
|
|
237
|
+
|
|
238
|
+
脚本验证以下关键集成点:
|
|
239
|
+
|
|
240
|
+
1. ✅ mcp.json格式正确性
|
|
241
|
+
2. ✅ 工具定义完整性
|
|
242
|
+
3. ✅ CLI动态调用可用性
|
|
243
|
+
4. ✅ 工具发现机制
|
|
244
|
+
5. ✅ 命令构造正确性
|
|
245
|
+
6. ✅ 参数映射有效性
|
|
246
|
+
7. ✅ 输出格式兼容性
|
|
247
|
+
|
|
248
|
+
### 4.3 验证结果
|
|
249
|
+
|
|
250
|
+
```
|
|
251
|
+
=== AI工具集成测试 ===
|
|
252
|
+
|
|
253
|
+
1. 检查mcp.json格式和内容
|
|
254
|
+
✅ MCP ID: wms.item.public
|
|
255
|
+
✅ MCP名称: item-wms-public-api-tool
|
|
256
|
+
✅ 版本: 0.1.0
|
|
257
|
+
✅ 描述: Public APIs for auth, EDI import, queries, uploads, and item master data.
|
|
258
|
+
✅ 入口点: item-wms-public-api-tool
|
|
259
|
+
✅ 工具数量: <N>
|
|
260
|
+
|
|
261
|
+
2. 验证工具定义
|
|
262
|
+
1. post_v1_public_user_login
|
|
263
|
+
描述: User authentication and access token retrieval for system access
|
|
264
|
+
输入Schema: 有效
|
|
265
|
+
必传参数: ["username","password"]
|
|
266
|
+
...
|
|
267
|
+
|
|
268
|
+
=== 测试总结 ===
|
|
269
|
+
✅ mcp.json格式正确,包含完整的工具定义
|
|
270
|
+
✅ 所有工具都有清晰的描述和输入Schema
|
|
271
|
+
✅ 每个工具都明确指定了必传参数
|
|
272
|
+
✅ CLI 工具列表可通过 list/describe 获取
|
|
273
|
+
✅ AI工具可以通过读取mcp.json发现所有工具
|
|
274
|
+
✅ AI工具可以构造正确的命令调用MCP
|
|
275
|
+
✅ MCP返回结构化数据,便于AI工具解析
|
|
276
|
+
|
|
277
|
+
结论: 该MCP可以被AI工具正常发现和调用!
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
## 5. AI工具调用示例
|
|
281
|
+
|
|
282
|
+
### 5.1 完整集成示例
|
|
283
|
+
|
|
284
|
+
```javascript
|
|
285
|
+
const fs = require('fs');
|
|
286
|
+
const child_process = require('child_process');
|
|
287
|
+
|
|
288
|
+
class MCPIntegration {
|
|
289
|
+
constructor(mcpPath) {
|
|
290
|
+
this.mcpConfig = JSON.parse(fs.readFileSync(mcpPath, 'utf8'));
|
|
291
|
+
this.token = null;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
async executeCommand(toolName, params = {}) {
|
|
295
|
+
const args = ['call', toolName, '--json', JSON.stringify(params)];
|
|
296
|
+
if (this.baseUrl) {
|
|
297
|
+
args.push('--baseUrl', this.baseUrl);
|
|
298
|
+
}
|
|
299
|
+
if (this.token) {
|
|
300
|
+
args.push('--token', this.token);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
console.log('执行命令:', this.mcpConfig.entrypoint, args.join(' '));
|
|
304
|
+
|
|
305
|
+
const result = await this.execCommand(args);
|
|
306
|
+
return result;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
execCommand(args) {
|
|
310
|
+
return new Promise((resolve, reject) => {
|
|
311
|
+
child_process.execFile(this.mcpConfig.entrypoint, args, (error, stdout, stderr) => {
|
|
312
|
+
if (error) {
|
|
313
|
+
reject(new Error(`命令执行失败: ${stderr}`));
|
|
314
|
+
return;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
try {
|
|
318
|
+
const result = JSON.parse(stdout);
|
|
319
|
+
resolve(result);
|
|
320
|
+
} catch (parseError) {
|
|
321
|
+
reject(new Error(`结果解析失败: ${stdout}`));
|
|
322
|
+
}
|
|
323
|
+
});
|
|
324
|
+
});
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
// 登录方法
|
|
328
|
+
async login(username, password, baseUrl) {
|
|
329
|
+
this.baseUrl = baseUrl;
|
|
330
|
+
const result = await this.executeCommand('post_v1_public_user_login', {
|
|
331
|
+
username,
|
|
332
|
+
password
|
|
333
|
+
});
|
|
334
|
+
|
|
335
|
+
if (result.success && result.onAuthToken) {
|
|
336
|
+
this.token = result.onAuthToken;
|
|
337
|
+
console.log('登录成功,token已保存');
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
return result;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
// 订单查询方法
|
|
344
|
+
async queryOrders(params) {
|
|
345
|
+
return this.executeCommand('post_v1_public_edi_outbound_order_level_search_by_paging', params);
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
// 发现工具
|
|
349
|
+
findTool(condition) {
|
|
350
|
+
if (typeof condition === 'string') {
|
|
351
|
+
return this.mcpConfig.tools.find(tool => tool.name === condition);
|
|
352
|
+
}
|
|
353
|
+
return this.mcpConfig.tools.find(condition);
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
// 获取所有工具
|
|
357
|
+
getAllTools() {
|
|
358
|
+
return this.mcpConfig.tools;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
// 使用示例
|
|
363
|
+
async function main() {
|
|
364
|
+
// 初始化MCP集成
|
|
365
|
+
const mcp = new MCPIntegration('./mcp.json');
|
|
366
|
+
|
|
367
|
+
// 登录
|
|
368
|
+
await mcp.login('testuser', 'testpass', 'https://wms-staging.item.com/api/public');
|
|
369
|
+
|
|
370
|
+
// 查询订单
|
|
371
|
+
const orders = await mcp.queryOrders({
|
|
372
|
+
Paging: {
|
|
373
|
+
page: 1,
|
|
374
|
+
pageSize: 10
|
|
375
|
+
}
|
|
376
|
+
});
|
|
377
|
+
|
|
378
|
+
console.log('订单查询结果:', orders);
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
main().catch(console.error);
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
### 5.2 工具发现示例
|
|
385
|
+
|
|
386
|
+
```javascript
|
|
387
|
+
// 初始化MCP集成
|
|
388
|
+
const mcp = new MCPIntegration('./mcp.json');
|
|
389
|
+
|
|
390
|
+
// 获取所有工具
|
|
391
|
+
const allTools = mcp.getAllTools();
|
|
392
|
+
console.log('所有工具:', allTools.map(tool => tool.name));
|
|
393
|
+
|
|
394
|
+
// 按功能查找工具
|
|
395
|
+
const uploadTools = mcp.getAllTools().filter(tool =>
|
|
396
|
+
tool.description.includes('upload')
|
|
397
|
+
);
|
|
398
|
+
console.log('文件上传相关工具:', uploadTools.map(tool => tool.name));
|
|
399
|
+
|
|
400
|
+
// 精确查找工具
|
|
401
|
+
const loginTool = mcp.findTool('post_v1_public_user_login');
|
|
402
|
+
console.log('登录工具:', loginTool.name, '-', loginTool.description);
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
## 6. 最佳实践
|
|
406
|
+
|
|
407
|
+
### 6.1 AI工具开发建议
|
|
408
|
+
|
|
409
|
+
1. **错误处理**:妥善处理命令执行错误和JSON解析错误
|
|
410
|
+
2. **参数校验**:根据inputSchema生成/校验参数
|
|
411
|
+
3. **结果缓存**:对频繁调用的结果进行缓存
|
|
412
|
+
4. **异步执行**:使用异步方式执行命令,避免阻塞
|
|
413
|
+
5. **日志记录**:记录命令执行日志,便于调试
|
|
414
|
+
6. **版本兼容**:考虑MCP版本升级带来的变化
|
|
415
|
+
|
|
416
|
+
### 6.2 MCP使用建议
|
|
417
|
+
|
|
418
|
+
1. **环境变量**:可通过环境变量覆盖默认的 baseUrl、token、CompanyID、FacilityID、CustomerID
|
|
419
|
+
2. **默认租户配置**:CompanyID/FacilityID/CustomerID 默认为 LT/889/FLAANT0001,可通过 CLI 参数或环境变量覆盖
|
|
420
|
+
3. **参数优先级**:命令行参数 > 环境变量 > 默认值
|
|
421
|
+
4. **安全考虑**:避免在日志中记录敏感信息
|
|
422
|
+
5. **超时设置**:为命令执行设置合理的超时时间
|
|
423
|
+
6. **重试机制**:对网络请求失败的情况实现重试
|
|
424
|
+
|
|
425
|
+
## 7. 故障排除
|
|
426
|
+
|
|
427
|
+
### 7.1 常见问题
|
|
428
|
+
|
|
429
|
+
1. **命令未找到**:确保MCP已安装或使用npx执行
|
|
430
|
+
2. **认证失败**:检查用户名密码是否正确,或token是否过期
|
|
431
|
+
3. **参数错误**:检查参数名称和类型是否与inputSchema一致
|
|
432
|
+
4. **JSON解析失败**:检查命令输出是否为有效的JSON格式
|
|
433
|
+
5. **网络错误**:检查baseUrl是否可访问,网络连接是否正常
|
|
434
|
+
|
|
435
|
+
### 7.2 调试技巧
|
|
436
|
+
|
|
437
|
+
1. **查看帮助信息**:执行 `item-wms-public-api-tool --help` 或 `item-wms-public-api-tool describe <toolName>`
|
|
438
|
+
2. **测试单个命令**:在终端手动执行命令,检查输出
|
|
439
|
+
3. **验证mcp.json**:使用JSON验证工具检查mcp.json格式
|
|
440
|
+
4. **查看CLI源码**:检查 `src/index.ts` / `src/cli.ts` 了解命令处理逻辑
|
|
441
|
+
|
|
442
|
+
## 8. 集成验证清单
|
|
443
|
+
|
|
444
|
+
| 验证项 | 验证方法 | 预期结果 |
|
|
445
|
+
|--------|----------|----------|
|
|
446
|
+
| mcp.json存在 | 检查文件是否存在 | 文件存在 |
|
|
447
|
+
| mcp.json格式正确 | 使用JSON验证工具 | 格式有效 |
|
|
448
|
+
| 工具定义完整 | 检查每个工具是否包含name、description和inputSchema | 所有工具定义完整 |
|
|
449
|
+
| CLI动态工具可用 | 执行 `item-wms-public-api-tool list` | 输出工具列表 |
|
|
450
|
+
| 命令格式正确 | 构造并执行简单命令 | 命令执行成功 |
|
|
451
|
+
| 输出为JSON格式 | 执行命令并检查输出 | 输出为有效的JSON |
|
|
452
|
+
| 工具发现正常 | 使用AI工具代码读取mcp.json | 成功发现所有工具 |
|
|
453
|
+
| 参数映射正确 | 检查命令参数与inputSchema的对应关系 | 映射正确 |
|
|
454
|
+
| 必传参数检查 | 检查 inputSchema 的 required 字段 | 必传参数清晰可见 |
|
|
455
|
+
| 结果解析正常 | AI工具解析命令输出 | 成功解析结果 |
|
|
456
|
+
|
|
457
|
+
## 9. 版本兼容性
|
|
458
|
+
|
|
459
|
+
### 9.1 当前版本支持
|
|
460
|
+
|
|
461
|
+
- ✅ 支持基于mcp.json的工具发现
|
|
462
|
+
- ✅ 支持动态CLI调用
|
|
463
|
+
- ✅ 支持JSON格式输出
|
|
464
|
+
- ✅ 支持环境变量配置
|
|
465
|
+
- ✅ 支持动态工具发现(OpenAPI)
|
|
466
|
+
|
|
467
|
+
### 9.2 未来扩展
|
|
468
|
+
|
|
469
|
+
- 支持API调用方式
|
|
470
|
+
- 支持事件驱动架构
|
|
471
|
+
- 支持更复杂的参数类型
|
|
472
|
+
- 支持更友好的工具别名/分组
|
|
473
|
+
|
|
474
|
+
## 10. 联系与支持
|
|
475
|
+
|
|
476
|
+
如需集成帮助或遇到问题,请:
|
|
477
|
+
|
|
478
|
+
1. 查看 [HELP.md](HELP.md) 获取详细使用说明
|
|
479
|
+
2. 查看 [README.md](README.md) 获取项目概述
|
|
480
|
+
3. 检查 [openapi.yaml](openapi.yaml) 获取API文档
|
|
481
|
+
4. 运行 `node test-ai-integration.js` 进行集成测试
|
|
482
|
+
|
|
483
|
+
## 11. 结论
|
|
484
|
+
|
|
485
|
+
本MCP设计符合AI工具集成的最佳实践,通过:
|
|
486
|
+
|
|
487
|
+
1. **自描述配置**:完整的工具定义和参数说明
|
|
488
|
+
2. **标准化接口**:统一的工具命名规则(`<method>_<path>`)
|
|
489
|
+
3. **结构化输出**:JSON格式结果
|
|
490
|
+
4. **清晰的文档**:详细的集成指南
|
|
491
|
+
|
|
492
|
+
AI工具可以轻松发现、调用和使用本MCP提供的所有功能,实现高效、可靠的集成。
|