AI Agent开发大全第二十八课-MCP实现本地命令调用怎么做的?

开篇

MCP很强大,Client端一旦实现了稳定的连接和执行流程后任Server端随意改动都可兼容,这就是热插拨功能。

如果我们仅仅满足于MCP查点网上资料、读点图片即文字型的功能肯定是不能充分发挥MCP的强大之处的,正应了Google以及Anthropic最近的研究报告上说的:不要再在chatbot上花力气了。当下的AI Agent特别是MCP以充当LLM的手和脚为趋势已经越来越多的在实际生活和工作中开始发挥作用了。所以,今天我就分享一个:如何实现一个可以执行本地命令的MCP给大家作为相关AI Agent类工作和学习上的参考。注意啦:这个例子来自我的另一个落地的工程-SmartDevops。

为了确保安全我们会让代码全程管控AI Agent对于本地命令的执行。同时为了演示整个设计思路和代码我只挑“查询、监控”一类的命令,而实际这个框架一旦取得了权限是可以执行一切的。

可以执行本地命令的MCP的需求

  1. 制作一个在w
<think>嗯,用户想了解如何在MCP和LangChain中调用filesystem功能。首先,我需要明确MCP和LangChain各自是什么,以及它们如何与文件系统交互。根据引用内容,MCP(模型上下文协议)似乎涉及多个服务,如server-filesystem、Google Drive集成等,可能用于让LLM访问文件系统。LangChain是一个用于构建基于LLM应用的框架,可能也有文件系统相关的工具。 首先看MCP部分。引用[3]提到Spring AI集成Mcp,并调用server-filesystem实现智能本地文件管理。server-filesystem是MCP的一个标准服务,提供本地文件系统的访问。引用[2]中的例子是用MCP服务集成SCP命令上传文件,说明MCP可以通过工具调用执行文件操作。引用[4]提到使用本地LLM教程的MCP服务器,可能涉及文件访问。 那在MCP调用filesystem功能,可能需要配置对应的MCP服务,比如modelcontextprotocol/server-filesystem,然后通过API或工具调用执行操作,如列出文件、读取内容等。可能需要编写MCP客户端,像引用[3]中的Mcp Client那样,或者使用现有的工具如microsoft/markitdown来转换文件格式。 然后是LangChain部分。LangChain通常有文档加载器、工具等组件。比如使用FileSystemToolkit或类似的工具来访问文件系统。可能需要结合MCP的服务,将文件系统操作通过LangChain的Agent调用。例如,用户的问题触发某个工具,该工具调用MCP的API来执行具体的文件操作。 需要参考用户提供的引用,特别是引用[3]中的集成例子,可能涉及在Spring AI中使用Mcp Client。此外,引用[2]中的示例使用MCP服务集成SCP命令,说明可以通过自定义工具实现特定功能,如上传文件。可能用户需要类似的集成方式,在LangChain中创建工具,调用MCP的文件系统服务。 可能需要分步骤说明:在MCP中配置server-filesystem服务,确保其运行;然后在应用中通过MCP客户端发送请求;在LangChain中创建自定义工具,使用MCP的API或SDK来调用这些功能。同时,注意认证和权限问题,比如免密登录配置,如引用[2]中的例子使用SCP免密传输。 还需要考虑如何将MCP服务与LangChain的Agent结合,可能需要使用LangChain的Tool接口封装MCP调用。例如,定义一个工具函数,当用户输入特定关键词时,触发文件上传或读取操作,如引用[2]中的“上传微信目录”触发SCP上传。 总结,步骤可能包括:1. 部署MCP的filesystem服务;2. 在应用中集成MCP客户端;3. 在LangChain中创建工具调用MCP服务;4. 配置Agent使用这些工具。需要确保代码示例正确,如Python中调用MCP的API,或者使用已有的SDK。</think>### 如何在MCP和LangChain中调用Filesystem功能 #### 一、在MCP调用Filesystem功能 MCP(模型上下文协议)通过标准化服务提供文件系统访问能力,以下是具体实现步骤: 1. **部署MCP Filesystem服务** 使用标准实现如 `modelcontextprotocol/server-filesystem` [^3],支持直接访问本地文件系统。 启动服务示例(基于Java/Quarkus): ```bash java -jar mcp-filesystem-server.jar ``` 2. **通过MCP协议调用文件操作** 使用HTTP请求或SDK调用服务接口: ```python # Python调用示例 import requests # 列出目录内容 response = requests.post( "http://localhost:8080/mcp/filesystem/list", json={"path": "/Users/syw/project/wechatAr"} ) print(response.json()) ``` 3. **集成自定义工具** 如引用[^2]中通过MCP集成SCP命令实现文件上传: ```python # 定义触发关键词与SCP命令 def upload_wechat_dir(): os.system("scp -r /Users/syw/project/wechatAr root@47.93.xx.xx:/opt/ll") # 注册到MCP工具库 mcp_tools.register("上传微信目录", upload_wechat_dir) ``` --- #### 二、在LangChain中集成MCP Filesystem LangChain通过工具(Tools)和代理(Agents)机制实现文件操作: 1. **直接使用LangChain文件工具** LangChain内置`FileSystemToolkit`: ```python from langchain.agents import initialize_agent from langchain.tools.file_management import FileSystemToolkit toolkit = FileSystemToolkit() agent = initialize_agent(toolkit.get_tools(), llm, agent="structured-chat") agent.run("读取/Users/syw/project/wechatAr/config.json的内容") ``` 2. **结合MCP服务扩展能力** - **步骤1:封装MCP客户端** 参考Spring AI集成方式[^3],创建Python客户端: ```python class McpFilesystemClient: def list_files(self, path): # 调用MCP服务接口... pass ``` - **步骤2:创建LangChain自定义工具** ```python from langchain.tools import tool @tool("mcp_file_lister") def list_files(path: str) -> str: client = McpFilesystemClient() return client.list_files(path) ``` - **步骤3:代理调用** ```python agent = initialize_agent([list_files], llm, agent="structured-chat") agent.run("列出MCP服务中/opt/ll目录下的文件") ``` --- #### 三、典型应用场景 1. **跨平台文件管理** 通过`Xuanwo/mcp-server-opendal`访问云存储与本地文件[^1]。 2. **LLM增强文件处理** 使用`microsoft/markitdown`将文件转换为Markdown供LLM解析[^1]。 3. **自动化流程触发** 如引用中关键词触发SCP上传,适用于CI/CD场景。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TGITCIC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值