FEATURED · 精选文章

laravel/mcp Tool深度实战:inputSchema、outputSchema与注解打造AI最爱的MCP工具

发布时间 / 2026/8/24 11:16:48
来源 / 创域科博编辑部
栏目 / 资讯中心
laravel/mcp Tool深度实战:inputSchema、outputSchema与注解打造AI最爱的MCP工具 laravel/mcp Tool深度实战inputSchema、outputSchema与注解打造AI最爱的MCP工具【免费下载链接】mcpRapidly build MCP servers for your Laravel applications.项目地址: https://gitcode.com/gh_mirrors/mcp62/mcplaravel/mcp 是 Laravel 官方出品的 MCP 服务器构建包让你用熟悉的 PHP 语法快速为 Laravel 应用搭建 MCPModel Context Protocol服务器。其中的Tool工具是 AI 客户端与你应用交互的核心——AI 通过阅读工具的inputSchema决定怎么调用通过outputSchema理解返回什么再借助注解判断调用是否安全。掌握这三者你的 MCP 工具就能成为 AI 模型最信赖的能力扩展。3步快速创建你的第一个 Laravel MCP Tool无需手写样板代码laravel/mcp 提供了 Artisan 命令php artisan make:mcp-tool SayHi命令会基于 stubs/mcp-tool.stub 模板在App\Mcp\Tools命名空间下生成工具类命令实现见 src/Console/Commands/MakeToolCommand.php。一个最小的工具只需两个方法handle(Request $request)执行逻辑返回Responseschema(JsonSchema $schema)定义inputSchema即 AI 传入的参数结构核心基类位于 src/Server/Tool.php它负责把你的schema()、outputSchema()和注解合并成标准 MCP 协议载荷。写好 inputSchema让 AI 一眼看懂工具参数AI 不会猜参数它完全依赖inputSchema。laravel/mcp 采用 Laravel 的流式 JSON Schema API声明式地定义每个参数name $schema-string() -description(要问候的人名) -required(),官方示例 tests/Fixtures/SayHiTool.php 展示了完整套路用$request-validate()做二次校验再返回Response::text()。写好 description 是秘诀每个字段的描述都会被模型读取写清参数含义、格式、示例AI 传参准确率会显著提升。outputSchema 实战用结构化数据回应 AI如果工具返回的是结构化数据如用户信息、天气除了文本还应声明outputSchema并用Response::structured()返回public function outputSchema(JsonSchema $schema): array { return [ id $schema-integer()-description(用户ID)-required(), name $schema-string()-description(用户姓名)-required(), ]; } return Response::structured([id 123, name John]);参考 tests/Fixtures/ToolWithOutputSchema.php。outputSchema的存在意味着 AI 客户端可以按字段解析结果而不必解析纯文本——这正是AI 最爱的工具与普通工具的分水岭。✅5种工具注解全解向 AI 客户端声明工具行为laravel/mcp 提供了一组 PHP 属性注解它们会被转换成 MCP 协议的提示字段帮客户端判断调用策略注解生成字段告诉 AI 的含义#[Description(...)]description工具用途模型选择工具的关键依据#[IsReadOnly]readOnlyHint只读操作放心调用、无需用户确认#[IsIdempotent]idempotentHint重复调用结果一致可安全重试#[IsOpenWorld]openWorldHint与外部世界网络、API交互#[IsDestructive]destructiveHint破坏性操作删除/覆盖调用前应确认#[Description(查询订单状态不修改任何数据。)] #[IsReadOnly] #[IsIdempotent] class CheckOrderStatus extends Tool { ... }注解源码都在 src/Server/Tools/Annotations/ 目录下例如IsReadOnly.php、IsIdempotent.php、IsDestructive.phpDescription位于 src/Server/Attributes/Description.php。⚠️ 注意注解不能混用——把资源类注解如Audience、Priority用到工具上会直接抛异常这一校验逻辑可在 tests/Unit/Tools/ToolAnnotationsTest.php 中查看。让工具 AI 友好一份速查清单✅handle()中用$request-validate()防御非法输入✅ 每个参数都加-description()写人类能读懂的解释✅ 结构化结果务必声明outputSchemaResponse::structured()✅ 只读工具加#[IsReadOnly]破坏性操作加#[IsDestructive]✅#[Description]写清做什么、何时用这是模型选对工具的第一依据遵循这份清单你的 Laravel MCP Tool 就能在 AI 客户端中开箱即用成为模型主动选择的可靠能力。【免费下载链接】mcpRapidly build MCP servers for your Laravel applications.项目地址: https://gitcode.com/gh_mirrors/mcp62/mcp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