McpToolParser
用于将 JSON 格式的静态工具填充参数转换为符合 MCP 协议标准的 MCP Tool
方法
replaceInstructionParamValue
使用真实参数替换静态工具 JSON 数据中的参数占位符
示例
typescript
const doTask = () => {
console.log('execute task...');
};
const mcpToolParser = new McpToolParser(doTask);
const instruction: InstructionSchema = {
action: '注册Tool',
params: {
name: '{{name}}',
},
};
mcpToolParser.replaceInstructionParamValue(instruction, 'name', 'queryTool');
console.log(instruction); // { action: '注册Tool', params: { name: 'queryTool' } }
extractTool & extractAllTools
将 JSON 格式的静态工具填充参数转换为符合 MCP 协议标准
示例
typescript
const doTask = () => {
console.log('execute task...');
};
const mcpToolParser = new McpToolParser(doTask);
/**
* extractTool 将单个工具进行标准化
* extractAllTools 批量将多个工具进行标准化
* mcpToolJson 为JSON格式的静态工具集 详细可参考demo目录下的mcp-tool.json
* mcpTool 即为符合MCP协议标准的MCP Tool
**/
const mcpTool = mcpToolParser.extractTool(mcpToolJson);
const mcpTools = mcpToolParser.extractAllTools(mcpToolsJson);
getTaskOutputSchema
获取 MCP Tool OutputSchema
示例
typescript
const doTask = () => {
console.log('execute task...');
};
const mcpToolParser = new McpToolParser(doTask);
const taskOutputSchema = mcpToolParser.getTaskOutputSchema();
AI操作说明书
API说明
typescript
type McpToolsSchema = {
tools: Array<McpToolSchema>; // 工具集
};
// 在 MCP 标准Tool协议的基础上进行拓展
type McpToolSchema = {
name: string; // 工具名称
task: McpToolTaskSchema; // 任务调度器--任务描述
} & Tool;
type McpToolTaskSchema = {
instructions: Array<InstructionSchema>; // 指令序列 调度器会按序列顺序依次执行指令
};
type InstructionSchema = {
action: string; // 指令类型 对应操作库中的原子操作
params: {
// 指令参数
[props: string]: SerializableType;
};
};
参数变量
指令序列中不同的指令类型(action)会不同的指令参数(params),具体可查看操作库API文档。 在指令参数中允许使用参数变量,如下所示
typescript
{
"action": "input",
"params": {
"selector": ".user-input input",
"value": "{{name}}"
}
}
上面的例子中是一个输入框键入的指令,可以看到指令参数(params)中的value参数是一个变量属性,大模型在调用MCP Tool时TinyAgent会通过McpToolParser工具方法会将参数变量替换为大模型所分析的真实参数,参数变量与inputSchema中的参数定义一一对应