标签 AI Agent 下的文章 - CorePlayers
首页
我的项目
708 智能控制台
Ethan认证中心
Ethan's ToDoList
Ethan's Tech Blog
好友链接
妙站分享
联系站长
搜 索
1
2026技术架构新趋势:从微服务回调到AI原生架构设计
45 阅读
2
DDD领域驱动设计:从底层原理到生产级全链路落地实战
41 阅读
3
Go + 云原生2026:从微服务到AI Infra的实战架构
35 阅读
4
事件驱动架构(EDA):从理论到项目落地的完整实践
34 阅读
5
2026 AI编程范式演进:从Vibe Coding到Spec-Driven Development再到Harness Engineering
31 阅读
ALL
(78)
AI
(20)
前端
(24)
后端
(23)
Dify/Coze
(7)
架构设计
(6)
登录
/
注册
搜 索
标签搜索
AI Agent
边缘计算
RSC
虚拟线程
Java
Spring Boot 4
Vibe Coding
AI原生
SDD
全栈开发
高并发
Project Loom
性能优化
2026趋势
协议标准
工具调用
MCP协议
多Agent协作
CrewAI
Spring AI
EthanCcc
累计撰写
78
篇文章
累计收到
1
条评论
首页
栏目
ALL
AI
前端
后端
Dify/Coze
架构设计
页面
我的项目
708 智能控制台
Ethan认证中心
Ethan's ToDoList
Ethan's Tech Blog
好友链接
妙站分享
联系站长
用户登录
登录
注册
标签:AI Agent
2026-04-05
MCP协议深度实战:打造AI工具互联互通的2026新基建
MCP协议深度实战:打造AI工具互联互通的2026新基建一、引言:AI Agent的"USB标准"MCP(Model Context Protocol)是Anthropic于2025年推出、2026年成为行业事实标准的AI Agent工具互联协议。形象地说,它就像是AI世界的"USB-C"——为AI模型提供了一种标准化的方式来连接外部工具和数据源。截至2026年5月,MCP生态的规模已经相当可观:1000+ 官方和社区Server:覆盖数据库、文件系统、搜索引擎、API网关等20+ AI平台原生支持:Claude、Cursor、Continue.dev、Zed等跨语言SDK:Python、TypeScript、Java、Go的官方SDK都已成熟本文将带你从零搭建多个MCP Server,并深入解析MCP协议的架构设计。二、MCP协议核心架构2.1 协议分层┌────────────────────────────────────────┐ │ MCP Host (IDE/应用) │ │ 例如:Claude Desktop, Cursor, VS Code │ ├────────────────────────────────────────┤ │ MCP Client (协议层) │ │ 管理连接、请求、通知 │ ├────────────────────────────────────────┤ │ JSON-RPC 2.0 │ │ 传输层:stdio / SSE / WebSocket │ ├────────────────────────────────────────┤ │ MCP Server (工具实现) │ │ 数据库查询、API调用、文件操作... │ └────────────────────────────────────────┘2.2 三大核心原语MCP协议围绕三个核心概念构建:原语用途示例ToolsAI可调用的功能查数据库、搜文件、调用APIResourcesAI可读取的数据文档、Schema、配置Prompts预定义的提示模板代码审查模板、SQL优化模板// MCP协议JSON-RPC消息示例 { "jsonrpc": "2.0", "method": "tools/call", "params": { "name": "query_database", "arguments": { "sql": "SELECT * FROM orders WHERE status = 'pending' LIMIT 10" } }, "id": "req-001" } // 响应 { "jsonrpc": "2.0", "result": { "content": [ { "type": "text", "text": "查询结果: [, ...]" } ] }, "id": "req-001" }三、实战:构建三个MCP Server3.1 MySQL数据库MCP Server(Python)# mysql_mcp_server.py import asyncio import json from mcp.server import Server, NotificationOptions from mcp.server.models import InitializationCapabilities from mcp.server.stdio import stdio_server import aiomysql server = Server("mysql-explorer") # 注册工具 @server.list_tools() async def list_tools(): return [ { "name": "query_database", "description": "执行SELECT查询,返回结果集。支持参数化查询防止SQL注入", "inputSchema": { "type": "object", "properties": { "sql": { "type": "string", "description": "SELECT查询语句" }, "params": { "type": "array", "description": "查询参数(可选)", "items": } }, "required": ["sql"] } }, { "name": "get_table_schema", "description": "获取指定表的结构信息", "inputSchema": { "type": "object", "properties": { "table_name": { "type": "string", "description": "表名" } }, "required": ["table_name"] } } ] @server.call_tool() async def call_tool(name: str, arguments: dict): pool = await aiomysql.create_pool( host="localhost", port=3307, user="typecho", password="typecho123", db="typecho", charset="utf8mb4" ) if name == "query_database": async with pool.acquire() as conn: async with conn.cursor(aiomysql.DictCursor) as cur: await cur.execute(arguments["sql"], arguments.get("params", [])) rows = await cur.fetchall() return [] elif name == "get_table_schema": async with pool.acquire() as conn: async with conn.cursor(aiomysql.DictCursor) as cur: await cur.execute(f"DESCRIBE ") rows = await cur.fetchall() return [] pool.close() await pool.wait_closed() async def main(): async with stdio_server() as (read_stream, write_stream): await server.run( read_stream, write_stream, InitializationCapabilities( sampling=, experimental=, roots= ) ) if __name__ == "__main__": asyncio.run(main())3.2 文件系统MCP Server(TypeScript)// filesystem_mcp_server.ts import from "@modelcontextprotocol/sdk/server/index.js"; import from "@modelcontextprotocol/sdk/server/stdio.js"; import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js"; import * as fs from "fs/promises"; import * as path from "path"; const server = new Server( , } } ); // 安全白名单:AI只能访问这些目录 const ALLOWED_DIRECTORIES = [ "/home/user/projects", "/var/data/documents", ]; function isPathSafe(targetPath: string): boolean { const resolved = path.resolve(targetPath); return ALLOWED_DIRECTORIES.some(dir => resolved.startsWith(dir)); } server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: [ { name: "read_file", description: "读取文件内容", inputSchema: { type: "object", properties: { path: , encoding: }, required: ["path"] } }, { name: "search_files", description: "在目录中搜索文件(支持glob模式)", inputSchema: { type: "object", properties: { directory: , pattern: }, required: ["directory", "pattern"] } } ] })); server.setRequestHandler(CallToolRequestSchema, async (request) => { const = request.params; if (name === "read_file") { const filePath = args.path as string; if (!isPathSafe(filePath)) { return { content: [], isError: true }; } const content = await fs.readFile(filePath, "utf-8"); return { content: [] }; } if (name === "search_files") { const dir = args.directory as string; if (!isPathSafe(dir)) { return { content: [], isError: true }; } const entries = await fs.readdir(dir, ); const matched = entries .filter(e => e.name.includes(args.pattern as string)) .map(e => `$ $`); return { content: [] }; } throw new Error(`Unknown tool: $`); }); async function main() { const transport = new StdioServerTransport(); await server.connect(transport); } main();3.3 Spring Boot MCP Server(Java)// Spring Boot MCP Server - 将现有API自动转化为MCP工具 @SpringBootApplication @McpServer( name = "user-management-server", version = "1.0.0" ) public class McpServerApplication { public static void main(String[] args) { SpringApplication.run(McpServerApplication.class, args); } } @Component public class UserManagementTools { @McpTool( name = "get_user", description = "根据ID查询用户信息" ) public User getUser(@McpParam("用户ID") Long userId) { return userRepository.findById(userId) .orElseThrow(() -> new NotFoundException("用户不存在")); } @McpTool( name = "search_users", description = "根据关键词搜索用户" ) public List<User> searchUsers( @McpParam("搜索关键词") String keyword, @McpParam(value = "分页大小", required = false) Integer limit ) { return userRepository.search(keyword, limit != null ? limit : 20); } @McpTool( name = "export_users_csv", description = "导出用户列表为CSV格式" ) public String exportUsersCsv( @McpParam("部门ID") Long departmentId ) { List<User> users = userRepository.findByDepartment(departmentId); return CsvUtils.toCsv(users); } } // application.yml 配置 mcp: server: transport: stdio # 支持 stdio / sse / websocket tools: auto-scan: true # 自动扫描@McpTool注解四、MCP与A2A协议的关系这是2026年AI协议领域最常见的问题:维度MCPA2A定位AI到工具的连接协议Agent到Agent的通信协议类比USB-C(设备连接)TCP/IP(设备间通信)通信流单向:AI调用工具双向:Agent间协作发起者AnthropicGoogle成熟度生产就绪2026年5月正式发布两者是互补关系而非竞争关系。一个典型的AI应用会同时使用:MCP:让单个Agent拥有一套标准化工具A2A:让多个Agent(可能由不同框架构建)协作完成复杂任务五、生产环境MCP部署架构 ┌──────────────────┐ │ AI 应用/IDE │ └────────┬─────────┘ │ ┌────────▼─────────┐ │ MCP Gateway │ │ (路由/鉴权/限流) │ └──┬───────┬──────┘ │ │ ┌──────────▼─┐ ┌──▼──────────┐ │ MySQL MCP │ │ Redis MCP │ │ Server │ │ Server │ └────────────┘ └─────────────┘ │ │ ┌──────────▼─┐ ┌──▼──────────┐ │ GitHub MCP│ │ Slack MCP │ │ Server │ │ Server │ └────────────┘ └─────────────┘关键生产实践:安全隔离:每个MCP Server运行在独立的沙箱中权限控制:细粒度的用户-工具访问策略速率限制:防止AI模型的工具调用频率过高导致后端压力日志审计:所有工具调用留痕,满足合规要求六、结语MCP协议正在成为AI Agent的"新基建"。对于技术团队,现在的关键行动项是:盘点内部API:识别哪些API适合暴露给AI Agent搭建MCP Server:将高频使用的API封装为MCP工具制定安全策略:确认AI可以访问哪些数据和功能关注A2A:随着多Agent场景增多,A2A协议也将变得重要MCP不是在创造新的工作量,而是在为AI Agent时代做基础设施准备。发布日期:2026年4月5日 | 作者:Ethan | 分类:AI、MCP协议
2026年04月05日
22
0
1
2026-03-22
2026 AI Agent开发框架全景对比:LangChain4j vs Spring AI vs CrewAI选型指南
2026 AI Agent开发框架全景对比:LangChain4j vs Spring AI vs CrewAI选型指南一、引言:AI Agent从Demo到生产的跨越2026年,AI Agent不再是技术博客里的玩具Demo,而是真正跑在生产环境中的核心组件。过去一年,我们看到三类典型的Agent落地场景:智能客服:从预设话术升级为多轮推理、工具调用的自主Agent代码审查:Agent自动阅读PR、运行测试、生成审查意见业务流程自动化:Agent串联多个内部系统API,完成端到端任务框架的选择直接影响Agent的能力上限、开发效率和运维成本。本文将对Java和Python生态中最主流的三大Agent框架做深度对比,帮助团队做出正确的技术选型。二、三大框架概览2.1 LangChain4j——Java生态的Agent标准答案LangChain4j在2026年发布了1.0正式版,是Java生态中最成熟的AI框架:// LangChain4j 1.0 典型Agent定义 @AiService public interface CustomerSupportAgent { @SystemMessage(""" 你是电商客服助手。你可以: - 查询订单状态 (需要订单号) - 处理退款申请 (需要订单号和原因) - 回答产品问题 如果用户问题超出你的能力范围,请引导他们联系人工客服。 """) @Tool(PolicyCardService.class) @Tool(OrderService.class) Result<String> chat(@MemoryId String userId, @UserMessage String message); } // 工具定义 public class OrderService { @Tool("查询订单状态,输入订单号") public OrderStatus queryOrder(@P("订单号") String orderId) { return orderRepository.findById(orderId); } @Tool("申请退款,需要订单号和退款原因") public RefundResult requestRefund( @P("订单号") String orderId, @P("退款原因") String reason ) { return refundService.process(orderId, reason); } }核心特性:声明式Agent:通过注解定义Agent的能力和行为类型安全:Java的类型系统在编译期就能发现工具签名的错误企业级集成:原生支持Spring Boot、Quarkus、Micronaut多模型支持:OpenAI、Azure、DeepSeek、Ollama等RAG内置:嵌入存储、向量检索开箱即用2.2 Spring AI——Spring生态的原生AI扩展Spring AI 1.0在2026年2月正式GA,与Spring Boot 4深度整合:// Spring AI 1.0 Agent实现 @Controller public class AIController { private final ChatClient chatClient; public AIController(ChatClient.Builder builder) { this.chatClient = builder .defaultSystem("你是Spring技术专家,专注于回答Spring Boot相关问题") .defaultTools(new DocumentationTool(), new CodeSearchTool()) .build(); } @GetMapping("/ai/chat") public Flux<String> chat(@RequestParam String message) { // 流式响应 return chatClient.prompt() .user(message) .advisors(new SimpleLoggerAdvisor()) // 可插拔的顾问链 .stream() .content(); } // 多Agent编排(Spring AI独有) @GetMapping("/ai/orchestrate") public OrchestrationResult orchestrate(@RequestParam String task) { return chatClient.orchestrate() .addAgent("analyst", new AnalystAgent()) .addAgent("coder", new CoderAgent()) .addAgent("reviewer", new ReviewerAgent()) .execute(task); } }Spring AI的差异化优势:与Spring Boot深度集成:配置文件、Actuator监控、依赖注入全体系Advisor链:AOP式的横切关注点(日志、重试、向量检索)通过Advisor链织入多Agent编排:内置Agent编排引擎,支持顺序、并行、条件路由原生Observability:Micrometer + OpenTelemetry全链路追踪2.3 CrewAI——Python的多Agent协作引擎CrewAI 1.0在2026年持续领跑Python Agent框架赛道:# CrewAI 1.0 多Agent团队 from crewai import Agent, Task, Crew, Process # 定义专家Agent researcher = Agent( role="技术研究员", goal="深入调研的最新进展和应用案例", backstory="你是一位资深技术分析师,擅长从各类技术源挖掘关键信息", tools=[WebSearchTool(), GitHubTrendingTool()], llm="deepseek-v4", verbose=True ) writer = Agent( role="技术写作者", goal="将研究结果转化为结构清晰的技术文章", backstory="你是一位技术博客作者,能将复杂的技术概念转化为易懂的文字", tools=[MarkdownFormatter()], llm="deepseek-v4", ) reviewer = Agent( role="技术审核", goal="审核文章的技术准确性和可读性", backstory="你曾是Google的Principal Engineer,对技术细节极为敏感", tools=[FactCheckTool()], llm="gemini-3-pro", ) # 定义任务 research_task = Task( description="调研DeepSeek V4的架构创新", expected_output="500字技术调研报告", agent=researcher ) writing_task = Task( description="基于调研报告撰写一篇面向开发者的技术博客", expected_output="2000字技术文章", agent=writer, context=[research_task] # 依赖前序任务 ) review_task = Task( description="审核文章的技术准确性,提出修改建议", expected_output="审核意见和修改建议", agent=reviewer, context=[writing_task] ) # 组建团队 crew = Crew( agents=[researcher, writer, reviewer], tasks=[research_task, writing_task, review_task], process=Process.sequential, # 顺序执行 verbose=True ) result = crew.kickoff(inputs=)CrewAI的核心优势:角色化建模:为Agent定义角色、目标和背景故事,模拟人类团队协作灵活的执行流程:支持顺序(Sequential)和层级(Hierarchical)两种流程Python生态优势:TensorFlow/PyTorch/Transformers无缝集成任务依赖管理:context参数天然支持任务间的数据流转三、全面对比矩阵维度LangChain4j 1.0Spring AI 1.0CrewAI 1.0语言Java/KotlinJava/KotlinPython成熟度⭐⭐⭐⭐⭐ 生产验证⭐⭐⭐⭐ 稳定GA⭐⭐⭐⭐ 生产验证Spring集成✅ 集成良好⭐⭐⭐⭐⭐ 原生❌ 无关多Agent编排⭐⭐ 基础支持⭐⭐⭐⭐ 内置引擎⭐⭐⭐⭐⭐ 角色化建模RAG能力⭐⭐⭐⭐ 丰富⭐⭐⭐⭐ 丰富⭐⭐⭐ 需自行集成企业功能⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐API设计声明式注解Advisor链式声明式Pythonic工具调用@Tool注解FunctionCallback函数直接传递流式输出✅✅(响应式)✅可观测性需自行集成Micrometer原生需自行集成社区规模12k GitHub Stars18k GitHub Stars25k GitHub Stars四、选型决策指南决策流程图团队技术栈? ├── Java为主 │ ├── 需要企业级运维? │ │ ├── 是 → Spring AI(Actuator + Micrometer) │ │ └── 否 → 评估多Agent需求 │ │ ├── 简单Agent → LangChain4j(更简洁) │ │ └── 多Agent编排 → Spring AI(Orchestrator) │ └── 已有Spring Boot项目 → Spring AI(无缝集成) │ └── Python为主 ├── 需要多Agent协作? │ ├── 是 → CrewAI(角色化建模最成熟) │ └── 否 → LangChain Python └── 需要科学计算集成 → CrewAI(PyTorch/TF生态)典型场景推荐场景推荐框架理由企业内部系统集成(Java)Spring AISpring生态无缝对接多Agent科研分析CrewAIPython科学计算生态 + 角色化建模独立Java Agent服务LangChain4j轻量、声明式、类型安全高并发实时AgentSpring AI + 虚拟线程Spring Boot 4虚拟线程支撑数据科学工作流CrewAIPython生态天然优势五、2026下半年展望A2A协议标准化:Google的Agent-to-Agent协议将推动跨框架Agent互通MCP原生支持:三大框架都承诺2026年内完成MCP协议的一等公民支持Agent评估体系:Agent评估的Benchmark和工具链正在形成低代码Agent平台:Dify、Coze等平台与代码框架的边界正在模糊对于团队,现在是最好的Agent框架选型窗口。建议小项目快速验证,大项目做POC,而不是停留在看文档的阶段。发布日期:2026年3月22日 | 作者:Ethan | 分类:AI、Agent开发
2026年03月22日
19
0
1