mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5mobile wallpaper 6
4158 字
12 分钟
MCP+skills使用生态
2026-03-28

从零开始掌握 MCP 与 Skills:2026 年 AI 智能体开发完全指南#

当 AI 不再只是对话窗口,而是能够操作你的电脑、管理数据库、自动发送邮件的数字员工时,如何让它安全、高效地与外部世界对话?2026 年的 MCP 和 Skills 给出了答案——而且答案正在快速进化。


写在前面:为什么现在重写这份指南?#

2026 年 3 月,Model Context Protocol(MCP)迎来了关键转折点。项目维护者发布了 2026 年路线图,明确将“企业就绪性”和“传输可扩展性”列为最高优先级。与此同时,Skills 作为 AI 能力封装的最佳实践,也出现了 EvoSkill 这样的自动进化框架,让 Agent 能够自己发现并优化 Skills。

更重要的是,2026 年 1 月,Anthropic 正式发布了 MCP Apps——这是 MCP 协议的首个官方扩展,让工具能够直接在 AI 聊天窗口中呈现交互式 UI 界面。这意味着 AI 不再只是输出文本,而是可以展示图表、表单、仪表板,甚至接受用户的点击和输入。

如果你在 2024 年或 2025 年了解过 MCP,现在是时候刷新认知了。这份教程将基于 2026 年 3 月的最新生态,从零开始带你掌握 MCP 和 Skills 的完整知识体系。


一、MCP:AI 的通用通信底座#

1.1 为什么需要 MCP#

在 MCP 出现之前,让 AI 接入一个新工具通常需要编写大量胶水代码:研究 API 文档、处理认证、格式化输入输出、处理错误……每个集成都是“一次性”的,更换模型或工具时全部重写。

MCP(Model Context Protocol) 由 Anthropic 于 2024 年底推出,目标是定义一套标准化的接口,让任何 AI 应用都能以统一方式调用任何工具或数据源。

类比理解:

  • USB-C 让鼠标、键盘、显示器可以即插即用地连接电脑
  • MCP 让 AI 应用(Claude Desktop、Cursor、VS Code 等)可以即插即用地接入文件系统、数据库、GitHub、Slack 等任何工具

1.2 MCP 2026:三大核心原语#

MCP 协议定义了三种核心原语,清晰地划分了谁来控制、谁来决策、谁来执行:

graph TD subgraph 三层能力模型 P[Prompts<br/>如何提问] R[Resources<br/>提供背景] T[Tools<br/>执行操作] end P --> |用户控制| U[用户/UI 显式选择] R --> |应用控制| A[Host 决定暴露什么] T --> |模型控制| M[模型决定何时调用]

1.2.1 Resources:提供“事实背景”#

Resources 是 MCP 中用于向 LLM 暴露上下文数据的原语。它的本质是可被读取的背景信息,而非“能力”。

  • URI 唯一标识file:///home/user/docs/report.pdfpostgres://db/customers
  • 静态与动态资源:支持 URI Template(RFC 6570),如 logs://recent?timeframe={duration}
  • 应用控制:模型不能“主动索取资源”,只能使用 Host 提供的上下文

1.2.2 Tools:执行“动作”#

Tools 是 MCP 中唯一允许模型直接触发“动作”的原语。

  • 模型控制:模型决定是否调用工具,但真正调用由客户端执行
  • 设计原则:Model decides, Client executes(模型主控,客户端驱动)
  • 定义结构:包含 namedescriptioninputSchemaannotations

1.2.3 Prompts:标准化提问模板#

Prompts 是服务器端预定义的对话模板,帮助模型更好地理解用户意图。

  • 用户控制:必须由用户或 UI 显式选择触发
  • 可复用:通过 slash 命令、菜单或按钮调用

1.3 架构深潜:协议层与传输层解耦#

MCP 的架构设计使其成为 Agent 时代的“通用通信底座”。核心在于三层解耦:

graph TB subgraph 应用层 A1[Agent] A2[Tools] A3[Resources] A4[Prompts] end subgraph 协议层 B[BaseSession<br/>JSON-RPC 2.0 + 会话管理] end subgraph 传输层 C1[Stdio] C2[HTTP + SSE] C3[Streamable HTTP] C4[WebSocket] end A1 --> B A2 --> B A3 --> B A4 --> B B --> C1 B --> C2 B --> C3 B --> C4

关键设计

  • BaseSession:统一请求-响应模型,自动维护 ID 关联,支持并发调用
  • ClientSession/ServerSession:内嵌初始化状态机,严格约束交互顺序
  • 传输层可插拔:Stdio(本地进程)、HTTP+SSE(浏览器友好)、WebSocket(全双工)

标准交互流程(三阶段)

  1. 握手初始化:Client 发送 initialize,交换版本与能力集
  2. 正常通信:双向 Request-Response 或 Notification
  3. 优雅收尾:任意端可主动关闭会话

1.4 MCP Apps:让工具拥有界面#

这是 2026 年最重要的 MCP 更新。 2026 年 1 月 26 日,Anthropic 正式发布 MCP Apps(SEP-1865),这是 MCP 协议的首个官方扩展。

1.4.1 解决什么问题?#

以前,MCP 工具只能返回纯文本或 JSON。比如一个“生成销售报表”的工具,返回的是一堆数字,用户需要复制粘贴到 Excel 才能看懂。

现在,MCP Apps 允许工具返回交互式 HTML/JavaScript UI,直接在 AI 聊天窗口中渲染:

  • 图表、仪表板、地图
  • 表单、按钮、滑块
  • 可编辑的文档预览
  • 实时更新的监控面板

1.4.2 工作原理#

sequenceDiagram participant User participant Host as MCP Host<br/>(Claude Desktop) participant Server as MCP Server participant UI as UI Resource User->>Host: 请求生成报表 Host->>Server: tools/call Server->>Host: 返回 + _meta.ui.resourceUri Host->>UI: 获取 UI 资源 UI-->>Host: HTML/JS bundle Host->>User: 渲染交互式界面 User->>UI: 点击/输入/筛选 UI->>Server: postMessage JSON-RPC Server-->>UI: 更新数据

关键特性

  • UI 资源:通过 ui:// scheme 标识,HTML/JS 单文件应用
  • 双向通信:通过 postMessage 实现 JSON-RPC 调用
  • 安全隔离:沙箱化 iframe,无 DOM 访问、无 cookies、CSP 支持

1.4.3 已落地的应用案例#

2026 年 2 月,多家公司已发布 MCP Apps 集成:

公司应用场景
Slack搜索对话、生成消息草稿、在聊天中预览发送
Figma生成/编辑图表、操作 FigJam 白板
Asana将对话转为项目/任务,拖拽分配、可视化看板
Canva实时定制演示文稿、编辑设计
Box浏览/搜索文件、内联预览 PDF 并高亮
Miro从代码库生成架构图、上下文感知代码生成
Hex/Amplitude交互式分析仪表板,支持筛选和下钻

1.5 实战:配置并使用 MCP Server#

以 Claude Desktop 为例,添加文件系统访问能力。

步骤 1:找到配置文件#

  • macOS~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows%APPDATA%\Claude\claude_desktop_config.json

步骤 2:添加 MCP Server 配置#

{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/yourusername/Documents",
"/Users/yourusername/Desktop"
]
}
}
}

⚠️ 安全提示:只授予必要的目录访问权限。

步骤 3:重启 Claude Desktop#

完全退出后重新打开。你会看到对话窗口下方出现锤子图标 🔨,点击即可查看可用工具。

步骤 4:开始使用#

请读取我桌面上 todo.txt 的内容,并告诉我今天要做什么。

Claude 会自动调用 read_file 工具,读取文件内容后回答。

1.6 进阶:手写一个 MCP Server(Java 版)#

Open Liberty 在 2026 年 3 月发布了 MCP Server 1.0 功能更新,支持响应编码器和请求 ID 访问。以下示例展示如何用 Java 实现一个 MCP Server。

添加依赖(Maven)#

