返回资讯中心
外部精选
软件工程
#开发者实时流

Craft CMS 5.12.0 新增经认证的 HTTP MCP 服务器

来源标题:Craft CMS 5.12.0: Added an authenticated HTTP MCP server

Craft CMS 5.12.0 加入了一个需认证的 HTTP MCP 服务器,MCP 客户端在用户登录并通过 OAuth 授权后即可连接。客户端以该用户身份运行,受其权限及授予的访问级别限制(只读、读写,或管理员完全访问)。该服务器端点默认位于 /{cpTrigger}。

Hacker News 最新ashenke2026/11/3 · 2 天前30 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

MCP 与 OAuth

新增了经过身份认证的 HTTP MCP 服务器,MCP 客户端在用户登录并通过 OAuth 授权后即可连接。客户端以该用户身份行事,受其权限以及所授予的访问级别(只读、读写,或管理员完全访问)限制。(#20145, #20189)

经过身份认证的 MCP 服务器端点默认为 /{cpTrigger}/mcp 和 /{cpTrigger}/mcp/auth,当启用公开注册时则为 /mcp 和 /mcp/auth。控制面板内的端点仅限具有控制面板访问权限的用户使用。(#20189)

新增了公开 HTTP MCP 服务器,无需登录即可访问,仅暴露在“设置 → MCP”中批准的能力和内容。其端点默认为 /mcp。(#20145, #20189)

根据 SEP-2127,HTTP MCP 服务器可通过 /.well-known/ai-catalog.json 以及位于 <endpoint>/server-card 的 Server Card 被发现。位于控制面板 URL 上的服务器永远不会被公开通告,经过身份认证的服务器仅在启用公开注册时才会被通告。(#20283)

新增了 mcp/serve 命令,用于运行一个以指定用户身份行事的 stdio MCP 服务器。(#20145)

新增了“设置 → MCP”,管理员可在此启用经过身份认证的 MCP 服务器和公开 MCP 服务器、设置其端点,并批准公开服务器所暴露的能力和内容。(#20145, #20189)

新增了对 config/mcp.php 和 config/oauth.php 配置文件的支持。(#20145)

新增了 oauth/generate-keys 命令,用于生成签署 OAuth 访问令牌所需的密钥。(#20145)

新增了 OAuth 授权服务器,具备发现元数据、动态客户端注册、PKCE 和刷新令牌轮换,供 MCP 服务器和 GraphQL API 使用。(#20145)

通过新增的 registrationRateLimit 和 registrationRateLimitDuration 两项 OAuth 配置设置,动态 OAuth 客户端注册默认限制为每个 IP 地址每小时 10 个客户端。(#20303)

垃圾回收现在会删除已过期和已撤销的 OAuth 授权码与令牌,以及已撤销或从未授权的已注册 OAuth 客户端。(#20303)

插件可通过 craft\services\Mcp::EVENT_REGISTER_CAPABILITY_TYPES 注册 MCP 能力,通过 craft\services\OAuth::EVENT_REGISTER_RESOURCES 注册 OAuth 资源,并通过 craft\services\PersonalAccessTokens::registerScopeGroup() 注册个人访问令牌作用域。(#20145, #20147)

新增了 craft\base\ApplicationTrait::getOAuth()。(#20145)

新增了 craft\base\InputSchemaFieldInterface。(#20145)

新增了 craft\config\McpConfig。(#20145)

新增了 craft\config\OAuthConfig。(#20145)

新增了 craft\events\RegisterOAuthResourcesEvent。(#20145)

新增了 craft\gql\GqlInputSchema。(#20145)

新增了 craft\mcp 和 craft\oauth 命名空间。(#20145, #20147)

新增了 craft\services\Config::CATEGORY_MCP。(#20145)

新增了 craft\services\Config::CATEGORY_OAUTH。(#20145)

新增了 craft\services\Config::getMcp()。(#20145)

新增了 craft\services\Config::getOAuth()。(#20145)

新增了 craft\services\Mcp。(#20145)

新增了 craft\services\OAuth。(#20145)

新增了 craft\utilities\ClearCaches::clear()。(#20145)

Plain Text、Email、Link、Number、Money、Lightswitch、Date、Time、Color、Country、Table 以及选项字段现在都实现了 craft\base\InputSchemaFieldInterface。(#20145)

个人访问令牌

新增了“我的账户 → 令牌”界面,用户可在此为提供令牌的 API(如 GraphQL API)创建个人访问令牌、重命名令牌,以及撤销令牌和已授权的应用。(#20147)

用户已授权的 MCP 客户端会列在其“我的账户 → 令牌”界面中,可在此撤销。(#20291)

新增了 craft\base\ApplicationTrait::getPersonalAccessTokens()。(#20147)

新增了 craft\services\PersonalAccessTokens。(#20147)

GraphQL

GraphQL API 请求现在可以使用 OAuth 访问令牌进行身份认证,从而访问授权用户有权访问的内容。(#20147)

GraphQL schema 组件现在可以通过其配置中的 authenticated 键来支持经过身份认证的请求。(#20147)

新增了 currentUser GraphQL 查询,返回对请求进行身份认证的用户。(#20147)

GraphQL schema 现在可以为站点、区块、条目类型、卷、用户组、分类组和标签组包含只读组件。(#20055)

新增了 sites、site、sections、section、entryTypes、entryType、volumes、volume、userGroups、userGroup、categoryGroups、categoryGroup、tagGroups 和 tagGroup 这些 GraphQL 查询,当 schema 包含相应组件时可用。(#20055)

当 schema 包含“Query for sites”组件时,元素在 GraphQL 中现在具有 site 字段。(#20055)

当 schema 包含“Query for sections”和“Query for entry types”组件时,条目在 GraphQL 中现在具有 section 和 type 字段。(#20055)

当 schema 包含“Query for volumes”组件时,资源在 GraphQL 中现在具有 volume 字段。(#20055)

当 schema 包含“Query for user groups”组件时,用户在 GraphQL 中现在具有 groups 字段。(#20055)

当 schema 包含“Query for category groups”和“Query for tag groups”组件时,分类和标签在 GraphQL 中现在具有 group 字段。(#20055)

新增了 craft\elements\db\EagerLoadPlan::$configureQuery。(#20147)

新增了 craft\gql\base\ElementMutationResolver::requireUserAuthorization()。(#20147)

新增了 craft\gql\queries\Settings。(#20055)

新增了 craft\gql\types\CategoryGroup。(#20055)

新增了 craft\gql\types\EntryType。(#20055)

新增了 craft\gql\types\Section。(#20055)

新增了 craft\gql\types\Site。(#20055)

新增了 craft\gql\types\TagGroup。(#20055)

(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →