乐于分享
好东西不私藏

MCP 协议:让 AI 真正"会用工具"的那把钥匙

MCP 协议:让 AI 真正"会用工具"的那把钥匙
技术分享

MCP 协议:让 AI 真正"会用工具"的那把钥匙

约 5000 字 · 面向开发者,含完整 Python 代码 · 读完约需 20 分钟
1 一个让我心态崩了的下午

去年某个下午,我在接入一个 AI 助手,想让它能查我们公司内部的工单系统。

理论上很简单——写个函数,传参数,返回结果,告诉 AI"你有这个工具可以用",完事。

但实际上,我在以下问题上来回折腾了整整一个下午:API 参数格式不同模型的 function calling 定义方式不一样;上下文传递,工具返回的结果怎么塞回给 AI,每家有每家的规范;还有鉴权,我的 API key 放哪?怎么安全地让 AI 用?

最后我拼凑出了一个能跑的东西,但那个代码……我只能说,希望以后没人看到它。

这个问题不是我一个人遇到。2024 年之前,所有想给 AI 接外部工具的开发者,都在用各自的方式解决同一批问题。这意味着:每换一个 AI 模型,就得重新写一遍工具集成代码

直到 Anthropic 在 2024 年 11 月发布了 MCP。

2 MCP 到底是什么?

MCP,全称 Model Context Protocol(模型上下文协议)。名字听起来抽象,我用一个类比来说清楚:

类比: 你有没有想过,为什么 U 盘插哪台电脑都能用?因为有 USB 协议。所有设备遵循同一套标准,所以"插就能用",不需要为每台电脑单独适配驱动。

MCP 想做的事是一样的——让 AI 接任何工具,都只需要一套统一的方式,不需要为每个 AI 模型单独适配。

更正式地说:MCP 是一个开放协议,定义了 AI 应用(Host)、AI 模型客户端(Client)和外部工具服务(Server)之间怎么通信。

架构图:三个角色,两条通道

🏠 你的应用(Host)

Claude Desktop · Cursor · 你的 AI 产品

🔌 MCP Client

内嵌在 Host 里 · 建连接 · 发请求 · 能力协商

JSON-RPC 2.0

MCP Server(各管一摊工具)

🎫

Server A

工单系统
(你自己写的)

🗄️

Server B

数据库
(社区开源的)

🐙

Server C

GitHub
(官方提供的)

你的应用(Host)通过内置的 MCP Client,用标准协议连接各种 MCP Server,每个 Server 封装了一类工具能力。

3 三个核心概念深讲
角色 说明
Host 用户直接使用的 AI 应用。比如 Claude Desktop、Cursor、你自己开发的 AI 产品。它负责维护 MCP Client 实例,把用户请求路由到合适的 Server。
MCP Client 跑在 Host 里的协议层。维护和每个 Server 的 1:1 连接,处理协议握手、能力协商(告诉 AI "这个 Server 有哪些工具")、消息序列化。
MCP Server 暴露具体工具能力的服务。可以是一个本地进程,也可以是远程 HTTP 服务。你写的工具逻辑就在这里。

MCP Server 能暴露三类东西:

类型 说明 例子
Tools(工具) AI 可以主动调用的函数,执行有副作用的操作 查工单、发邮件、写文件
Resources(资源) AI 可以读取的数据,类似文件系统或数据库 读取配置文件、获取文档内容
Prompts(提示模板) 预定义的 prompt 模板,用户可以直接使用 代码审查模板、报告生成模板
4 通信协议:深入 JSON-RPC 2.0

MCP 底层用的是 JSON-RPC 2.0 协议,传输层支持 stdio(本地进程)和 HTTP with SSE(远程服务)两种。一次完整的工具调用,消息流大概长这样:

// 1. 初始化握手:Client 向 Server 发送
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "initialize",
  "params": {
    "protocolVersion": "2024-11-05",
    "clientInfo": { "name": "MyApp", "version": "1.0.0" }
  }
}

// 2. Client 查询可用工具列表
{ "jsonrpc": "2.0", "id": 2, "method": "tools/list" }

// 3. AI 决策后,Client 调用具体工具
{
  "jsonrpc": "2.0",
  "id": 5,
  "method": "tools/call",
  "params": {
    "name": "get_ticket",
    "arguments": { "ticket_id": "TK-2024-001" }
  }
}
5 动手写一个 MCP Server(完整示例)

理论讲完,上代码。我们来写一个工单查询 MCP Server,包含两个工具:查询工单详情、列出未解决工单。

环境准备:Python 3.10+,安装依赖:

pip install mcp

完整的 server.py

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# ticket_server.py — 工单查询 MCP Server

from mcp.server import Server
from mcp.server.stdio import stdio_server
from mcp.types import Tool, TextContent, CallToolResult, ListToolsResult
import json

# ─── 模拟数据库 ──────────────────────────────────────────
MOCK_TICKETS = {
    "TK-001": {
        "id": "TK-001",
        "title": "登录页面报 500 错误",
        "status": "open",
        "priority": "high",
        "assignee": "张伟",
        "description": "用户反映使用微信登录时偶现 500,已复现两次,影响约 3% 用户。"
    },
    "TK-002": {
        "id": "TK-002",
        "title": "导出功能无法下载 Excel",
        "status": "in_progress",
        "priority": "medium",
        "assignee": "李娜",
        "description": "点击导出后浏览器无反应,控制台有 CORS 报错。"
    },
    "TK-003": {
        "id": "TK-003",
        "title": "首页加载时间超过 8 秒",
        "status": "open",
        "priority": "high",
        "assignee": "未分配",
        "description": "Performance 测试显示 FCP 达到 8.2s,需要排查图片和接口。"
    },
}

# ─── 创建 Server 实例 ─────────────────────────────────────
app = Server("ticket-server")


# ─── 声明工具列表 ─────────────────────────────────────────
@app.list_tools()
async def list_tools() -> ListToolsResult:
    return ListToolsResult(tools=[
        Tool(
            name="get_ticket",
            description="根据工单 ID 查询工单详情,包括标题、状态、优先级、负责人和描述。",
            inputSchema={
                "type": "object",
                "properties": {
                    "ticket_id": {
                        "type": "string",
                        "description": "工单 ID,格式如 TK-001"
                    }
                },
                "required": ["ticket_id"]
            }
        ),
        Tool(
            name="list_open_tickets",
            description="列出所有未关闭的工单(状态为 open 或 in_progress),支持按优先级筛选。",
            inputSchema={
                "type": "object",
                "properties": {
                    "priority": {
                        "type": "string",
                        "enum": ["high", "medium", "low"],
                        "description": "按优先级筛选,不传则返回全部未关闭工单"
                    }
                },
                "required": []
            }
        )
    ])


# ─── 实现工具逻辑 ─────────────────────────────────────────
@app.call_tool()
async def call_tool(name: str, arguments: dict) -> CallToolResult:
    if name == "get_ticket":
        ticket_id = arguments.get("ticket_id", "").upper()
        ticket = MOCK_TICKETS.get(ticket_id)
        if not ticket:
            return CallToolResult(
                content=[TextContent(type="text", text=f"工单 {ticket_id} 不存在")],
                isError=True
            )
        status_map = {"open": "待处理", "in_progress": "处理中", "closed": "已关闭"}
        priority_map = {"high": "高", "medium": "中", "low": "低"}
        result = (
            f"工单详情\n════════════\n"
            f"ID:{ticket['id']}\n"
            f"标题:{ticket['title']}\n"
            f"状态:{status_map.get(ticket['status'])}\n"
            f"优先级:{priority_map.get(ticket['priority'])}\n"
            f"负责人:{ticket['assignee']}\n"
            f"描述:{ticket['description']}"
        )
        return CallToolResult(content=[TextContent(type="text", text=result)])

    elif name == "list_open_tickets":
        priority_filter = arguments.get("priority")
        open_tickets = [
            t for t in MOCK_TICKETS.values()
            if t["status"] in ("open", "in_progress")
            and (priority_filter is None or t["priority"] == priority_filter)
        ]
        lines = [f"共找到 {len(open_tickets)} 个未关闭工单:\n"]
        for t in open_tickets:
            badge = {"high": "[高]", "medium": "[中]", "low": "[低]"}
            lines.append(f"{badge.get(t['priority'],'')} {t['id']} — {t['title']} ({t['assignee']})")
        return CallToolResult(content=[TextContent(type="text", text="\n".join(lines))])


# ─── 启动入口 ─────────────────────────────────────────────
if __name__ == "__main__":
    import asyncio
    asyncio.run(stdio_server(app))
6 接入 Claude Desktop:完整配置步骤

