当前位置:首页>python>用Python写一个MCP Server:让你的脚本变成AI Agent的工具

用Python写一个MCP Server:让你的脚本变成AI Agent的工具

  • 2026-06-27 22:57:12
用Python写一个MCP Server:让你的脚本变成AI Agent的工具

你手上有十几个Python脚本,能查数据库、能发通知、能生成报表。每个都跑得好好的。但AI叫不动它们。

你在Claude里打一句"帮我查一下库存预警",Claude说它没法访问你的数据库。你在GPT里说"把昨天的日志汇总发给我",GPT建议你手动导出。

说白了,你的脚本就像老房子里的家电——能干活,但没接入智能家居系统。灯得手动开,空调得自己调,洗衣机得走过去按启动。而MCP Server,就是那个智能插座。

MCP是什么:一个让AI"插电"的协议

MCP全称Model Context Protocol,2024年底由Anthropic发布,2026年已经成为AI工具调用的事实标准。

它的架构三件套:

  • Host
    AI应用本身,比如Claude Desktop、Cursor、ChatGPT
  • Client
    Host内部的MCP客户端,负责跟Server通信
  • Server
    你写的服务端,暴露工具给AI调用

换成智能插座的比喻就清楚了。你的家电(Python脚本)插在智能插座(MCP Server)上,智能插座通过智能家居协议(MCP协议)跟中央控制器(Host里的Client)对话。你对着音箱喊一句"开灯",信号走协议到插座,插座通电,灯亮。

这里有个容易忽略的事:智能插座并不改变家电本身的功能。灯还是那盏灯,空调还是那台空调。插座做的事情是把家电接入一个统一的控制网络。同样的道理,MCP Server不会增强你的脚本功能,查库存的脚本还是查库存,发邮件的脚本还是发邮件。Server做的是把脚本的能力翻译成AI能理解的格式,然后暴露出去。

再推一步:智能插座真正厉害的地方,不是让你能手机远程开灯,而是让中央控制器能编排场景。"回家模式"一句话,灯亮、空调开、窗帘拉上,三个设备联动。MCP Server也一样,它让AI能编排工具链:"查库存、低于阈值就发通知、通知里附上补货链接",三个工具串起来变成一个自动化流程。

但真正的坑不在协议本身。在你根本不知道协议长什么样之前,就已经在重复造轮子了。

之前我们怎么干的

之前团队想让AI调用内部数据库,方案是写REST API。Flask起个服务,/query接参数,返回JSON。看起来没问题?

问题来了。Claude要调,得写一个plugin descriptor。GPT要调,得配一个OpenAPI spec。内网另一个AI要调,又得按它的格式来一遍。三个AI,三套对接文档,每次改接口还得同步三处。

改成MCP Server后,所有支持MCP的AI都能直接调。一次开发,到处运行。那天下午我把REST API改成MCP Server,Claude Desktop配了30秒就能用了。第二天同事在Cursor里也配上了,零额外开发。同一个Server,两个AI客户端,不用改一行代码。这就是标准化协议的力量。

智能插座的价值在哪?让中央控制器能调度所有家电。MCP Server也一样,让AI Agent能编排所有工具。家电本身没变强,灯还是那盏灯;脚本本身没变强,查库存还是查库存。变的是谁能调它们。

动手:写一个完整的MCP Server

用Python MCP SDK写一个Server,分四步:装包、写工具、注册Schema、启动服务。别被这四步吓到,实际代码量加起来不超过50行。

第一步:装SDK

pip install mcp

就一个包。2026年的SDK版本已经稳定到1.x,API基本不会大变了。如果你用uv管理虚拟环境,把pip换成uv pip就行,没啥区别。

第二步:写一个查库存的工具

from mcp.server.fastmcp import FastMCPmcp = FastMCP("inventory-server")@mcp.tool()def check_inventory(sku: str, warehouse: str = "default") -> str:    """查询指定SKU在指定仓库的库存数量"""    stock = query_db(sku, warehouse)    return f"SKU {sku} 在 {warehouse} 仓库库存: {stock}件"

