乐于分享
好东西不私藏

一文讲清 MCP:AI 应用连接外部世界的标准协议

一文讲清 MCP:AI 应用连接外部世界的标准协议

本篇章节目录:

  1. MCP 是什么
  2. MCP 解决的问题:别重复造轮子
  3. MCP 出现的背景
  4. MCP 是怎么工作的
  5. 接入现成的 MCP Server
  6. 构建自己的 MCP Server
  7. CLI 会取代 MCP 吗
  8. MCP 和 Skill 的区别
  9. 结语

AI 很聪明,但默认接不上你的真实工作环境。

  • 你问“我今天下午有哪些会议”,它不知道;
  • 你说“查一下公司数据库里这个客户最近的订单”,它查不了;
  • 你让它“给客户王经理发邮件”,它也做不到。

原因不复杂:模型学到的,是训练时就已经收集好的数据。训练结束后,它不会自动同步你的日历、公司数据库、本地文件,也不会天然拥有这些系统的访问权限。

所以问题不只是“AI 会不会回答”,而是:当 AI 需要读取外部数据、调用工具、执行操作时,能不能用一种受控、标准的方式接入真实工作环境。

MCP 要解决的,就是这个连接问题。

1 · MCP 是什么

MCP(Model Context Protocol,模型上下文协议)是一个让 AI 应用以统一方式连接外部工具和数据源的开源标准。

官网用了一个很形象的比喻:

MCP 就像 AI 应用的 USB-C 接口。

USB-C 把连接方式统一了。手机、电脑、显示器、电源,不用各自设计一套接口。

如果你用过 IDEA、VS Code 这类 IDE,还可以把它类比成 LSP。

LSP 出现前,编辑器和编程语言之间也是 M × N:VS Code 要支持 Python、Go、Rust,各写一套;JetBrains、Vim、Emacs 又各自再做一遍。

LSP 把“编辑器如何理解语言”抽成标准协议:语言方实现 language server,编辑器方实现 client,补全、跳转、诊断这些能力就能跨编辑器复用。

MCP 也是这个思路:把“AI 应用怎么连接外部工具和数据源”变成一套标准协议。

这样,AI 应用和外部系统之间,就有了一套共同的连接方式。

2 · MCP 解决的问题:别重复造轮子

没有统一标准时,AI 应用接外部工具,很容易变成一堆重复对接。

一个 AI 应用想接日历,要写一套;想接 Notion,再写一套;想接数据库,又是一套。换成另一个 AI 应用,这些连接往往还要重新适配。

这就是典型的 M × N 问题

  • M 个 AI 应用;
  • N 个外部工具和数据源;
  • 每个应用都要和每个工具单独对接。

MCP 想把它变成 M + N

  • AI 应用支持 MCP;
  • 工具和数据源提供 MCP Server;
  • 两边按同一套协议通信。

这样,新增一个工具或一个 AI 应用,都只是 +1,双方不用从头互相适配。

落到实际场景,大概是这样:个人 AI 助手接上你的日历和邮箱,就能帮你安排会议、起草回复;编程工具(像 Claude Code、Codex)接上 Figma 这类设计工具,就能照着设计稿生成网页;企业的对话机器人接上飞书,员工一句话就能总结群聊、查文档。

MCP 不替代日历、邮箱、设计工具或飞书。它做的是把它们的能力整理成 AI 应用能发现、能调用的形式:能读什么、能做什么、需要哪些参数、返回什么结果。

有了这层标准,AI 才能在授权范围内调用工具,而不只是回答问题。

3 · MCP 出现的背景

MCP 出现之前,模型会回答、会推理,但默认拿不到业务系统里的实时和私有数据,也不能直接调用外部工具。

这背后有两个限制。

第一,知识有截止时间。模型训练完成后,参数里的知识基本定型。今天的新闻、公司刚更新的订单、你临时加的会议,不会自动进到模型里。

第二,模型默认访问不了外部系统。它可以告诉你怎么查数据库、怎么处理 GitHub issue,但没有对应的工具和授权,它拿不到数据库记录,也改不了 GitHub 里的内容。

解决这两个问题,大体有两条路。

一条是继续把模型做强:更多训练数据、更强推理能力、更大的上下文窗口。但这条路有边界:训练数据总是来自过去,模型参数里也不会凭空装着你的私有数据。

