# Giới thiệu khóa học

## Kết nối AI với phần mềm xây dựng

> **"AI không thay thế kỹ sư — nhưng kỹ sư biết dùng AI sẽ thay thế kỹ sư không biết dùng AI."**

![Background vui nhộn của khóa học](/files/pLE0AqZmxjyCSGiBQO0P)

### Demo chatbot plugin chạy trên Revit

Đây là giao diện plugin chatbot chạy trực tiếp trong Revit, giúp kỹ sư thao tác nhanh qua AI ngay trong môi trường làm việc BIM.

![Chatbot plugin chạy trong Revit](/files/oSFObkKFQmhH3e32gMgt)

## Description

Khóa học này là lộ trình thực chiến giúp bạn xây dựng một hệ thống hoàn chỉnh để AI có thể đọc, phân tích và thao tác mô hình Revit một cách an toàn thông qua MCP.

### Trọng tâm khóa học: kết nối STDIO

Trong khóa học này, luồng kết nối chính giữa AI Host và MCP Server được thống nhất theo **STDIO** để dễ triển khai local, ổn định cho demo 1-1, và dễ debug trong quá trình học.

![Kiến trúc trọng tâm STDIO của khóa học](/files/a9HAMBPmTHprtmS3yGPs)

Code mẫu phía MCP Server (TypeScript):

```ts
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";

const server = new McpServer({
  name: "revit-mcp-server",
  version: "1.0.0",
});

const transport = new StdioServerTransport();
await server.connect(transport);

// Khi dùng STDIO, luôn log ra stderr để không phá protocol trên stdout
console.error("[MCP] STDIO transport connected");
```

Code mẫu cấu hình Claude Code (`.mcp.json`):

```json
{
  "mcpServers": {
    "revit-mcp": {
      "command": "node",
      "args": ["./mcp-server/dist/index.js"],
      "env": {
        "REVIT_API_URL": "http://localhost:8080"
      }
    }
  }
}
```

Bạn sẽ đi từ nền tảng đến triển khai thật:

* Hiểu kiến trúc **Revit Plugin (C#) ↔ MCP Server ↔ AI Client**
* Tự viết và quản trị **tools/commands** cho bài toán BIM
* Kết nối end-to-end, kiểm thử, debug và đóng gói để đưa vào sử dụng thực tế

Sau khóa học, bạn có thể triển khai theo 2 hướng:

* **Cho cá nhân:** tự build plugin phục vụ workflow riêng, giảm thao tác lặp và tăng tốc công việc hàng ngày.
* **Cho công ty/team:** build plugin dùng chung, chuẩn hóa quy trình và kiểm soát cách AI can thiệp vào model.

Khóa học cũng tập trung giải quyết các “nỗi đau” phổ biến khi dùng AI trong BIM:

* **Sợ AI làm sai và mất dữ liệu:** thiết kế luồng an toàn, tách rõ tool đọc/ghi, kiểm soát hành động thay đổi model.
* **Chi phí token tăng cao không đáng có:** tối ưu payload, schema và cách gọi tool để giảm token lãng phí.

### Nỗi đau chi phí AI trong thực tế

Ảnh minh họa tình huống thường gặp khi sử dụng model AI mà chưa tối ưu tool/schema, dẫn đến chi phí tăng nhanh:

![Nỗi đau khi chi phí model AI tăng](/files/vstgGXXmlg23csPKtNvs)

![Lộ trình khóa học Revit API x MCP x AI](/files/2TXcBA6cxHTlufv54UJV)

Khóa học này hướng dẫn bạn kết nối AI (Claude, GPT, ...) với **Autodesk Revit** qua **MCP (Model Context Protocol)** để biến AI thành trợ lý kỹ thuật có thể thao tác thật trên mô hình BIM.

Điểm khác biệt của khóa học:

* Đi từ nền tảng đến triển khai thực tế, không học lý thuyết rời rạc.
* Mỗi phần đều có mã nguồn và hướng dẫn để tự chạy trên máy cá nhân.
* Tập trung các bài toán kỹ sư thường gặp: đọc mô hình, truy xuất dữ liệu, tự động hóa tác vụ lặp.

### Sau khóa học, bạn có thể làm được gì?

* Tự xây dựng Revit Plugin (C#) để điều khiển mô hình theo nhu cầu dự án.
* Tạo MCP Server để AI gọi đúng tools thay vì trả lời chung chung.
* Thiết kế luồng AI -> MCP -> Plugin -> Revit an toàn, có kiểm soát.
* Mở rộng từ Revit sang các phần mềm khác có API (AutoCAD, Navisworks, ACC...).

![MCP là gì - kiến trúc tổng quan](/files/Sz1cdPCaketASWX8nYxq)

***

## Repository chính của khóa học

Mã nguồn trung tâm để bạn bám theo xuyên suốt khóa học:

* [deepbim-revit-mcp-plugin](https://github.com/nguyenngocdue/deepbim-revit-mcp-plugin)

Bạn sẽ dùng repository này để:

* Theo dõi kiến trúc chuẩn của dự án Revit + MCP + AI.
* Chạy thử từng chức năng theo từng bài học.
* Đối chiếu code mẫu khi tự làm project của riêng bạn.

> Nếu bạn muốn học nhanh và chắc, hãy clone repo này trước khi vào Bài 1.

***

## Khóa học này dành cho ai?

| Đối tượng                 | Mô tả                                                 |
| ------------------------- | ----------------------------------------------------- |
| Kỹ sư xây dựng            | Muốn dùng AI hỗ trợ công việc thiết kế hằng ngày      |
| Lập trình viên Revit API  | Muốn mở rộng khả năng plugin bằng AI                  |
| Người yêu thích công nghệ | Muốn hiểu cách AI giao tiếp với phần mềm chuyên ngành |

## Công nghệ sử dụng

| Công nghệ             | Vai trò                              |
| --------------------- | ------------------------------------ |
| Revit API (C#)        | Điều khiển Autodesk Revit            |
| Node.js / TypeScript  | Xây dựng MCP Server                  |
| MCP Protocol          | Giao thức kết nối AI - phần mềm      |
| Claude / GPT          | Mô hình AI                           |
| Copilot               | Trợ lý AI hỗ trợ viết code trong IDE |
| Visual Studio         | Phát triển plugin C#                 |
| VS Code / Claude Code | Giao diện làm việc với AI            |

## Cấu trúc khóa học

```mermaid
graph LR
    A[Phần 1: Nền tảng] --> B[Phần 2: Xây dựng]
    B --> C[Phần 3: Kết nối]
    C --> D[Phần 4: Nâng cao]

    A --- A1[Bài 1: Tổng quan]
    A --- A2[Bài 2: Demo]

    B --- B1[Bài 3: Revit Tool]
    B --- B2[Bài 4: MCP Server]
    B --- B3[Bài 5: Core C#]

    C --- C1[Bài 6: Cấu hình]
    C --- C2[Bài 7: Kết nối]

    D --- D1[Bài 8: Mở rộng]
    D --- D2[Bài 9: Đóng gói]
    D --- D3[Bài 10: Tổng kết]
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://deepbim.gitbook.io/revit-mcp-ai/getting-started/readme.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