三行有效代码,一个工具就注册完了。FastMCP是SDK提供的高层封装,装饰器@mcp.tool()自动把函数签名转成MCP工具描述。

第三步:参数Schema——这里踩过坑

MCP用JSON Schema描述参数。SDK会从函数签名自动生成,但有个问题:自动生成的Schema精度不够。

看这段代码的warehouse参数,默认值是"default"字符串。自动生成的Schema会把它标记为string类型,但AI不知道"default"是什么意思,也不知道还有哪些仓库可选。

我之前就踩了这个坑。AI调用时传了warehouse="主仓库",结果查不到数据——我们的系统里只有"bj01""sh02"这种编码。AI怎么知道?它不知道。

正确做法:用enum约束可选值,用description说明含义。

from pydantic import Field@mcp.tool()def check_inventory(    sku: str = Field(description="商品SKU编码,如'SHIRT-001'"),    warehouse: str = Field(        default="bj01",        description="仓库编码",        pattern="^(bj01|sh02|gz03)$"    )) -> str:    """查询指定SKU在指定仓库的库存数量"""    stock = query_db(sku, warehouse)    return f"SKU {sku} 在 {warehouse} 仓库库存: {stock}件"

Schema越精确,AI调错的可能性越低。这条经验我调了三个晚上才想明白:AI够聪明,但你得告诉它边界在哪。

第四步:启动

if __name__ == "__main__":    mcp.run()

mcp.run()默认用stdio模式,Host通过标准输入输出跟你通信。这是最简单的方式,不需要起HTTP服务,不需要配端口。

但如果你想让多个Host同时连,或者想通过网络远程调用,就得换SSE模式:

mcp.run(transport="sse", host="0.0.0.0", port=8080)

两种模式各有适用场景。本地开发用stdio,生产部署用SSE。别在本地调试时用SSE,端口冲突会搞得你怀疑人生。

还有一个细节:stdio模式下,每次Host启动都会spawn一个Server进程。如果你在Server里做了耗时的初始化(比如加载模型、连接数据库),每次启动都会卡一下。解决办法是把初始化放到工具调用时做lazy loading,而不是进程启动时。

对接实测:Claude、GPT、Cursor三连

写完Server只是半程。另一半是让AI真的能调起来。你猜怎么着?对接比写Server还快。

Claude Desktop

编辑claude_desktop_config.json

{  "mcpServers": {    "inventory": {      "command": "python",      "args": ["path/to/your/server.py"]    }  }}

重启Claude Desktop,工具自动出现。你会在聊天框下方看到一个小锤子图标,点开能看到你注册的所有工具。输入"帮我查一下SHIRT-001在北京仓库还有多少",Claude会调你的工具,返回结果。整个过程不到两分钟。

Cursor

在项目根目录创建.cursor/mcp.json,格式一样。Cursor 2026年的版本已经原生支持MCP,不需要装任何插件。

ChatGPT / GPT-4o

OpenAI在2026年初接入了MCP协议,走SSE模式。你要把Server部署到公网可访问的地址,然后在ChatGPT的MCP设置里填URL。这意味着你的代码会暴露在公网,记得加认证。MCP协议本身不包含鉴权层,这是你自己的事。

这里有个容易忽略的细节:SSE模式下,工具的响应时间直接影响AI的等待体验。如果你的脚本要跑10秒,AI会等10秒,用户也会等10秒。解决办法:耗时操作做成异步,先返回"任务已提交",再通过另一个工具查结果。

踩坑清单:四个我替你踩过的雷

返回值必须是字符串

MCP工具的返回值类型是list[TextContent],但FastMCP做了封装,你的函数返回str就行。别返回dict或list,会报序列化错误。如果你必须返回结构化数据,用json.dumps()转成字符串。

工具数量别超过50个

我试过一个Server注册了80多个工具,结果Claude调用时经常选错工具。AI在面对太多选项时表现会下降,这跟人一样。拆成多个Server,每个Server负责一个领域,5-15个工具最佳。