另一条是从外部补能力。

RAG 和 Function Calling 是两种典型做法。

  • RAG:先从文档、知识库、数据库里检索资料,再交给模型回答。
  • Function Calling:让模型按结构化参数生成一次函数调用,再由应用执行对应函数,比如查天气、发邮件、查订单。

RAG 解决的是“先取资料再回答”;Function Calling 解决的是“按结构化参数调用外部能力”。MCP 更接近后者,但它想统一的不只是函数调用,而是 AI 应用连接外部工具和数据源的整套方式。

2023 年之后,各家都开始做工具调用和插件机制,但每个平台一套接法、每个应用一套工具描述格式。同一个工具想给不同客户端用,仍要反复适配。

MCP 要补的,就是这套可复用的标准。

2024 年 11 月,Anthropic 发布 MCP,把“AI 应用怎么连接外部工具和数据源”抽成开放协议。

到 2025 年,OpenAI、Google、微软、GitHub 等厂商陆续支持,MCP 也逐渐从 Anthropic 的项目变成更中立的行业标准。

2025 年 12 月,Linux Foundation 成立 Agentic AI Foundation,三个创始项目分别是 Anthropic 的 MCP、Block 的 goose、OpenAI 的 AGENTS.md,背后还有 Google、微软、AWS 等支持。

据这次公告,公开的 MCP Server 已超过 1 万个,官方 SDK(Python、TypeScript)月下载量超过 9700 万次。这也是目前官方给出的最新数据。

MCP 能成为行业共识,是因为大家都撞上了同一个问题:AI 应用越来越多,外部工具也越来越多,继续各接各的,集成成本会越来越高。AI 要进入真实工作流,需要一套大家都能复用的协议。

4 · MCP 是怎么工作的

MCP 的结构不复杂:用户使用的是 AI 应用,AI 应用里的 Client 连接 MCP Server,Server 提供工具和数据源,中间按 MCP 协议通信。

先看三个角色。

角色
它是什么
例子
Host
用户真正使用的 AI 应用
Claude Desktop、Claude Code、Codex
Client
Host 里负责连接某个 Server 的组件
由 Host 内部创建
Server
提供工具和数据源的程序
文件 Server、数据库 Server、GitHub Server、天气 Server

一个 Host 可以连接多个 Server,但不是一个 Client 管所有连接。更准确地说,Host 会为每个 Server 单独创建一个 Client。

比如 Claude Desktop 同时连接文件系统、GitHub、日历三个 Server,它内部就会有三个 Client,分别维护这三条连接。

Server 也不一定在云端。本地文件系统 Server,可能只是你电脑上被客户端拉起的一个子进程;GitHub 这类 Server,通常是远程 HTTP 服务。MCP 里的 Server,指的是“提供工具和数据源的一方”,不是“云服务器”。

Server 提供什么

MCP Server 对外暴露的核心能力,官方叫 primitives(可以理解成“基础能力”)。名字不用纠结,记住三类就够了:Tools、Resources、Prompts。

Tools:可调用的动作。

Tool 可以理解成 MCP Server 暴露给 AI 应用的一个“操作入口”:它背后可以是一项很小的查询,也可以是一段完整的业务能力。

比如天气 Server 里,“查询当前天气”就是一个 tool;GitHub Server 里,“创建 issue”、“查询 PR”也可以是 tool;数据库 Server 里,“查询订单数量”也可以是 tool。

这里的 tool 不是一个完整的软件,也不是 MCP 客户端。它更像一个标准化的函数:有名字、有说明、有参数、有返回。

比如一个天气 Server 可以提供一个 tool:

  • 名字:weather_current
  • 说明:查询某地当前天气
  • 参数:locationunits
  • 返回:天气结果

模型看到这些信息,才知道这个 tool 能做什么、什么时候该调用、调用时要传哪些参数。真正执行前,客户端通常还会让用户确认。

Resources:可读取的资料。

Resources 是 MCP Server 暴露出来的可读取上下文,比如文件内容、数据库表结构、日历记录。它负责“读”;要执行修改,通常走 Tools。

Prompts:可复用的任务模板。

Prompts 是 Server 预设好的任务模板,用来把某类常见任务包装成可选入口。它不会被模型自动触发,通常需要用户主动选用。

除了这三类 Server 能力,MCP 还有一些客户端侧能力,比如 Sampling、Elicitation、Roots、Logging。这里先不展开。理解主线时,抓住 Tools、Resources、Prompts 就够了。

一次工具调用流程

MCP 的消息格式基于 JSON-RPC 2.0。它是一套公开的通信规范,MCP 用它来组织请求和返回结果。

传输方式主要有两种:

传输方式
适合场景
怎么通信
stdio
本地 Server
客户端拉起子进程,通过标准输入输出传 JSON-RPC
Streamable HTTP
远程 Server
客户端通过 HTTP 连接 Server,必要时用 SSE 做流式返回

SSE 不是第三种传输。当前协议里,远程传输叫 Streamable HTTP;SSE 只是它可以使用的一种流式返回方式。旧版协议里的 HTTP+SSE 已经被 Streamable HTTP 取代。

它和普通 API 也不一样。

普通 API 通常是程序员读文档、写代码、固定调用。MCP 面向的是 AI 助手的工作过程:Client 可以先问 Server“你有哪些工具”,拿到工具名、说明和参数 schema,再由模型根据任务判断要不要调用。

所以 MCP 不是简单的“API 包装层”。一个 tool 背后可能是一个 API,也可能编排了多个 API,还可能是读本地文件、跑脚本、查数据库。

一次工具调用,大致是这样:

第一步,握手。Client 发送 initialize,和 Server 协商协议版本(当前是 2025-11-25)与双方能力。握手完成后,再发 notifications/initialized 表示准备就绪。

第二步,发现工具。Client 发送 tools/list,Server 返回可用工具列表,包括工具名、说明和参数 schema。

第三步,调用工具。比如用户问“北京现在天气怎么样”,模型判断需要天气工具,Host 就通过对应的 Client 发起 tools/call

{"jsonrpc""2.0","id"3,"method""tools/call","params"{"name""weather_current","arguments"{"location""Beijing","units""metric"}}}

Server 执行后返回结果:

{"jsonrpc""2.0","id"3,"result"{"content"[{"type""text","text""Current weather in Beijing: 20°C, partly cloudy..."}]}}

Host 把结果交回模型,模型再基于真实结果回答用户。

如果 Server 的工具列表发生变化,并且声明支持变更通知,它可以发送 notifications/tools/list_changed。Client 收到后,再重新 tools/list 刷新列表。

也就是说,MCP 是先发现能力,再按结构化参数调用,最后把结果交回模型。

安全与权限

MCP 让 AI 能连数据库、文件、GitHub,但它不等于“接上就安全”。安全边界主要靠协议、Server、客户端和用户配置一起控制。

远程 MCP Server 通常走 Streamable HTTP。需要访问受保护资源时,MCP 的标准授权机制基于 OAuth 2.1:Client 代表用户完成授权,拿到 access token 后访问受保护的 Server。

本地 stdio Server 不走这套 OAuth 授权流程,通常从环境变量读取凭据,比如 API key。

官方安全原则里,用户知情和控制权排在第一位:调用工具前、向 Server 暴露用户数据前,Host 都应该让用户明确知情并同意。但 MCP 协议本身不能强制这一点,最终还是看客户端怎么实现。客户端可以展示工具、要求单次确认、允许预批准低风险操作,也可以记录工具调用日志。

5 · 接入现成的 MCP Server

用 MCP,不一定要自己写 Server。很多 Server 已经有人写好了,你要做的是把它接到支持 MCP 的 AI 应用里。

先分两类:本地 Server 和远程 Server。

本地 Server:跑在你电脑上

本地 MCP Server 是你电脑上的一个程序。官方教程用 filesystem Server 举例:它把读目录、读写文件、移动文件、搜索文件这些能力,通过 MCP 暴露给 AI 应用。

你可能会问:有些 AI 应用本来就能操作本地文件,为什么还要 filesystem Server?

关键是标准化。filesystem Server 把文件访问封装成 MCP 工具,任何支持 MCP 的客户端都能用同一套方式接入;开放哪些目录、执行前要不要确认,也能统一管理。

以 Claude Desktop 为例,打开:

Settings → Developer → Edit Config

配置文件默认位置是:

macOS:~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:%APPDATA%\Claude\claude_desktop_config.json

写入类似这样的配置:

