Knockback.js插件开发指南:构建自定义验证器和格式化器
2026/5/26 10:03:15
API/flights、flights/list或list-flights),需手动编写适配代码,扩展性极低。| 无MCP场景 | 有MCP场景 |
|---|---|
| 需为每个API编写定制化适配代码 | 统一遵循MCP标准,代理自动适配各类服务 |
| 工具调用格式混乱(参数/响应不统一) | 标准化工具定义(输入输出schema、描述) |
| 无法动态发现第三方服务能力 | MCP服务器暴露工具列表,支持自动发现 |
| 组件 | 定义 | 示例 |
|---|---|---|
| 资源(Resources) | 静态数据或元信息,供AI决策参考 | 机场代码列表、退改签政策、城市天气数据 |
| 工具(Tools) | 可执行操作接口,封装第三方API调用 | 航班搜索(输入:起止地/日期;输出:航班列表)、座位选择 |
| 提示(Prompts) | 预定义指令模板,优化LLM交互效果 | “作为旅行助手,调用search_flights工具时需指定origin/destination/date参数,日期格式为YYYY-MM-DD” |
jsonrpc: “2.0”(固定版本)method: 调用的工具名称(如"search_flights")params: 输入参数(如{"origin":"LAX","destination":"JFK"})id: 请求唯一标识-状态要求:连接必须有状态(Stateful),支持上下文保持(如长对话中的用户偏好记忆)。list_tools())。search_flights工具)。开发工具:Python +fast-mcpSDK(官方推荐)
uv add mcp(通过uv包管理器安装MCP核心库)frommcp.server.fastmcpimportFastMCP mcp=FastMCP(transport="stdio")# 传输方式:标准IO(本地)或HTTP(远程)@mcp.resource(type="file",name="airports")defget_airport_info():return{"LAX":"洛杉矶国际机场","JFK":"肯尼迪国际机场"}@mcp.tool(name="search_flights",description="查询航班信息")defsearch_flights(origin:str,destination:str,date:str):# 调用第三方API逻辑return[{"flight_no":"CA987","price":500}]@mcp.prompt(name="find_best_flight",title="最优航班推荐")deffind_best_flight_prompt(preferences:dict):returnf"根据用户偏好{preferences},从工具返回结果中选择最低价航班"mcp.run()# 默认监听标准IO,HTTP模式需指定端口:mcp.run(transport="http", port=8080){"mcp_servers":[{"id":"flight-booking","command":"uv run python server.py","env":{"API_KEY":"xxx"}}]}(一) 客户端三大核心能力
| 能力 | 定义 | 应用场景 |
|---|---|---|
| Roots(根目录共享) | 客户端向服务器暴露本地文件系统路径 | AI代理读取项目代码(如Git历史、日志文件)进行调试 |
| Sampling(采样) | 服务器请求客户端调用LLM处理数据 | 服务器将航班列表发送给LLM,由其生成自然语言总结 |
| Elicitation(启发) | 服务器通过客户端向用户请求补充信息 | 航班预订时询问用户"是否需要购买行李额" |
(二) 典型应用场景
MCP Labs for Free: https://kode.wiki/4lFwf5p
可以看到右手边已经起来配置远程的MCP
输入: Search for flights from LAX to JFK using the flight-booking server
点击VSCode 左下角的Approve就开始执行MCP