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:
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
{
"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
{
"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.
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
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
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
{
"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ủ.