Chuyển tới nội dung chính

Bắt đầu

Hướng dẫn này giúp bạn tạo và chạy một AI App trong vài phút.

Yêu cầu

  • Node.js >= 22
  • v-miniapp-cli đã cài đặt: npm install -g @v-miniapp/cli
  • Tài khoản Developer trên Console (để tạo App ID)

Bước 1: Tạo dự án

v-miniapp-cli create

CLI sẽ hỏi bạn chọn template và tạo cấu trúc thư mục chuẩn:

my-ai-app/
├── server/src/ # MCP Server (Backend)
│ ├── index.ts # Khởi tạo McpServer, đăng ký tools/resources/skills
│ ├── tools/ # Tool handlers
│ └── db/ # Data layer
├── web/src/ # Widget (Frontend)
│ ├── widgets/ # Mỗi widget một thư mục
│ ├── locales/ # i18n
│ └── global.d.ts # Type declarations
├── skills/ # Hướng dẫn cho AI
├── app-config.json # Tên, version, appId
└── package.json

Xem chi tiết cấu trúc tại CLICấu trúc Widget.

Bước 2: Chạy dev server

npm run dev
  • MCP Server khởi động tại http://localhost:4000/mcp
  • Inspector tự động mở tại http://127.0.0.1:6274/ — cho phép list tools, gọi thử tool, và xem widget render

Xem thêm Inspector.

Bước 3: Khám phá code mẫu

Template ai-app-todo đi kèm một Todo App hoàn chỉnh với 4 tools (list-todos, add-todo, toggle-todo, delete-todo), widget React, và skill.

Server — đăng ký tools và resources bằng cú pháp chuỗi:

server/src/index.ts
import { McpServer } from '@v-miniapp/ai/server'
import { addTodoTool } from './tools/add-tool'
import { listTodoTool } from './tools/list-tool'
// ...

const server = new McpServer()
.registerResources(['manage-todos'])
.registerSkills(['list-todos'])
.registerTool(addTodoTool)
.registerTool(listTodoTool)
// ...

server.run()

Widget — nhận data từ AI qua useToolInfo, tương tác qua useCallTool:

web/src/widgets/manage-todos/index.tsx
import {
getStructuredResult,
renderWidget,
useCallTool,
useToolInfo,
} from '@v-miniapp/ai/web'

function TodoApp() {
const toolInfo = useToolInfo<'list-todos'>()
const data = getStructuredResult(toolInfo)
const [todos, setTodos] = useState(data?.todos || [])

const addTodoTool = useCallTool('add-todo')

const handleAdd = async () => {
const result = await addTodoTool.callTool({ text: 'Mua sữa' })
setTodos(getStructuredResult(result)?.todos ?? [])
}
// ...
}

renderWidget(<TodoApp />)

Xem code đầy đủ và giải thích chi tiết tại Todo AI App Showcase.

Bước 4: Build & test production

npm run build
npm run start

Server production chạy tại http://localhost:3000/mcp.

Xem thêm Build cho Production.

Bước tiếp theo

Chủ đềLink
Kiến trúc tổng thểFramework Overview
MCP Server chi tiếtMCP Server
Cấu trúc WidgetMCP Apps
Ví dụ hoàn chỉnhTodo AI App
CLI & buildCLI
JS APIsJS APIs Overview
Chuẩn thiết kếUX Guidelines · UI Guidelines