代码写好了,怎么让 Claude Desktop 用上它?分四步:

第一步:找到配置文件

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

第二步:编辑配置,添加你的 Server

{
  "mcpServers": {
    "ticket-server": {
      "command": "python",
      "args": ["/你的绝对路径/ticket_server.py"],
      "env": {
        "PYTHONPATH": "/你的绝对路径"
      }
    }
  }
}

第三步:完全退出并重启 Claude Desktop
注意是完全退出,不是最小化。macOS 用 Cmd+Q,Windows 从托盘右键退出。

第四步:验证
打开 Claude Desktop,在输入框附近应该能看到工具图标。发送"帮我查一下工单 TK-001 的详情",AI 会自动调用你的 Server。

7 常见坑与解决方案

坑 1:Claude Desktop 启动后看不到工具图标

多半是 Server 启动失败了。最常见原因是 python 路径写的是 python 但系统默认的是 python3,改一下 command 字段。

坑 2:工具调用成功,但返回乱码

Python 文件头没加 # -*- coding: utf-8 -*-,或者 Windows 下终端编码不是 UTF-8。加上 sys.stdout.reconfigure(encoding='utf-8')

坑 3:AI 有时候不调用工具,直接瞎编答案

Tool 的 description 写得不够清晰。AI 是靠 description 来判断"什么情况该用什么工具"的。要写得具体,说清楚"输入什么、输出什么、在什么场景下用"。

坑 4:本地跑没问题,配置进 Claude 就报错

大概率是路径问题。配置文件里必须用绝对路径,不能用 ~/ 或相对路径。另外,venv 虚拟环境里安装的包,command 要指向 venv 里的 python 可执行文件,不是系统全局的。

8 生态现状:MCP 正在成为标准

截至 2026 年上半年,MCP 的生态已经相当活跃:

官方 Anthropic 官方维护了 filesystem、GitHub、Google Drive、Slack、PostgreSQL 等十几个常用 Server,代码都在 GitHub 上开源,直接拿来用就行。
IDE Cursor、VS Code(GitHub Copilot)、Zed 都已经支持 MCP,在 IDE 里接自定义工具变成了标配能力。
社区 awesome-mcp-servers 仓库收录了数百个社区维护的 MCP Server,覆盖 Notion、Jira、Figma、各类数据库等等,基本上你想要的都有人写过了。
竞争 Google、OpenAI 也在推自己的工具调用标准,但 MCP 先发优势明显,目前社区接受度最高。很可能像 USB 一样成为实际标准。
9 总结:三行字带走

MCP 是什么: AI 调用外部工具的通用协议,类比 USB。

核心架构: Host(你的应用)→ Client(协议层)→ Server(工具实现),三者通过 JSON-RPC 2.0 通信。

你现在能做什么: 给你的内部系统写一个 MCP Server,接进 Claude Desktop,从今天开始把 AI 变成真正会用工具的助手。

推荐阅读: 官方文档 modelcontextprotocol.io | 官方 Server 示例仓库 github.com/modelcontextprotocol/servers

MCP 解决的不是"AI 能不能用工具"的问题,
而是"AI 用工具能不能标准化"的问题。
前者是能力,后者才是生产力。

技术分享系列 · 代码已在 Python 3.12 + mcp 1.x 验证 · 如有问题欢迎留言讨论

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-06-20 01:44:50 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/769920.html
  2. 运行时间 : 0.086975s [ 吞吐率:11.50req/s ] 内存消耗:4,808.55kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=7badceb8a848b29a81ae734f8725eed1
  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.000479s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000799s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000316s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000305s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000497s ]
  6. SELECT * FROM `set` [ RunTime:0.000224s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000579s ]
  8. SELECT * FROM `article` WHERE `id` = 769920 LIMIT 1 [ RunTime:0.000687s ]
  9. UPDATE `article` SET `lasttime` = 1781891090 WHERE `id` = 769920 [ RunTime:0.000775s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000302s ]
  11. SELECT * FROM `article` WHERE `id` < 769920 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000692s ]
  12. SELECT * FROM `article` WHERE `id` > 769920 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000590s ]
  13. SELECT * FROM `article` WHERE `id` < 769920 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001248s ]
  14. SELECT * FROM `article` WHERE `id` < 769920 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001315s ]
  15. SELECT * FROM `article` WHERE `id` < 769920 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.002550s ]
0.088756s