那我问你,MCP是什么?回答我!

Looking my eyes!

Yaklang-MCP是不是MVP?

回答我,你回答我!

图片

图片

图片

图片

我们知道,AI虽然非常强大,但常常会被迫“束手束脚”。例如,医生问诊需同时调取病历、化验结果和医学文献,复杂任务需要多个工具一起协同执行。MCP的核心价值在于:

  • 统一连接:通过MCP,AI可访问本地文件、云端数据库甚至实时金融数据。

  • 动态协作:多个工具互相协作,例如爬虫任务中一个工具负责爬取网页内容,另外一个工具负责处理爬取信息,最后一个工具用于生成报告。从此,AI从"QA问答机"升级为"全能执行者"。

图片

图片

MCP的通信协议底层基于STDIO(标准输入输出)或SSE(Server-Send Events),顶层则基于JSON-RPC 2.0

此外,MCP的架构设计极简却高效,包含三大组件:

  • 主机(如Claude):调用客户端来获取服务器的资源/工具列表,解析AI响应以调用客户端发送任务请求,将客户端的响应提供给AI

  • 客户端:发送任务请求,处理服务器响应返回给主机

  • 服务器:解析任务请求以提供数据或工具服务

图片

有了解过Function call的小伙伴们可能发现了,MCP最终实现的功能似乎与Function call类似,都是使得AI能够与外部链接,那么他们的区别是什么呢?

MCPFunction Call
协议栈应用层协议(OSI Layer 7)模型功能扩展
服务发现机制可以动态通知并修改预编译函数列表,无法修改
工具接入方式支持多个工具热插拔冷加载

实际上,MCP的Host也可以使用Function Call来实现,前提是模型本身要支持Function Call。一种更通用适合所有模型的的方法则是在System Prompt中告诉AI其能够使用的工具与资源。一个Prompt的例子如下(来自vscode插件-cline):

You must respond to the user's request by using at least one tool call. When formulating your response, follow these guidelines:

1. Begin your response with normal text, explaining your thoughts, analysis, or plan of action.
2. If you need to use any tools, place ALL tool calls at the END of your message, after your normal text explanation.
3. You can use multiple tool calls if needed, but they should all be grouped together at the end of your message.
4. After placing the tool calls, do not add any additional normal text. The tool calls should be the final content in your message.

Here's the general structure your responses should follow:

```
[Your normal text response explaining your thoughts and actions]

[Tool Call 1]
[Tool Call 2 if needed]
[Tool Call 3 if needed]
...
```
Remember:
- Choose the most appropriate tool(s) based on the task and the tool descriptions provided.
- Formulate your tool calls using the XML format specified for each tool.
- Provide clear explanations in your normal text about what actions you're taking and why you're using particular tools.
- Act as if the tool calls will be executed immediately after your message, and your next response will have access to their results.

# Tool Descriptions and JsonSchema
1.
{
  "title": "execute_command",
  "description": "Execute a CLI command on the system. Use this when you need to perform system operations or run specific commands to accomplish any step in the user's task. You must tailor your command to the user's system and provide a clear explanation of what the command does. Prefer to execute complex CLI commands over creating executable scripts, as they are more flexible and easier to run. Commands will be executed in the current working directory.",
  "type": "object",
  "required": [
    "command"
  ],
  "properties": {
    "command": {
      "type": "string",
      "description": "Your command here"
    }
  }
}

2. list_files:
{
  "title": "list_files",
  "description": "List files and directories within the specified directory. If recursive is true, it will list all files and directories recursively. If recursive is false or not provided, it will only list the top-level contents.", 
  "type": "object",
  "required": [
    "path"
  ],
  "properties": {
    "path": {
      "type": "string",
      "description": "Directory path here"
    },
    "recursive": {
      "type": "boolean"
    }
  }
}

实际预见的是,连接的MCP服务器越多,提供的资源/工具越多,那么每次提问所要消耗的token也就越多。

图片

基于Yakit的MCP Host仍在开发中,但是Yaklang的MCP server实际上已经可以使用了。我们可以使用其他的MCP Host来尝鲜一下。

  1. 打开vscode,下载以下插件之一(前者Roo Code是社区驱动的Cline,新功能和更新比较频繁):

图片

2. 打开Roo Code页面,点击MCP Servers设置,Edit MCP Settings:

图片

3. 输入配置,其中command改为你实际的yak的路径:

{  "mcpServers": {    "yaklang-mcp": {      "command": "yak.exe",      "args": ["mcp"],      "env": {},      "disabled": false,      "alwaysAllow": [],      "timeout": 3600    }  }}

4. 开始使用,这里以弱口令爆破为例:

图片

图片

图片

 END
YAK官方资源

Yak 语言官方教程:
Yak:致力于安全能力融合的语言 | Yak Program Language
Yakit 视频教程:
YakProject的个人空间-YakProject个人主页-哔哩哔哩视频
Github下载地址:
GitHub - yaklang/yakit: Cyber Security ALL-IN-ONE Platform
GitHub - yaklang/yaklang: A programming language exclusively designed for cybersecurity
Yakit官网下载地址:
https://yaklang.com/
Yakit安装文档:
下载安装与更新配置 | Yak Program Language
Yakit使用文档:
Yakit: 集成化单兵安全能力平台 | Yak Program Language
常见问题速查:
FAQ | Yak Program Language