错误信息写给谁看?AI,不是开发者

raise ValueError(f"Database query failed: {e}")return f"查询失败:SKU {sku} 不存在或仓库 {warehouse} 未配置。请检查输入参数。"

为什么?因为AI读到错误信息后要决定下一步怎么走。你给它一个Python traceback,它大概率会原样甩给用户。你给它一句"请检查输入参数",它可能会换个参数重试。错误信息就是你跟AI之间的接口协议。

description是AI唯一的说明书

AI调你的工具时,只看两个东西:工具名和description。没有文档页面,没有示例代码,没有同事口头说明。这就好比你家的智能插座上只贴了一个标签,标签上写什么,音箱就只能理解什么。

所以description要写清楚三件事:这个工具做什么、需要什么参数、什么情况下不该用。缺了任何一条,AI都可能误用。

@mcp.tool()def delete_inventory(    sku: str = Field(description="要删除的SKU编码"),    confirm: bool = Field(default=False, description="必须为True才会执行删除,防止误操作")) -> str:    """删除指定SKU的库存记录。⚠️ 此操作不可逆,仅在确认清仓时使用。"""    if not confirm:        return "未确认,操作已取消。请设置confirm=True来执行删除。"    ...

这个confirm参数是我被坑了之后加的。AI第一次调用就传了confirm=True,还好我多加了一层校验。别信任AI不会误操作——它只是概率模型,不是理性人。

2026年的MCP生态

到2026年5月,MCP生态已经和一年前完全不同了。

支持MCP的Host一长串:Claude Desktop、Cursor、ChatGPT、Windsurf、Cline、OpenClaw,国内通义千问和豆包也接入了。主流AI应用基本都支持。半年前还有些Host要装插件才能用MCP,2026年大部分都原生集成了。

SDK方面,Python SDK官方维护,最稳。TypeScript其次。Go和Java有社区版,覆盖约80%的功能。Rust SDK还在早期。如果你在选语言,Python和TypeScript是安全选择,其他语言先观望。

MCP Hub上已有2000+现成的Server。数据库连接、文件操作、API调用这些常见需求大概率能找到现成的。但内部业务逻辑,查库存、算佣金、生成报表,这些还得自己写。别人帮不了你,也不想帮你——这些都是你公司的核心流程。

一个明显趋势:越来越多的团队把MCP Server当"AI时代的API"来用。给前端写API用REST,给移动端用GraphQL,给AI用MCP。协议不同,思路一样:把能力暴露出去,让调用方自己组合。甚至有团队把MCP Server当成了内部服务的统一接入层,前端、移动端、AI三端都走MCP,省得维护三套API。

最后说一个容易被忽略的事

MCP Server让你的脚本对AI可用,但这也意味着你的脚本对任何接了MCP的AI都可用。

我部署的第一个MCP Server上线两周后被三个不同团队的AI调用了,其中一个我根本不认识。他们怎么找到的?因为我们内网有个MCP Registry,所有注册的Server都会被索引。

这挺好,对吧?共享能力,减少重复造轮子。

但代价呢?你的工具一旦通过MCP暴露出去,调用方就不受你控制了。别人可能用你意想不到的方式调用,可能把你的工具嵌进一个十步长的Agent流程里,你的工具变成链路中的一环。任何一环出问题,整条链都断。你的接口改个参数名,下游三个团队的Agent全挂。

所以MCP Server的版本管理、向后兼容、降级策略——这些在REST API时代就存在的问题——在MCP时代只会更尖锐。因为调用方不再是写代码的开发者,而是一个你无法沟通的AI Agent。

智能插座让所有家电都能被调度,但也意味着一个错误的指令能让所有家电同时出问题。MCP解决的是连通性,不是安全性。你在插座上没装保险丝,短路的时候烧的是整条线路。

所以每次写MCP Server,问自己三个问题:谁能调?调了能干什么?干了出事谁负责?前两个靠认证和权限控制,最后一个靠版本管理和降级策略。这些都不是MCP协议会帮你做的事。

最新文章

随机文章

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