> For AI agents: the complete documentation index is available at /zh/llms.txt, the full documentation bundle is available at /zh/llms-full.txt.

# 构建与部署

`modern build` 由 MCP Apps 插件调用服务端编译器，将根目录定义编译到 `dist/mcp_apps.js`，静态导入的 handler 按相对路径输出。`.mts`、`.cts` 定义分别输出 `.mjs`、`.cjs`。
`modern serve` 只使用这些产物。`modern deploy` 生成可移动的 `.output/`，通过
`node .output/index.js` 启动，无须原源码目录。

默认 UI HTML 位于 `dist/mcp-apps/ui/`；必须同时部署应用静态资源或设置资源 CDN。
资源地址默认以公开 MCP origin 为基准，也可配置 `dev.assetPrefix` / `output.assetPrefix`。也可用 `view.html` 指定独立 HTTPS HTML URL，由服务端读取，并用 `view.csp` 声明其网络权限。MF 模式使用 MF 原有产物独立发布。生产定义可通过环境变量设置远程资源地址，
但 local handler 模块集合需要与构建时一致。运行时读取的独立文件、原生 addon
等额外资产仍由应用管理部署。

核心包可直接接收应用导入的 definition：`createMcpHandler(definition)`。
服务端定义和工具函数使用应用的服务端编译器；纯 `mcp-server` 模板仍通过手写 BFF 入口输出到 `dist/api/`。

当前不提供持久 MCP 会话、恢复 SSE 或跨请求取消。标准 MF 已验证，各目标产品宿主应分别验收。

## Hono 独立部署

```ts
import path from 'node:path';
import { Hono } from 'hono';
import { mcpApps } from '@modern-js/mcp-apps/hono';
import { loadMcpAppsConfig, bindUiResources } from '@modern-js/mcp-apps/server';

const root = path.resolve('application');
const definition = await loadMcpAppsConfig(path.join(root, 'mcp_apps.js'));
const app = new Hono();
app.all(
  '/mcp',
  mcpApps({
    definition: bindUiResources(definition, {
      directory: path.join(root, 'mcp-apps/ui'),
      assetBase: 'request',
    }),
  }),
);
```

部署编译后的定义、导入的 handler、`dist/mcp-apps/` 资源及应用静态文件，并安装 handler 使用的外部依赖。
该适配器不监听端口，鉴权、监听和部署由用户的 Hono 应用管理；Modern.js 默认通过 BFF 自动挂载 MCP 入口。

BFF TypeScript 开发依赖 `ts-node`（`^10.9.2`），模板已添加到 devDependencies。
ESM 项目需同时设置 package.json 的 `"type": "module"`，以及 TypeScript 的
`module: "esnext"` 和 `moduleResolution: "bundler"`。

MF manifest 和 chunks 由应用静态服务或 CDN 托管。MF 模板通过 `server/modern.server.ts` 为公共 `/static/*` 资源配置 CORS，并处理 OPTIONS，在开发和生产模式均生效，不影响 `/mcp`。改用 CDN 时，也需在 CDN 配置 CORS。MCP 插件本身不会注册 MF 资产路由或添加 CORS 响应头。

独立部署本地视图时，将完整 `dist/` 复制到上例的 `application/`，保留 `package.json` 的名称、版本和模块类型，以及所有导入模块的相对路径。通过静态服务提供 `/static/*`，或将其发布到构建时配置的资源 CDN。适配器只提供 MCP 路由，不提供静态资源服务。

所有 MF 视图都需要显式配置完整的 `remotes[].baseUrl` 和 CSP。该地址原样传给 MF runtime 加载。纯工具模板通过手动 BFF 路由编译到 `dist/api/`。

仅构建 UI 并接入自建 MCP Server，参见[接入自建 MCP Server](/zh/guides/advanced-features/mcp-apps/custom-server.md)。
