0
0
Lập trình
Hưng Nguyễn Xuân 1
Hưng Nguyễn Xuân 1xuanhungptithcm

Hướng dẫn tạo công cụ MCP đơn giản với Node.js

Đăng vào 7 tháng trước

• 4 phút đọc

Chủ đề:

#ai#node#mcp#genai

Hướng dẫn tạo công cụ MCP đơn giản với Node.js

Giới thiệu

Trong bài viết này, chúng ta sẽ khám phá cách tạo một máy chủ MCP (Model Context Protocol) đơn giản bằng Node.js. Việc này không chỉ đơn giản mà còn giúp bạn tích hợp nhiều công cụ bên thứ ba như JIRA, TeamCity, Jenkins và nhiều công cụ khác. Bạn sẽ học cách chạy máy chủ MCP cục bộ để sử dụng với bất kỳ khách hàng AI nào.

Cấu trúc thư mục

Đầu tiên, chúng ta cần thiết lập cấu trúc thư mục cho dự án. Dưới đây là cấu trúc thư mục cần thiết:

Copy
mcp-server
  - .vscode
    - mcp.json
  - src
    - lib
      - tools.ts
    - index.ts
  - .env
  - .npmrc
  - package.json
  - tsconfig.json

Nội dung các tệp

package.json

Tệp này chứa thông tin về các phụ thuộc và các lệnh để xây dựng, phát triển ứng dụng.

json Copy
{
  "name": "groww-mcp-server",
  "version": "1.0.0",
  "main": "src/index.ts",
  "type": "module",
  "scripts": {
    "build": "tsc && chmod 755 build/index.js",
    "dev": "tsc --watch",
    "start": "node ./build/index.js",
    "clean": "rm -rf build"
  },
  "dependencies": {
    "@modelcontextprotocol/sdk": "^1.17.4",
    "dotenv": "^17.2.1"
  },
  "devDependencies": {
    "typescript": "^5.9.2"
  }
}

tsconfig.json

Tệp này định nghĩa các tùy chọn biên dịch cho TypeScript.

json Copy
{
  "compilerOptions": {
    "target": "ES2022",
    "module": "nodenext",
    "outDir": "./build",
    "rootDir": "./src",
    "strict": true
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules", "build"]
}

.env

Tệp này chứa các cấu hình cho máy chủ MCP và các thông tin môi trường khác.

Copy
MCP_HOST=127.0.0.1
MCP_PORT=8000
API_KEY=xxxxxx

src/index.ts

Tệp này định nghĩa tất cả các công cụ mà máy chủ MCP chứa. Bạn có thể thêm nhiều công cụ theo ý thích.

typescript Copy
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import dotenv from 'dotenv';

dotenv.config();

const server = new McpServer({
  name: 'weather',
  version: '1.0.0'
});

server.tool(
  'get-user-margin',
  "Lấy margin khả dụng cho người dùng",
  {},
  async () => {
    // Thực hiện lấy margin khả dụng
  }
);

async function main() {
  await server.connect();
  console.log("Máy chủ MCP đang chạy");
}

main().catch((error) => {
  console.error("Lỗi nghiêm trọng trong main():", error);
  process.exit(1);
});

src/lib/tools.ts

Tệp này định nghĩa các lớp và phương thức để quản lý các công cụ.

typescript Copy
export class Tools {
  async getAvailableMargin() {
    // Thực hiện lấy margin khả dụng
  }
}

mcp.json

Tệp này chứa cấu hình cho VSCode để sử dụng máy chủ MCP.

json Copy
{
  "servers": {
    "mcp-server": {
      "command": "node",
      "args": ["./build/index.js"]
    }
  }
}

Các thực tiễn tốt nhất

  • Sử dụng .env để quản lý thông tin nhạy cảm: Đảm bảo không đưa thông tin nhạy cảm vào mã nguồn.
  • Chia nhỏ mã nguồn thành các mô-đun: Giúp dễ dàng bảo trì và mở rộng.

Những cạm bẫy thường gặp

  • Quên cài đặt các phụ thuộc: Đảm bảo bạn đã cài đặt tất cả các thư viện cần thiết bằng lệnh npm install.
  • Lỗi trong cấu hình môi trường: Kiểm tra kỹ các biến môi trường trong tệp .env.

Mẹo hiệu suất

  • Sử dụng TypeScript: Giúp phát hiện lỗi sớm và cải thiện chất lượng mã nguồn.
  • Theo dõi hiệu suất: Sử dụng các công cụ như New Relic hoặc Datadog để theo dõi hiệu suất của ứng dụng.

Khắc phục sự cố

  • Máy chủ không khởi động: Kiểm tra xem cổng đã sử dụng hay chưa và xem các thông báo lỗi trong console.
  • Lỗi khi gọi API: Đảm bảo rằng các API đang hoạt động và địa chỉ được cấu hình đúng.

Kết luận

Việc tạo một máy chủ MCP đơn giản với Node.js là rất dễ dàng và mang lại nhiều lợi ích. Hãy thử nghiệm với các công cụ khác nhau và mở rộng máy chủ của bạn. Nếu bạn có bất kỳ câu hỏi nào, hãy để lại ý kiến bên dưới!

Câu hỏi thường gặp

1. Tôi có thể chạy máy chủ MCP trên môi trường sản xuất không?

Có, nhưng hãy đảm bảo rằng bạn đã cấu hình đúng các biến môi trường và bảo mật.

2. Tôi có thể thêm công cụ mới vào máy chủ không?

Có, bạn có thể thêm nhiều công cụ tùy ý vào máy chủ bằng cách sử dụng phương thức server.tool().

3. Làm thế nào để kiểm tra lỗi trong mã nguồn?

Sử dụng TypeScript sẽ giúp bạn phát hiện lỗi sớm. Ngoài ra, hãy kiểm tra các thông báo lỗi trong console khi chạy máy chủ.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào