🛠️ Tự build MCP server cho Claude Desktop đọc được CRM, ERP nội bộ của công ty bạn

🛠️ Tự build MCP server cho Claude Desktop đọc được CRM, ERP nội bộ của công ty bạn

Claude Desktop đã có sẵn hàng trăm MCP server trên registry, nhưng phần mềm nội bộ của công ty bạn thì chẳng ai viết sẵn. Tin vui là tự build MCP server không khó như bạn nghĩ, chỉ cần Python và khoảng 30 phút.

🤔 Vì sao phải tự build MCP riêng

MCP registry công khai chỉ cover các tool phổ biến như GitHub, Gmail, Slack, Notion. Còn CRM, ERP, database nội bộ thì chỉ team bạn biết schema, biết business logic, biết field nào quan trọng.

Data khách hàng, doanh thu, hợp đồng là thông tin nhạy cảm, không ai muốn share qua dịch vụ third-party. Tự build MCP server cho phép Claude hiểu đúng ngữ cảnh của công ty, trả lời chính xác theo cách team bạn làm việc, và giữ dữ liệu hoàn toàn trong nhà.

📘 Bước 1 và 2: Hiểu MCP rồi cài FastMCP

MCP viết tắt của Model Context Protocol, là chuẩn giao tiếp giữa AI và nguồn dữ liệu. Trong mô hình này, Claude Desktop đóng vai trò client, còn bạn viết server để expose các tool và resource cho Claude gọi.

SDK đơn giản nhất là FastMCP của Anthropic:

pip install fastmcp

Nếu team quen Node.js hơn, có thể dùng @modelcontextprotocol/sdk thay thế, cú pháp tương tự.

💻 Bước 3: Viết server tối thiểu

Tạo file server.py, khai báo một tool bằng decorator là xong:

from fastmcp import FastMCP
import os, requests

mcp = FastMCP("internal-crm")

@mcp.tool()
def search_customer(query: str) -> list[dict]:
    """Tìm khách hàng trong CRM nội bộ theo tên hoặc email."""
    resp = requests.get(
        "http://crm.internal/api/customers/search",
        params={"q": query},
        headers={"Authorization": f"Bearer {os.environ['CRM_TOKEN']}"}
    )
    return resp.json()

if __name__ == "__main__":
    mcp.run()

Chỉ vài dòng, bạn đã có một MCP server chạy được. Phần còn lại là mở rộng thêm nhiều tool theo nhu cầu.

🧰 Bước 4: Thêm các tool nghiệp vụ

Mỗi use case là một function Python với docstring rõ ràng: get_customer_by_id, create_ticket, get_invoice, run_report, list_pending_deals. Docstring cực kỳ quan trọng vì Claude dựa vào đó để biết khi nào nên gọi tool nào.

Viết docstring theo kiểu mô tả rõ input, output, và tình huống sử dụng. Ví dụ "Tạo ticket hỗ trợ mới cho khách hàng, nhận vào customer_id và nội dung, trả về ticket_id." Càng cụ thể, Claude càng ít gọi nhầm.

⚙️ Bước 5: Đăng ký vào Claude Desktop

Mở file config tại ~/Library/Application Support/Claude/claude_desktop_config.json trên Mac, hoặc %APPDATA%/Claude/claude_desktop_config.json trên Windows, rồi thêm vào:

{
  "mcpServers": {
    "internal-crm": {
      "command": "python",
      "args": ["/path/to/server.py"],
      "env": { "CRM_TOKEN": "secret_xxx" }
    }
  }
}

🚀 Bước 6: Restart Claude Desktop và test

Tắt hẳn Claude Desktop rồi mở lại, gõ thử "Tìm khách hàng Nguyễn Văn A trong CRM". Claude sẽ tự động gọi tool search_customer bạn vừa viết, đọc kết quả JSON và trả lời bằng tiếng Việt mượt mà.

⚠️ Những cái bẫy thường gặp

Đừng bao giờ dùng print() trong server vì nó phá giao thức stdio, log gì thì log qua sys.stderr. Docstring sơ sài khiến Claude không biết khi nào gọi, tool của bạn sẽ bị bỏ quên. Tuyệt đối không hardcode token trong code, luôn đọc từ environment variable. Và đừng quên restart Claude Desktop mỗi khi sửa config, nếu không thay đổi không có hiệu lực.

🎯 Mở rộng nâng cao và lợi ích thực tế

Ngoài @mcp.tool(), bạn có thể dùng @mcp.resource("customer://{id}") để Claude đọc data on-demand, hoặc @mcp.prompt() tạo prompt template sẵn cho cả team dùng chung. Thêm authentication, rate limit, caching khi triển khai production.

Khi MCP server chạy ổn, marketing có thể hỏi "doanh thu quý 1 so với cùng kỳ năm ngoái" bằng tiếng Việt và nhận số liệu ngay. CEO hỏi "tuần này có bao nhiêu deal đang pending", Claude tổng hợp trong vài giây. Dev không cần build chatbot riêng, PM không cần chờ report thủ công. Server này gắn được cho cả Claude Code, không chỉ Claude Desktop, nên workflow coding của team cũng được hưởng lợi.

Team bạn đang vận hành CRM, ERP hay database nội bộ nào mà bạn muốn Claude đọc được đầu tiên?

#AI #Claude #MCP #ClaudeDesktop #Tutorial #VibeAICoder #learnontiktok

Bài viết liên quan

🛠️ Tự build MCP server cho Claude Desktop đọc được CRM, ERP nội bộ của công ty bạn | Vibe AI Coder