【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)内容概要:本文介绍了一种基于神经网络的数据驱动迭代学习控制(ILC)算法,用于解决具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车路径跟踪题,并提供了完整的Matlab代码实现。该方法无需精确系统模型,通过数据驱动方式结合神经网络逼近系统动态,利用迭代学习机制不断提升控制性能,从而实现高精度的路径跟踪控制。文档还列举了大量相关科研方向和技术应用案例,涵盖智能优化算法、机器学习、路径规划、电力系统等多个领域,展示了该技术在科研仿真中的广泛应用前景。; 适合人群:具备一定自动控制理论基础和Matlab编程能力的研究生、科研人员及从事无人车控制、智能算法开发的工程技术人员。; 使用场景及目标:①应用于无人车在重复任务下的高精度路径跟踪控制;②为缺乏精确数学模型的非线性系统提供有效的控制策略设计思路;③作为科研复现与算法验证的学习资源,推动数据驱动控制方法的研究与应用。; 阅读建议:建议读者结合Matlab代码深入理解算法实现细节,重点关注神经网络与ILC的结合机制,并尝试在不同仿真环境中进行参数调优与性能对比,以掌握数据驱动控制的核心思想与工程应用技巧。
<think>嗯,用户的题聚焦在MCP技术的核心细节以及Dify与MCP的区别对比。之前的交互历史显示用户已经通过站内引用积累了些背景知识,但需要更系统的技术解析。用户可能是个开发者或技术决策者,正在评估是否采用MCP架构,或者想厘清Dify这类平台与底层协议的关系。从用户引用的材料看,ta可能混淆了“协议”和“平台”的概念。引用1提到MCP-Server的实现方式,引用2说明MCP是连接模型和工具的通信协议,引用3则强调Dify调用MCP的能力——这说明MCP是底层管道,Dify是上层应用。用户真正需要的可能是技术选型依据,比如什么场景用纯MCP,什么场景用Dify集成。需要重点拆解三个层次:首先解释MCP作为协议的通信机制(比如sse和stdio的支持),其次说明Dify如何通过API调用MCP服务,最后对比两者在开发自由度、使用成本等方面的差异。用户引用的示例里有代码片段(如fastapi_mcp),说明ta对技术实现敏感,回答应该包含架构图例和具体交互流程。特别注意避免重复引用中的营销话术(如“超实用”“眼前一亮”),保持技术中立性。之前回答的对比表格获得用户认可,这次可以深化协议字段和API规范的说明。考虑到用户要求“尽可能多参考上次回答”,需延续技术参数和功能分类的表述风格。</think> 以下根据技术资料整理的MCP技术解析及与Dify的对比,重点参考引用内容: --- ### **MCP技术详解** 1. **核心架构** - **分层设计** $$\text{模型层(Host)} \rightarrow \text{客户端(Client)} \xleftrightarrow{\text{MCP协议}} \text{服务端(Server/工具层)}$$ - **Host层**:运行在Client上的大模型,负责核心推理(引用[2]) - **Client层**:承载模型运行时,通过MCP协议与Server通信(引用[2][3]) - **Server层**:提供API接口的工具服务(如高德地图、数据库等)(引用[3]) 2. **通信机制** - **双通道支持**: - `SSE` (Server-Sent Events):适用于实时流式交互(引用[1]) - `stdio` (标准输入输出):通用进程间通信 ```python # 伪代码示例:MCP-client调用工具 def call_mcp_tool(api_name, params): # 通过stdin发送JSON请求 request = json.dumps({"api": api_name, "args": params}) stdin.write(request) # MCP协议封装 return stdout.read() # 获取工具响应 ``` 3. **协议特性** - **工具动态注册**:Server启动时向Client注册可用工具列表 - **声明式接口**:通过`tool.json`定义工具输入/输出格式(引用[3]) - **跨平台支持**:独立于模型框架(PyTorch/TensorFlow均可接入) --- ### **Dify 与 MCP 的区别对比** | **维度** | **MCP协议** | **Dify平台** | |-----------------|--------------------------------|----------------------------------| | **定位** | 模型与工具的通信标准 | 开源的LLM应用开发平台 | | **核心功能** | 定义模型调用工具的交互规范 | 提供可视化编排、Prompt管理、API服务等 | | **技术栈** | 传输层协议(类似gRPC设计理念) | 全栈应用平台(含UI/后端/部署) | | **使用方式** | 需自主实现Client/Server逻辑 | 通过界面配置工具集成(引用[2][3]) | | **典型场景** | 模型需调用外部API/工具时 | 快速构建企业级AI应用(如智能客服) | --- ### **关键差异说明** 1. **集成关系** Dify可通过 **MCP Client适配器** 调用MCP-Server(引用[3]): $$\text{Dify平台} \xrightarrow{\text{内置MCP-client}} \text{MCP-Server(工具服务)}$$ > *例:Dify配置高德地图工具时,实际通过MCP协议向地理服务发请求[^3]* 2. **能力范围** - **MCP** 专注解决 **模型安全隔离** 和 **工具标准化调用**(引用[2]) - **Dify** 额外提供: - 可视化工作流引擎 - 多模型支持(GPT/Claude等) - 企业级RBAC权限管理 --- ### **应用场景示例** - **纯MCP架构**: 模型本地部署,需要连接私有数据库 → 自建MCP-Server封装数据库API - **Dify+MCP整合**: 在Dify中配置天气预报工具 → Dify通过MCP协议调用气象数据服务[^3] ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值