feat(mcp): mcp 独立应用与 /mcp Streamable HTTP 端点(官方 SDK + PSR-7 桥接)

This commit is contained in:
augushong
2026-08-16 22:15:19 +08:00
parent 1ab276b1e9
commit c21bf9f240
9 changed files with 489 additions and 0 deletions

View File

@@ -32,6 +32,11 @@ return [
// 缓存保存目录
'path' => App::getRuntimePath() . 'login/',
],
// MCP 会话存储StreamableHttpTransport 会话,经 Psr16ThinkCache 适配 PSR-16
'mcp_session' => [
'type' => 'File',
'path' => App::getRuntimePath() . 'mcp_session/',
],
// 更多的缓存连接
],
];

21
config/mcp.php Normal file
View File

@@ -0,0 +1,21 @@
<?php
use think\facade\Env;
// +----------------------------------------------------------------------
// | MCP 服务配置(/mcp 端点app/mcp 独立应用)
// +----------------------------------------------------------------------
return [
// 是否启用 MCP 端点false 时所有请求 403
'enable' => Env::get('mcp.enable', true),
// MCP serverInfo.nameinitialize 响应中的服务名)
'server_name' => Env::get('mcp.server_name', 'ulthon_admin'),
// DNS rebinding 防护 Host 白名单(不含端口)。
// 为空(默认):不启用 DNS rebinding 防护中间件——端点已有 Bearer 密钥认证,
// 且生产部署的 Host 是业务域名SDK 默认白名单(仅 localhost 变体)会导致全部 403。
// 非空(如本地调试场景):启用 SDK DnsRebindingProtectionMiddleware仅放行列表内 Host/Origin。
'allowed_hosts' => array_filter(array_map('trim', explode(',', (string) Env::get('mcp.allowed_hosts', '')))),
];