{"mcpServers"{"filesystem"{"command""npx","args"["-y","@modelcontextprotocol/server-filesystem","/Users/username/Desktop","/Users/username/Downloads"]}}}

这段配置的意思是:Claude Desktop 启动时,用 npx 拉起 @modelcontextprotocol/server-filesystem,并只允许它访问桌面和下载目录。

filesystem Server 的访问范围,由 args 里的目录路径决定。不要一上来就填 /Users/username 这类整个 home 目录,先给一个测试目录。

注意,本地 Server 以你的用户权限运行。你能手动操作的文件,它理论上也能操作,所以目录范围要收窄。

保存后,完全退出并重启 Claude Desktop。然后可以试:

帮我看看 Downloads 里有哪些 PDF。把桌面上的图片整理到一个新文件夹里。

执行文件操作前,Claude Desktop 通常会请求你确认。

远程 Server:跑在网上

远程 MCP Server 不装在你电脑上,而是由服务方托管。项目管理工具、文档系统、代码仓库、监控平台,都可以提供远程 MCP Server。

以 Claude 网页端为例,官方教程用的是 Custom Connectors:

Settings → Connectors → Add custom connector

然后填入远程 MCP Server 的 URL。这个 URL 通常由 Server 开发者或管理员提供,应该是完整的 https:// 地址。

接下来一般会进入认证流程,可能是 OAuth,也可能是 API key,取决于 Server 怎么实现。认证完成后,这个 Server 提供的资源、提示模板和工具,就可以出现在 Claude 会话里。你也可以在 connector 设置里控制哪些工具允许使用。

简单区分一下:

本地 Server:跑在你的电脑上,常用来访问本地文件、脚本、数据库。远程 Server:跑在服务方那里,常用来连接 SaaS、企业系统、云端数据。

去哪里找 MCP Server

优先看官方来源。

想找现成 MCP Server,先看 Registry;想学怎么写,再看 GitHub 仓库;想看更多生态,再看社区目录。

MCP Registry

目前还是 preview。它是官方用来发布和查找已发布 MCP Server 信息的入口。

地址:https://registry.modelcontextprotocol.io/

官方 GitHub 仓库

这个仓库不是用来“找 Server”的市场,而是官方维护的参考实现集合。它更适合开发者看示例:Server 怎么启动、怎么配置到客户端、Tools / Resources / Prompts 可以怎么写。

地址:https://github.com/modelcontextprotocol/servers

社区目录

社区目录适合看看生态里有什么,但不等于官方背书。

  • mcp.so:https://mcp.so/
  • Smithery:https://smithery.ai/
  • MCP Market:https://mcpmarket.com/zh

接入前检查三件事

第一,看权限。尤其是本地 Server,先确认它能访问哪些目录、系统能力或外部账号。

第二,看凭据。需要 API key 的 Server,不要把 key 写进文章、截图或公开仓库;配置文件本身也要注意权限和备份范围。

第三,看来源。社区目录不等于官方背书。接公司数据库、代码仓库、客户系统这类敏感资源时,要确认维护者、权限范围、审计能力和团队规范。

6 · 构建自己的 MCP Server

这一章偏开发者。如果你只是想用 MCP,不打算自己写 Server,可以直接跳到下一章。

什么时候需要自己写?通常是这两种情况:

  • 你要把内部 API、数据库查询、业务流程包装出来;
  • 你希望同一套能力被多个 AI 客户端复用。

MCP Server 做的事,可以简单理解成一句话:

把已有能力,包装成 Tools / Resources / Prompts。

多数时候,开发者最先写的是 Tools,也就是可调用的动作。

官方 build-server 教程用的是一个天气 Server。它提供两个工具:

  • get_alerts:查询美国某个州的天气警报;
  • get_forecast:根据经纬度查询天气预报。

最小代码长什么样

MCP Server 不限定语言。MCP 是协议,不是某个语言框架;只要按协议通信,任何语言都能实现 MCP Server。

官方提供了 TypeScript、Python、C#、Go、Java、Rust、Swift、Ruby、PHP、Kotlin 等语言的 SDK。SDK 是按语言提供的,用对应 SDK 会省掉很多协议细节。

这一章用 Python,是因为官方 build-server 教程也用 Python,代码短,便于看清 MCP Server 的基本结构。核心是 FastMCP 和 @mcp.tool()。完整项目初始化可以看官网,这里只看代码骨架。

from mcp.server.fastmcp import FastMCPmcp = FastMCP("weather")@mcp.tool()async def get_alerts(state: str) -> str:"""Get weather alerts for a US state."""# 这里写查询 NWS API 的业务逻辑    ...@mcp.tool()async def get_forecast(latitude: float, longitude: float) -> str:"""Get weather forecast for a location."""# 这里写根据经纬度查询天气预报的业务逻辑    ...if __name__ == "__main__":    mcp.run(transport="stdio")

关键就几处:

  • FastMCP("weather"):创建一个 MCP Server;
  • @mcp.tool():把普通 Python 函数注册成 MCP tool;
  • 函数参数和 docstring:会被 SDK 用来生成工具说明和参数 schema;
  • mcp.run(transport="stdio"):用 stdio 方式运行,适合本地客户端拉起。

协议细节交给 SDK,你主要写业务函数。

接到 Claude Desktop 测试

通过 uv run weather.py 启动刚才写的 MCP Server。

接入 Claude Desktop,配置:

{"mcpServers"{"weather"{"command""uv","args"["--directory","/ABSOLUTE/PATH/TO/PARENT/FOLDER/weather","run","weather.py"]}}}

/ABSOLUTE/PATH/TO/PARENT/FOLDER/weather 换成你的项目绝对路径。

保存配置后,重启 Claude Desktop。连接成功后,Claude 就能看到 get_alerts 和 get_forecast 两个工具。可以问:

CA 现在有哪些天气警报?37.7749, -122.4194 这个坐标的天气预报是什么?

stdio 的坑:日志别写 stdout

如果 Server 用 stdio 传输,stdout 是 JSON-RPC 协议通道。随手写一行:

print("server started")

就可能污染协议消息,导致客户端解析失败。

日志写到 stderr:

import sysprint("server started", file=sys.stderr)

或者用 logging 写到 stderr / 文件。HTTP 传输的 Server 没这个问题。

业务里怎么拆工具

天气 demo 只是例子。实际业务里,你可以把这些能力包装成 MCP tool:

  • 查询公司订单;
  • 读取内部知识库;
  • 创建工单;
  • 生成报表。

什么时候适合把一个能力做成 MCP tool?

看它是不是需要被 AI 应用稳定调用,或者被多个客户端复用。

比如查询订单、创建工单、读取知识库、生成报表,都可以做成一个个 tool。AI 应用需要知道这个 tool 能做什么、要传什么参数、调用后会发生什么:只是查询,还是会创建、修改、发送内容。

不要把所有能力塞进一个“大而全”的 tool。更好的方式是拆成几个边界清楚的小工具。工具越清楚,模型越容易选对,用户也越容易判断它到底要做什么。

写 MCP Server,不是重写系统,而是给已有能力加一层标准接口。

7 · CLI 会取代 MCP 吗

CLI 是 Command Line Interface,也就是命令行接口。很多工具本来就带 CLI,比如 gitghffmpeg

MCP 一度被很多人看作 Agent 接工具的标准方式:工具做成 Server,AI 应用按统一协议调用。但到 2025 年底、2026 年初,越来越多开发者又开始重新看向 CLI。

2026 年 3 月,Agent-Engineering.dev 有文章称,Perplexity 内部正在减少 MCP 的使用,更多转向普通 API 和 CLI。文章提到的原因包括上下文开销、认证复杂度和生产环境稳定性。

这不是 Perplexity 官方公告,但它指出了一个值得重视的工程问题:MCP 不是所有场景的默认答案。

CLI 的优势

CLI 最大的优势,是少占上下文,也就是更省 token。

用 MCP 时,Server 提供哪些工具、每个工具叫什么、参数是什么、返回什么,通常都会进入大模型上下文。工具一多,这些说明本身就会占大量的 token。

有测算称,官方 GitHub MCP Server 约 90 个工具,光工具定义就要占掉大约 5 万 token。一个 20 万 token 的上下文窗口,还没开始做正事,就已经用掉两成左右。

工具定义不是唯一开销。工具之间传递的中间结果也会占 token:先用一个工具取回长文档,再交给另一个工具处理,这份文档可能会在上下文里来回出现。

CLI 没有这层固定开销。Agent 需要什么,就运行什么命令;结果太长,也可以用 grepheadjq、管道或临时脚本先处理一遍,再把精简后的结果交给模型。

第二个优势,是执行效率高。

CLI 可以直接调用本机已有命令,不需要再经过一层 MCP Server。命令之间还能管道、拼接、批处理:

gh issue list --state open | head -20ffmpeg -i input.mp4 output.mp3

CLI 也更灵活。今天按文件名筛选,明天按时间筛选,改一下命令就行。MCP 也可以把一串流程封装成一个 tool,但需求一变,tool 可能就要改。对本地、临时、开发者场景来说,CLI 往往更快、更方便。

不过,CLI 有个前提:客户端得能跑命令。

Claude Code、Codex 这类编程 Agent 可以用 shell;很多网页端、聊天型 AI 应用没有你的本地终端,也不能随便安装命令行工具。前提一变,CLI 的优势就不一定成立。

MCP 的优势

第一,跨客户端复用。

同一个 MCP Server,可以接给 Claude Code、Cursor、Codex、网页助手。客户端只要支持 MCP,就能按同一套协议接入。

第二,更可控。

CLI 给 Agent 的是一个 shell,能做的事太多;MCP 给的是一组明确的 tool。每个 tool 能做什么、要传什么参数、会返回什么结果,都可以提前写清楚。客户端也可以在真正执行前让用户确认。

第三,安全边界更清楚。

这里不是说 MCP 天然安全,而是更容易把风险收住:只暴露该暴露的 tool,限制读写范围,调用前让用户确认,必要时留下调用记录。相比让模型直接执行任意命令,这种方式更容易控制风险。

第四,复杂认证更适合放在 MCP 里。

远程 MCP Server 可以按规范走 OAuth 2.1,让每个用户自己授权,拿到各自的 access token。CLI 也能做认证,但通常依赖本机凭据、环境变量或个人 token;到了多人、多客户端、企业系统里,管理成本会变高。

第五,更适合长期运行的服务。

比如连接池、会话状态、长任务、持续运行的业务服务,都可以放在常驻 Server 里。CLI 不是完全做不到,它也可以调后台服务;只是做到这一步,CLI 往往已经不再是简单命令,而是在命令背后又藏了一套服务。

不是取代,是分工

所以,CLI 不会简单取代 MCP。

本地、个人、开发者场景里,CLI 的比重会越来越高。它省上下文、执行快、改起来灵活。

云端、企业、多客户端、强权限控制的场景里,MCP 仍然有价值。它不只是“调用一个工具”,而是把工具、数据和业务能力用一套标准接口交给 AI 应用。

两者也不是非要二选一。Anthropic 提出过“用代码调用 MCP”的做法:MCP Server 还在,但不再一次性把所有工具定义塞进模型上下文,而是把工具包装成代码接口,让 Agent 写代码、按需加载用到的工具。他们给出的例子里,某个流程的 token 从 15 万降到 2 千。

所以,与其问“CLI 会不会取代 MCP”,不如问:这个场景里,直接调 CLI 更合适,还是把能力做成 MCP Server 更合适。

8 · MCP 和 Skill 的区别

前面讲 Skill 的文章发出去后,评论区有位读者问了个很好的问题。

大意是:

  • MCP 和 Skill 看起来都像“能力”,是不是内部自己用就做 Skill,给外部用就做 MCP?
  • 如果一个 MCP Server 封装的是完整订票流程,它还算不算“连接工具和数据源”?

这个问题很典型。MCP 和 Skill 确实都会增强 Agent,但分界不在“内部还是外部”,也不在“功能简单还是复杂”。

Skill 是什么

这里说的 Skill,指的是 Agent skills。

Skill 的核心,是把一类任务需要的知识、流程和工具,打包成 Agent 可以按需加载的技能包。它通常是一个文件夹,里面有 SKILL.md,再配上相关指令、脚本和资料。

Skill 的重要设计是渐进式加载:平时只暴露简短说明,等任务相关时,再读取更完整的步骤、脚本和资料。

你可以把它理解成一份任务手册。

比如:

  • 做代码审查:看哪些文件、按什么顺序检查、输出什么格式;
  • 处理发票:识别哪些字段、怎么校验金额、异常怎么标记;
  • 写周报:按什么结构、从哪些资料取信息、语气怎么控制。