<dependency>
<groupId>io.openliberty.beta</groupId>
<artifactId>openliberty-runtime</artifactId>
<version>26.0.0.3-beta</version>
<type>zip</type>
</dependency>

定义工具方法#

import io.openliberty.mcp.server.Tool;
import io.openliberty.mcp.server.ToolArg;
import io.openliberty.mcp.server.RequestId;
@ApplicationScoped
public class SearchService {
@Tool(description = "搜索数据存储")
public SearchResult search(
@ToolArg(name = "query", description = "搜索关键词") String query,
RequestId requestId) { // 自动注入请求ID,用于日志审计
// 日志记录,便于追踪
logger.info("Search request " + requestId.asString() + ": " + query);
SearchResult result = datastore.runQuery(query);
return result;
}
}

自定义响应编码器#

@ApplicationScoped
public class SearchResultEncoder implements ToolResponseEncoder<SearchResult> {
@Override
public boolean supports(Class<?> runtimeType) {
return SearchResult.class.isAssignableFrom(runtimeType);
}
@Override
public ToolResponse encode(SearchResult searchResult) {
if (searchResult.results().isEmpty()) {
return ToolResponse.error("未找到结果");
}
List<TextContent> contents = new ArrayList<>();
for (var result : searchResult.results()) {
// 根据相关性设置优先级注释
Annotations annotations = new Annotations(null, null, result.relevance());
contents.add(new TextContent(result.summary(), null, annotations));
}
return ToolResponse.success(contents);
}
}

启用 MCP Server 功能#

server.xml 中配置:

<featureManager>
<feature>mcpServer-1.0</feature>
</featureManager>
<mcpServer endpoint="/mcp"/>

二、Skills:从 Prompt 到能力封装#

2.1 Skills 的本质:MCP 与 Skills 的区别#

这是最常见的困惑:Skills 和 MCP 是什么关系?不是替代,而是协作

Anthropic 官方对这两个概念的定义非常清晰:

维度MCPSkills
核心作用给模型接入外部能力规范模型的做事方式
关注重点数据、工具、系统接口任务方法论、业务逻辑、执行步骤
解决问题模型去哪拿数据、能调用哪些系统这类事情应该按什么流程做
本质定位能力供给层 / 能力接口层行为规范层 / 方法论固化层
类比给模型”工具和数据”教模型”如何正确使用这些能力”

一句话总结

  • MCP 解决的是「模型能用什么」
  • Skills 解决的是「模型该怎么用」

真实场景理解

  • MCP:接入监控系统、数据库、日志平台
  • Skills:规定故障分析要先看什么、再分析什么、最后怎么下结论

2.2 2026 新趋势:Skills 自动进化(EvoSkill)#

2026 年 3 月,来自 Sentient 与弗吉尼亚理工的研究团队发布了 EvoSkill 框架,让 Agent 能够自动发现并优化 Skills。

2.2.1 为什么需要自动进化?#

当前 Skills 多依赖人工编写,成本高昂且难以扩展。EvoSkill 将优化层次提升至 Skills 本身,让 Agent 能够:

  • 分析失败案例
  • 诊断能力缺口
  • 自动创建或修改 Skills
  • 在不同任务间迁移复用

2.2.2 EvoSkill 核心机制#

graph LR subgraph 执行循环 A[执行 Agent<br/>处理任务] -->|失败案例| B[提议 Agent<br/>分析诊断] B -->|修改建议| C[构建 Agent<br/>生成 Skills] C -->|新 Skills| A end subgraph 验证 D[验证集评估] C --> D D -->|得分高| E[纳入前沿集合] D -->|得分低| F[丢弃] end

三个 Agent 协作

  1. 执行 Agent(A):在 Skills 库支持下处理任务,生成执行轨迹
  2. 提议 Agent(P):接收失败案例,结合历史反馈,提出 Skills 创建或修改建议
  3. 构建 Agent(S):将抽象描述转化为具体 Skills 文件夹(元数据 + 指令 + 脚本)

2.2.3 实验效果#

OfficeQA 金融文档问答任务上,准确率从 60.6% 提升至 67.9%。

SealQA 对抗性搜索问答任务上,实现了 12.1 个百分点的提升。

更重要的是,Skills 具备跨任务迁移能力:在 SealQA 上进化出的“搜索持久化协议”Skills,零样本迁移到 BrowseComp 任务后,准确率从 43.5% 提升至 48.8%。

2.3 实战:创建你的第一个 Skill#

Skills 在不同框架中有不同实现方式。以下是几种主流方式。

方式一:Claude Code 中的 Skills(命令行)#

Claude Code 是 Anthropic 的命令行工具,内置 Skills 支持。

# 安装 Claude Code
npm install -g @anthropic-ai/claude-code
# 安装 pptx skill
claude skills add pptx
# 使用 skill 创建 PPT
claude "用 pptx skill 创建一个关于 MCP 的演示文稿"

方式二:Semantic Kernel 中的 Plugins(C#)#

using Microsoft.SemanticKernel;
public class EmailPlugin
{
[KernelFunction]
[Description("发送电子邮件")]
public async Task<string> SendEmailAsync(
[Description("收件人地址")] string to,
[Description("邮件主题")] string subject,
[Description("邮件正文")] string body)
{
// 可在此调用 MCP 邮件服务器
await emailService.SendAsync(to, subject, body);
return $"邮件已发送至 {to}";
}
}
// 注册并使用
var kernel = Kernel.CreateBuilder()
.AddOpenAIChatCompletion("gpt-4", apiKey)
.Build();
kernel.Plugins.AddFromType<EmailPlugin>("Email");
// 自然语言触发
await kernel.InvokePromptAsync("请给 zhangsan@example.com 发送问候邮件");

方式三:LangChain 中的 Tools(Python)#

from langchain.tools import tool
from langchain.agents import create_react_agent, AgentExecutor
@tool
def send_email(to: str, subject: str, body: str) -> str:
"""发送电子邮件。收件人、主题、正文必填。"""
# 调用 MCP Server
return f"邮件已发送至 {to}"
@tool
def get_weather(city: str) -> str:
"""获取城市天气。"""
return f"{city}:晴朗 25°C"
tools = [send_email, get_weather]
agent = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools)
agent_executor.invoke({"input": "查北京天气并发邮件告诉老板"})

2.4 实战:在 Cursor 中使用 Skills#

Cursor 等 AI 编辑器支持通过 .cursorrules 定义 Skills。

在项目根目录创建 .cursorrules

## Skills
### 代码审查
当用户说"审查代码"时,你需要:
1. 检查最近更改的文件
2. 找出潜在的性能问题和安全漏洞
3. 用列表形式给出改进建议
4. 对严重问题标注 ⚠️
### 生成提交信息
当用户说"生成 commit message"时,你需要:
1. 运行 git diff --staged
2. 分析变更内容
3. 遵循 Conventional Commits 格式生成信息
4. 提供 3 个备选方案供用户选择

用户只需输入“审查代码”,AI 就会按照预设流程执行。


三、MCP + Skills 实战:构建智能周报系统#

让我们结合 MCP、Skills 和 MCP Apps,从头搭建一个能自动生成并发送周报的智能体。

架构总览#

graph TB subgraph 用户交互层 U[用户] --> |"发送周报到 xx@example.com"| H[MCP Host<br/>Claude Desktop] end subgraph Skills层 S[WeeklyReport Skill<br/>封装周报生成逻辑] end subgraph MCP工具层 T1[Database MCP Server<br/>查询任务数据] T2[Chart MCP Server<br/>生成图表] T3[Email MCP Server<br/>发送邮件] T4[UI MCP App<br/>交互式预览界面] end H --> S S --> T1 S --> T2 S --> T3 S --> T4 T4 -->|渲染| H

步骤一:搭建 MCP 工具层#

1. Database MCP Server(查询任务数据)#

使用 Python SDK 实现:

