0

0

MCP 进化:让静态 Tool 进化为具备“上下文感知”的远程 Skills

聖光之護

聖光之護

发布时间:2026-01-26 18:40:01

|

561人浏览过

|

来源于php中文网

原创

mcp 进化:让静态 tool 进化为具备“上下文感知”的远程 skills

在 AI Agent 的工程落地过程中,Model Context Protocol(MCP)已逐渐成为大模型与外部系统交互的事实标准接口。然而,当应用边界从轻量级“个人助理”延伸至高复杂度的“企业级业务流程”时,传统 MCP 的交互范式暴露出明显的 “静态化”缺陷

Solon AI 提出将 MCP 封装为 Skill 的设计理念,推动工具能力从“被动暴露的 API 列表”,跃迁为“能理解场景、响应上下文、受控执行”的智能技能单元。

一、传统 Tools 的三大现实困境

当前多数 MCP 实现方式,类似于一个“永不休眠的工具仓库”——无论用户意图为何,所有可用功能均被无差别加载:

  • 上下文污染(Context Noise): 即便处理一句“你好”,模型仍需接收数百行冗余的工具 Schema 描述,不仅挤占宝贵 Token 预算,更易导致语义干扰,削弱推理准确性。
  • 权限裸奔(Security Risks): 工具可见性为“全量可见”,缺乏运行时策略控制。无法依据当前会话身份(如普通员工 / 超级管理员)实时屏蔽高危操作(例如:删除核心客户数据)。
  • 行为失焦(Instruction Gap): 工具仅声明“我能做什么”,却未提供“此刻该怎么做”的上下文引导。模型缺少面向具体业务阶段的即时约束与行为提示。

二、破局之道:感知力 + 挂载机制 + 动态分发

Solon AI 引入 Skill(即 Solon AI Skills)生命周期模型,对原始 MCP 协议进行增强封装,构建起三层协同机制:

A. 智能准入判断(isSupported):

仅当 Prompt 中携带的语义意图、租户标识、环境参数等满足预设条件时,该 Skill 才被纳入本次调用候选集。

B. 上下文指令注入(getInstruction):

在 Skill 加载阶段,自动向模型注入适配当前上下文的系统级提示(System Message),例如租户专属规则、时效性限制或合规要求。

C. 三阶工具路由(getToolsName):

服务端依据 Prompt 属性动态裁剪工具列表,支持三种策略模式:

  • 全量开放:未配置过滤逻辑时,默认返回全部注册工具;
  • 精准授权:按角色、租户、时间窗口等维度筛选,仅暴露合法可用工具;
  • 主动熔断:即使 Skill 处于激活状态,也可因安全策略触发“零工具可见”策略。

三、真实开发场景还原

1. 客户端:以业务语义为中心调用

开发者只需注入关键业务属性(如租户 ID、用户角色),工具筛选与协议协商均由 Skill Client 自动完成。

import org.noear.solon.ai.chat.ChatModel;import org.noear.solon.ai.chat.prompt.Prompt;import org.noear.solon.ai.mcp.McpChannel;import org.noear.solon.ai.mcp.client.McpClientProvider;import org.noear.solon.ai.mcp.client.McpSkillClient;<em>//初始化 mcp 客户端</em>McpClientProvider mcpClient = McpClientProvider.builder() .channel(McpChannel.STREAMABLE) .url("http://localhost:8081//skill/order") .build();<em>//构造含业务上下文的提示词</em>Prompt prompt = Prompt.of("帮我取消订单 A001") .attrPut("tenant_id", "solon_001") .attrPut("user_role", "ADMIN"); <em>//模拟管理员身份</em><em>//绑定技能客户端,模型将仅接收符合权限的工具定义</em>chatModel.prompt(prompt) .options(o -> o.skillAdd(new McpSkillClient(mcpClient))) <em>//将 mcp 客户端包装为 Solon AI Skill</em> .call();

无限画
无限画

千库网旗下AI绘画创作平台

下载

2. 服务端:打造有“判断力”的远程技能

服务端不再机械响应请求,而是基于 Prompt 内容主动决策自身行为边界。

import org.noear.solon.ai.annotation.ToolMapping;import org.noear.solon.ai.chat.prompt.Prompt;import org.noear.solon.ai.mcp.McpChannel;import org.noear.solon.ai.mcp.server.McpSkillServer;import org.noear.solon.ai.mcp.server.annotation.McpServerEndpoint;import java.util.ArrayList;import java.util.List;@McpServerEndpoint(channel = McpChannel.STREAMABLE_STATELESS, mcpEndpoint = "/skill/order")public class OrderSkillServer extends McpSkillServer { @Override public boolean isSupported(Prompt prompt) { <em>//意图识别:仅当用户提及“订单”且租户信息有效时启用</em> return prompt.getUserContent().contains("订单") && prompt.attr("tenant_id") != null; } @Override public String getInstruction(Prompt prompt) { <em>//注入租户定制化指令</em> return "你现在是租户[" + prompt.attr("tenant_id") + "]的订单助手,请严格遵守其服务协议。"; } @Override public List<string> getToolsName(Prompt prompt) { <em>//按角色动态分配工具可见性</em> List<string> tools = new ArrayList(); tools.add("OrderQuery"); <em>//基础查询权限全员开放</em> if ("ADMIN".equals(prompt.attr("user_role"))) { tools.add("OrderCancel"); <em>//仅限管理员调用</em> } return tools; } @ToolMapping(description = "查询订单详情") public String OrderQuery(String id) { ... } @ToolMapping(description = "执行订单取消操作") public String OrderCancel(String id) { ... }}</string></string>

四、架构定位再思考:优势与边界并存

尽管 Skills 模式显著提升了 MCP 在企业级场景下的适应性,但其本质仍需被理性认知:

  • 非协议层标准增强:

LLM 原生能力仅涵盖 Prompt 输入与 Tool-Call 输出。Skills 并非 LLM 或 MCP 规范中的官方组件,而是一种由框架层(如 Solon AI)实现的架构抽象模式,用于应对多变业务调度需求。

  • 消费端主导的设计范式:

MCP 向 Skills 的演进并非服务端单方面升级,而是强依赖消费侧(Agent 引擎)的能力支持。远程 Skill 的设计必须遵循目标引擎所约定的解析逻辑与扩展规范。

  • 场景适配建议:

Tool:适合功能单一、无状态、无需上下文干预的原子能力(如天气查询、单位换算);
Skill:适用于需融合租户隔离、角色鉴权、流程引导、时效控制等复合要素的业务模块(如审批流、订单管理、工单协同)。

五、价值提炼:一次进化带来的三重增益

将 MCP 升级为 Skills 后,AI Agent 架构将获得以下核心收益:

  • 上下文极致精简:
    模型仅接收当前会话真正需要的工具定义(通过 getToolsName 实现按需加载与权限裁剪),Token 利用率与推理稳定性同步提升。

  • 权限天然内嵌:
    工具可见性由服务端实时判定,实现跨进程、跨服务的 RBAC 级别细粒度管控(RBAC for Tools),安全防线前移至协议入口。

  • 业务解耦演进:
    所有业务规则、权限策略、指令模板均集中部署于服务端,客户端零侵入即可享用最新能力迭代,大幅降低协同成本与发布风险。

源码地址:点击下载

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

1031

2023.08.02

java中boolean的用法
java中boolean的用法

在Java中,boolean是一种基本数据类型,它只有两个可能的值:true和false。boolean类型经常用于条件测试,比如进行比较或者检查某个条件是否满足。想了解更多java中boolean的相关内容,可以阅读本专题下面的文章。

367

2023.11.13

java boolean类型
java boolean类型

本专题整合了java中boolean类型相关教程,阅读专题下面的文章了解更多详细内容。

42

2025.11.30

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

254

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

1089

2024.03.01

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

847

2023.08.22

登录token无效
登录token无效

登录token无效解决方法:1、检查token的有效期限,如果token已经过期,需要重新获取一个新的token;2、检查token的签名,如果签名不正确,需要重新获取一个新的token;3、检查密钥的正确性,如果密钥不正确,需要重新获取一个新的token;4、使用HTTPS协议传输token,建议使用HTTPS协议进行传输 ;5、使用双因素认证,双因素认证可以提高账户的安全性。

6630

2023.09.14

登录token无效怎么办
登录token无效怎么办

登录token无效的解决办法有检查Token是否过期、检查Token是否正确、检查Token是否被篡改、检查Token是否与用户匹配、清除缓存或Cookie、检查网络连接和服务器状态、重新登录或请求新的Token、联系技术支持或开发人员等。本专题为大家提供token相关的文章、下载、课程内容,供大家免费下载体验。

843

2023.09.14

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

26

2026.03.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 4.4万人学习

C# 教程
C# 教程

共94课时 | 11.3万人学习

Java 教程
Java 教程

共578课时 | 81.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号