这些解决的不是“怎么连接外部系统”,而是“这类任务该怎么做”。

MCP 和 Skill 的区别在哪

核心区别可以这样看:

MCP 把能力变成可调用的接口;Skill 把做事方法整理成可按需加载的技能包。

拿“订票”举例。

如果做成 MCP,Server 可以暴露一个 book_ticket 工具。这个工具内部可以很薄,只是转发订票 API;也可以很厚,把查班次、比价、下单、写日历、发通知整套流程跑完。只要它通过 MCP 暴露成可调用的 tool,它就是 MCP 里的能力。

如果做成 Skill,它更像一份差旅手册:出差前先查日历冲突,按公司政策选舱位,订完后通知团队。它不直接替你订票,而是告诉 Agent 怎么把这件事做对。

所以,“MCP 连接外部工具和数据源”这个说法没错,但这里的“工具”可以很宽。它不一定只是底层 API,也可以是封装好的完整业务流程。

Skill
MCP
它是什么
一份“怎么做”的方法
一套“怎么调用”的接口
Agent 怎么用
读取,照着做
调用,拿结果
解决的问题
这类任务怎么做对
外部能力怎么接入

不是二选一

真实场景里,经常是 Skill 出方法,MCP 出能力。

比如一个“差旅助手”:

  • Skill 负责方法:什么时候该订、订什么档、订完通知谁;
  • MCP 负责能力:查航班、订票、查酒店、写入日历。

Skill 里也可以带脚本,但它仍然是“任务手册”的一部分:告诉 Agent 什么时候用、怎么用、结果怎么处理。

MCP 则是另一层。它把外部系统包装成标准接口,让不同客户端都能发现和调用。

该用哪个

  • 接不上、拿不到、调不了:用 MCP。比如查数据库、读 GitHub issue、操作文件、连监控平台。
  • 拿得到,但不知道怎么处理:用 Skill。比如代码审查流程、发票处理规范、报告模板、工单分类规则。
  • 既要外部能力,又要固定方法:MCP + Skill 一起用。

不要把 Skill 当 MCP 的替代品。

Skill 能带脚本,也能指导 Agent 调 CLI;在本地任务里,它确实能覆盖一部分原本要靠 MCP 的场景。但 Skill 不是连接协议。它给不了远程授权机制,也没法让不同 AI 客户端复用同一个外部接口。

反过来,MCP 也不替你沉淀业务经验。它能告诉 Agent 有个 book_ticket 工具,却不知道你们公司“谁能订商务舱”的规矩。

9 · 结语

MCP 解决的是连接问题:当 AI 要进入真实工作环境,能不能用一套标准方式,接上文件、数据库、业务系统和各种工具,而不是每个应用、每个工具都重新适配一遍。

这也是判断要不要用 MCP 的关键。

如果只是本地一次性任务,CLI 可能更顺;如果是一类任务的方法论,Skill 更合适;如果你缺的是连接、复用和权限边界,MCP 才有意义。

AI 要从聊天框走进真实工作流,靠的不只是更强的模型,也需要一套能让它稳定、可控地连接外部世界的接口。

MCP 补上的,就是这层连接。

持续输出 AI 相关内容,欢迎关注本号。也欢迎在评论区交流。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-06-26 21:10:39 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/805031.html
  2. 运行时间 : 0.108546s [ 吞吐率:9.21req/s ] 内存消耗:4,780.60kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=48338f1c9ff00ba5e57e52b898348470
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000461s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000571s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000301s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000288s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000495s ]
  6. SELECT * FROM `set` [ RunTime:0.000199s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000571s ]
  8. SELECT * FROM `article` WHERE `id` = 805031 LIMIT 1 [ RunTime:0.010879s ]
  9. UPDATE `article` SET `lasttime` = 1782479439 WHERE `id` = 805031 [ RunTime:0.010329s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000373s ]
  11. SELECT * FROM `article` WHERE `id` < 805031 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000530s ]
  12. SELECT * FROM `article` WHERE `id` > 805031 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000542s ]
  13. SELECT * FROM `article` WHERE `id` < 805031 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000805s ]
  14. SELECT * FROM `article` WHERE `id` < 805031 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000822s ]
  15. SELECT * FROM `article` WHERE `id` < 805031 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.000759s ]
0.110328s