from mcp.server import Server
import mcp.server.stdio
import mcp.types as types
import asyncio
import json
server = Server("db-server")
# 模拟数据库
MOCK_TASKS = [
{"id": 1, "title": "完成需求文档", "status": "done", "date": "2026-03-27"},
{"id": 2, "title": "修复登录 Bug", "status": "done", "date": "2026-03-26"},
{"id": 3, "title": "性能优化", "status": "in_progress", "date": "2026-03-28"},
{"id": 4, "title": "部署上线", "status": "pending", "date": "2026-03-29"},
]
@server.list_tools()
async def list_tools():
return [
types.Tool(
name="get_weekly_tasks",
description="获取本周(最近7天)的任务列表",
inputSchema={
"type": "object",
"properties": {
"start_date": {"type": "string", "description": "开始日期"},
"end_date": {"type": "string", "description": "结束日期"}
},
},
)
]
@server.call_tool()
async def call_tool(name: str, arguments: dict | None):
if name == "get_weekly_tasks":
# 可添加日期过滤逻辑
return [types.TextContent(type="text", text=json.dumps(MOCK_TASKS))]
raise ValueError(f"Unknown tool: {name}")
async def main():
async with mcp.server.stdio.stdio_server() as (read_stream, write_stream):
await server.run(read_stream, write_stream, ...)

2. Chart MCP Server(生成图表)#

# chart_server.py - 简化示例
@server.list_tools()
async def list_tools():
return [
types.Tool(
name="create_bar_chart",
description="根据数据创建柱状图",
inputSchema={
"type": "object",
"properties": {
"data": {"type": "object", "description": "图表数据"},
"title": {"type": "string", "description": "图表标题"}
},
"required": ["data"]
},
)
]
@server.call_tool()
async def call_tool(name: str, arguments: dict | None):
if name == "create_bar_chart":
# 生成图表并返回 base64 图片
chart_base64 = generate_chart(arguments["data"], arguments.get("title"))
return [types.ImageContent(type="image", data=chart_base64, mimeType="image/png")]

步骤二:封装为 Skill#

使用 Semantic Kernel 定义 Skill:

from semantic_kernel.functions import kernel_function
from semantic_kernel.connectors.ai.open_ai import OpenAIChatCompletion
import subprocess
import json
class WeeklyReportSkill:
def __init__(self):
# MCP Server 进程管理(生产环境建议使用 Docker)
self.db_server = subprocess.Popen(["python", "db_server.py"])
self.chart_server = subprocess.Popen(["python", "chart_server.py"])
self.email_server = subprocess.Popen(["python", "email_server.py"])
@kernel_function(description="生成并发送周报")
async def send_weekly_report(
self,
recipient: str,
include_chart: bool = True
) -> str:
"""生成并发送周报"""
# 1. 调用 Database MCP 获取任务数据
tasks = await self._call_mcp("db-server", "get_weekly_tasks", {})
tasks_data = json.loads(tasks[0].text)
# 2. 使用 LLM 生成周报摘要
summary = await self._generate_summary(tasks_data)
# 3. 可选:生成图表
chart_image = None
if include_chart:
chart_result = await self._call_mcp("chart-server", "create_bar_chart", {
"data": self._prepare_chart_data(tasks_data),
"title": "本周任务完成情况"
})
chart_image = chart_result[0].data
# 4. 组装邮件内容
email_body = f"""
<h2>本周工作总结</h2>
<p>{summary}</p>
<h3>任务详情:</h3>
<ul>
{self._format_tasks(tasks_data)}
</ul>
"""
# 5. 发送邮件
await self._call_mcp("email-server", "send_email", {
"to": recipient,
"subject": f"周报 - {self._get_week_range()}",
"body": email_body,
"attachments": [chart_image] if chart_image else []
})
return f"周报已发送至 {recipient}"
async def _call_mcp(self, server_name: str, tool_name: str, args: dict):
"""与 MCP Server 通信"""
# 实现细节:通过 stdio 发送 JSON-RPC 请求
pass
async def _generate_summary(self, tasks):
llm = OpenAIChatCompletion(service_id="gpt-4")
prompt = f"请根据以下任务列表生成简洁的周报摘要(2-3句话):{json.dumps(tasks)}"
return str(await llm.complete(prompt))
def _prepare_chart_data(self, tasks):
"""为图表准备数据"""
status_count = {"done": 0, "in_progress": 0, "pending": 0}
for t in tasks:
status_count[t["status"]] += 1
return status_count
def _format_tasks(self, tasks):
return "\n".join([f"<li>{t['title']} - {t['status']}</li>" for t in tasks])
def _get_week_range(self):
return "2026年3月第4周"

步骤三:集成 MCP Apps 实现交互界面#

让周报生成工具具备可视化预览能力,用户可在发送前编辑和确认。

UI 资源文件(ui/weekly_report_preview.html#

<!DOCTYPE html>
<html>
<head>
<title>周报预览</title>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
</head>
<body>
<div id="app">
<h2>周报预览</h2>
<div id="summary-section">
<h3>摘要</h3>
<div id="summary" contenteditable="true"></div>
</div>
<div id="chart-section">
<canvas id="statusChart"></canvas>
</div>
<div id="tasks-section">
<h3>任务列表</h3>
<div id="tasks"></div>
</div>
<div class="actions">
<button id="edit-btn">编辑</button>
<button id="send-btn">发送</button>
<button id="cancel-btn">取消</button>
</div>
</div>
<script type="module">
import { App } from '@modelcontextprotocol/ext-apps';
const app = new App();
// 监听工具结果
app.on('toolresult', async (data) => {
// 渲染预览界面
renderPreview(data.result);
});
// 发送按钮
document.getElementById('send-btn').onclick = async () => {
// 调用 MCP 工具发送邮件
const result = await app.callServerTool('email-server', 'send_email', {
to: document.getElementById('recipient').value,
body: document.getElementById('summary').innerText
});
app.updateContext('邮件已发送');
};
function renderPreview(reportData) {
document.getElementById('summary').innerText = reportData.summary;
// 渲染图表
new Chart(document.getElementById('statusChart'), {
type: 'bar',
data: reportData.chartData
});
}
</script>
</body>
</html>

MCP Server 返回 UI#

@server.call_tool()
async def call_tool(name: str, arguments: dict):
if name == "generate_report_preview":
# 生成周报数据
report_data = await generate_report_data()
# 返回带有 UI 资源的结果
return [
types.TextContent(
type="text",
text=json.dumps(report_data),
_meta={
"ui": {
"resourceUri": "ui://weekly-report/preview",
"data": report_data
}
}
)
]

四、2026 年生态全景与企业实践#

4.1 主流平台 MCP 支持情况#

截至 2026 年 3 月,MCP 已获得广泛生态支持:

类别平台/产品
AI 模型Claude、ChatGPT(即将推出)、Gemini
云服务商AWS(Kiro)、Google、Azure
开发工具VS Code、Cursor、Windsurf、GitHub Copilot、Replit
协作平台Miro、Slack、Figma、Asana、Canva、Box
框架LangChain、Semantic Kernel、LlamaIndex

4.2 MCP 2026 路线图:四大优先领域#

根据 2026 年 3 月发布的路线图,MCP 维护者确定了四个优先发展领域:

1. 传输演进和可扩展性#

当前问题:协议依赖长期“有状态”会话,难以在多实例或负载均衡器后部署。

解决方案

  • 改进传输与会话模型,支持水平扩展
  • 引入标准元数据格式(通过 .well-known 端点),让工具可被发现

2. 智能体通信#

当前问题:长时间运行任务的失败重试、结果保留时长缺乏明确定义。

解决方案:围绕智能体驱动的任务制定清晰的生命周期规则。

3. 治理成熟化#

当前问题:每个提案都需完整核心维护者审查,制约扩展速度。

解决方案:建立更清晰的决策结构和贡献者路径。

4. 企业准备就绪#

目标:支持企业级需求——审计跟踪、与企业身份系统绑定的身份验证、网关控制、可移植配置。

4.3 RAG 与 Skills 的协同#

在 2026 年 1 月的 OceanBase 社区嘉年华上,多位专家讨论了 RAG 与 Skills 的协同关系:

RAGFlow CEO 张颖峰

“单纯的 RAG 确实不足以服务 Agent,但 RAG 是服务 Agent 数据层的核心。Skills 本身也需要搜索——当企业内部有 1000 个 MCP 时,如何调用对应的 Tools 和 Skills 同样需要检索能力。因此 RAG 永远不会消失。”

FastGPT 负责人 余金隆

“Skills 出现后,以前需要写代码和 Webhook 连接的数据层,现在可以通过 Skills 实现。这对国内交付场景特别有价值——国内系统数据格式不统一、缺乏标准,交付同学以前需要写大量适配代码,现在通过 Skills 将数据标准化连接到平台。”

核心洞察

  • RAG 提供事实背景和检索能力
  • MCP 提供工具调用接口
  • Skills 封装业务逻辑和流程
  • 三者协同构成完整的 Agent 能力栈

五、最佳实践与安全建议#

5.1 MCP 安全配置#

最小权限原则

{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem",
"/Users/username/workspace/allowed-folder-only"]
}
}
}

