AI——MCP详解
前言MCP 是用来实现Agent 与 Tools(工具) 的交互Agent 需要调用外部工具和API、访问数据库、执行代码等。JAVA + Spring AI + LangChain + LangChain4J + MCP = AI 智能落地项目MCP能干什么?对于程序员来说举例 1:开发部署开发者通过自然语言指令 “部署新版本到测试环境”,触发 MCP 链式调用 GitLab API(代码合并)、Jenkins API(构建镜像)、Slack API(通知团队)。举例 2:SQL 查询开发者通过自然语言输入,比如 “查询某集团部门上个季度销售额”,就能查询出数据库的数据,并结合大模型进行回答,不再需要编写 SQL,MCP 自动转换为精准 SQL 语句并执行。对于大众用户来说举例 1:旅游规划当我要去旅行时,旅行规划助手通过 MCP 同时调用天气 API(获取目的地气象)、交通 API(查询航班动态)、地图 API(规划路线),AI 自动生成带实时数据的行程方案。举例 2:联网搜索我们在与 LLM(大语言模型)交互时,经常需要联网搜索最新信息以减少幻觉。然而,这里也存在问题:并非所有聊天机器人都支持联网功能即使支持联网,也可能不包含你习惯使用的搜索引擎。MCP是什么?MCP(Model Context Protocol,模型上下文协议) 是 2024 年 11 月底由Anthropic推出的一种开放标准。它的核心目标是:为大语言模型(LLM)提供统一、标准化的通信方式,让模型能够与外部数据源和工具进行高效交互。MCP作为一种标准化协议,极大地简化了大预言模型与外部世界的交互方式,使开发者能够以统一的方式为AI应用添加各种能力。程序员如何使用MCP?MCP 应用场景 📊应用领域典型场景MCP 价值代表实现智能编程助手代码生成、Bug 修复、API 集成安全访问本地代码库、CI/CD 系统Cursor、VS Code 插件数据分析工具自然语言查询数据库、可视化生成安全查询内部数据库、连接 BI 工具XiYanSQL-MCP、数据库 MCP 服务器企业知识管理知识库查询、文档生成、邮件撰写安全访问内部文档、保护隐私数据文件系统 MCP、Email-MCP创意设计工具3D 建模、图形生成、UI 设计与专业软件无缝集成Blender MCP、浏览器自动化工作流自动化多系统协调、事件驱动流程跨系统安全协作Cloudflare MCP、AWS 自动化套件MCP 的通信机制根据 MCP 的规范,当前支持两种通信机制(传输方式):stdio(标准输入输出):主要用在本地服务上,操作你本地的软件或者本地的文件。比如 Blender 这种就只能用 Stdio,因为它没有在线服务。(MCP 默认通信方式)SSE(Server-Sent Events):主要用在远程通信服务上,这个服务本身就有在线的 API,比如访问你的谷歌邮件、天气情况等。MCP 的通信机制:stdio 方式✅ 优点适用场景明确:适用于客户端与服务器在同一台机器上运行的场景,实现简单。无网络依赖:无需依赖外部网络,通信速度快,适合需要快速响应的本地应用。高可靠性与易调试:可靠性高,且调试过程相对便捷。❌ 缺点配置复杂度高:需要提前完成准备工作,包括安装所需的命令行工具。单进程限制:为单进程通信模式,无法并行处理多个客户端请求;同时进程资源开销较大,不适合在本地运行大量服务,限制了其在复杂分布式场景中的使用。MCP 的通信机制:SSE 方式🎯 适用场景跨物理位置通信:适用于客户端与服务器部署在不同物理位置的远程场景。实时数据类场景:适合实时数据更新、消息推送、轻量级监控、实时日志流等需求。分布式 / 远程部署:在分布式系统或远程服务部署场景下,基于 HTTP 的 SSE 传输方式更为适配。✅ 核心优点配置极简:仅需提供服务链接即可完成配置,操作便捷,直接复制链接填入即可使用。stdio 的本地环境安装stdio 的本地服务环境分为两类,分别对应不同的技术栈和运行指令:Python 编写的服务:对应使用uvx指令运行TypeScript 编写的服务:对应使用npx指令运行💡 补充说明:uvx是 uv 工具包提供的一次性运行 Python 包的命令,无需全局安装即可直接调用脚本。npx是 Node.js 生态下的工具,用于直接运行 npm 包中的可执行文件,适合 TypeScript/JavaScript 服务。Python 环境(uvx 方式)1. 安装 uv(如果未安装)# 安装 uv(跨平台) curl -LsSf https://astral.sh/uv/install.sh | sh # 或 Windows 下 powershell -c "irm https://astral.sh/uv/install.ps1 | iex" # 若已经配置Python环境,可使用以下命令安装 pip install uv2. 运行 MCP Python 服务# 用 uvx 直接运行 Python 实现的 MCP 服务 uvx mcp-python-package-name示例:如果服务包名为mcp-server-python,直接执行uvx mcp-server-python即可启动本地 stdio 服务。🟦 TypeScript 环境(npx 方式)1. 确保 Node.js 已安装# 检查 Node.js 版本 node -v # 如未安装,可从 https://nodejs.org/ 下载 LTS 版本2. 运行 MCP TypeScript 服务# 用 npx 直接运行 TypeScript/JS 实现的 MCP 服务 npx mcp-typescript-package-name示例:如果服务包名为@modelcontextprotocol/server-typescript,执行npx @modelcontextprotocol/server-typescript即可启动。💡 关键区别环境运行指令适用语言特点PythonuvxPython无需全局安装,一次性运行,环境隔离好TypeScriptnpxTypeScript/JavaScript基于 Node.js 生态,直接调用 npm 包📌 配置到 MCP 客户端以 Claude Desktop 为例,在claude_desktop_config.json中添加:Python 服务:{ "mcpServers": { "python-server": { "command": "uvx", "args": ["mcp-python-package-name"] } } }TypeScript 服务:{ "mcpServers": { "ts-server": { "command": "npx", "args": ["mcp-typescript-package-name"] } } }MCP的工作原理MCP的C/S架构5个核心概念 MCP 遵循客户端-服务器架构(client-server),其中包含以下几个核心概念:• MCP 主机(MCP Hosts) • MCP 客户端( MCP Clients ) • MCP 服务器( MCP Servers ) • 本地资源( Local Resources ) • 远程资源( Remote Resources )MCP的C/S架构原型图MCP 解析1. MCP Host作为运行MCP的主应用程序,例如 Claude Desktop、Cursor、Cline 或 AI 工具。为用户提供与LLM交互的接口,同时集成 MCP Client 以连接 MCP Server。2. MCP ClientMCP client充当 LLM 和 MCP Server 之间的桥梁,嵌入在主机程序中,主要负责:接收来自LLM的请求。将请求转发到相应的MCP Server。将MCP Server 的结果返回给LLM。有哪些常用的ClientsMCP官网(https://modelcontextprotocol.io/clients)列出来一些支持MCP的Clients。分为两类:•AI编程IDE:Cursor、Cline、Continue、Sourcegraph、Windsurf等•聊天客户端:Cherry Studio、Claude、Librechat、Chatwise等更多的Client参考这里:MCP Clients:https://www.pulsemcp.com/clientsAwesome MCP Clients:https://github.com/punkpeye/awesome-mcp-clients/3. MCP Server每个 MCP 服务器都提供了一组特定的工具,负责从本地数据或远程服务中检索信息。是MCP架构中的关键组件。与传统的远程