使用 MCP 作为安全中介层:Dock Labs 的实践表明,MCP 可作为“安全适配层”,替代直接给 Agent API 密钥的方式:

graph LR A[Agent] --> B[MCP Server] B --> C{权限控制} C -->|允许的操作| D[API] C -->|禁止的操作| E[拒绝]

5.2 Skills 设计原则#

  1. 单一职责:一个 Skill 只完成一个明确的任务
  2. 清晰的输入输出:定义好参数和返回格式
  3. 错误处理:返回人类可读的错误信息
  4. 版本管理:Skills 文件夹包含元数据,便于追踪和复用

5.3 性能优化#

  • 缓存策略:对频繁调用的 MCP 工具增加缓存层
  • 异步执行:耗时操作(图表生成、邮件发送)异步处理
  • 连接池:复用 MCP Server 连接

六、未来展望#

6.1 从 Prompt 到系统工程#

2026 年的趋势清晰可见:Prompt 正在从“总指挥”退位为“触发器”。现代 AI 工程的核心是三个相互协作的引擎:

  • 记忆引擎:记住用户偏好和历史
  • 知识引擎(RAG):提供实时、准确的信息
  • 技能引擎(Skills):将复杂操作封装为标准化模块

6.2 MCP Apps 打开新可能#

MCP Apps 让 AI 从“对话助手”进化为“交互式工作台”。未来一年,我们可能看到:

  • 交互式游戏:直接在聊天窗口玩小游戏
  • 表单填写:Agent 生成表单,用户填写后提交
  • 审批流程:可视化审批界面,点击确认
  • 数据探索:动态图表,拖拽筛选

6.3 零 Skill 的 Agent?#

2026 年 1 月,云玦科技发布了“原位自进化”Agent 框架,能够从零开始自动创建工具,在 HLE 评测中一骑绝尘。研究团队发现,Agent 在处理约 4000 个任务后,工具数量收敛至 128 个——说明它学会了“够用就好”。

这可能预示着:未来 Agent 将不再需要人类预置 Skills,而是能在运行中自己进化出所需能力。

6.4 总结#

2026 年的 MCP 和 Skills 生态正在快速成熟:

  • MCP 成为 Agent 通信的事实标准,解决传输扩展、企业就绪等关键问题
  • Skills 从人工编写走向自动进化,EvoSkill 等框架让 Agent 能自我优化
  • MCP Apps 打破纯文本限制,让工具拥有交互式界面
  • 生态 涵盖从云服务商到开发工具的广泛支持

对于开发者而言,现在正是掌握这套技术栈的最佳时机。从今天起,尝试在项目中引入一个 MCP Server,或为团队封装第一个 Skill——你会发现,AI 应用的开发从未如此简单而强大。


本文内容基于 2026 年 3 月的技术生态编写。随着协议和框架的持续演进,建议关注 MCP 官方文档 获取最新更新。

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

MCP+skills使用生态
https://30790842.xyz/posts/mcpskills使用生态/
作者
岚崒
发布于
2026-03-28
许可协议
CC BY-NC-SA 4.0

目录