CopynixCopynix
CopynixCopynix
Blog Thẻ Giới thiệu
CopynixCopynix

Nguồn tin cậy cung cấp bài viết thực tế, hướng dẫn và kiến thức chuyên sâu về những chủ đề quan trọng.

Liên kết nhanh

  • Blog
  • Thẻ
  • Giới thiệu
  • Tìm kiếm
  • Sitemap

Chủ đề

  • Make Money Online
  • Marriage
  • Frontend
  • Backend
  • Asia
RSS Feed

© 2026 Copynix · Tất cả quyền được bảo lưu

Dành cho Độc Giả · Cập nhật Hàng ngày

Blog/Cách xây dựng Máy chủ MCP cho Claude Code (Hướng dẫn hoàn chỉnh)

Cách xây dựng Máy chủ MCP cho Claude Code (Hướng dẫn hoàn chỉnh)

May 6, 2026
4 min read
Expert Reviewed
Share
Cách xây dựng Máy chủ MCP cho Claude Code (Hướng dẫn hoàn chỉnh)

Điều gì là MCP?

MCP là một giao thức tiêu chuẩn hóa cách các mô hình AI giao tiếp với các công cụ bên ngoài. Hãy tưởng tượng nó như USB cho AI — một kết nối phổ biến cho phép bất kỳ mô hình AI nào sử dụng bất kỳ công cụ nào.

Một máy chủ MCP:

  • Xác định các công cụ có sẵn (Claude có thể làm gì?)

  • Quản lý các cuộc gọi công cụ (Claude nói "xem xét cơ sở dữ liệu", máy chủ thực hiện)

  • Trả kết quả (gửi dữ liệu trở lại Claude)


Setup máy chủ MCP đầu tiên của bạn

Bước 1: Cài đặt dự án

mkdir my-mcp-server
cd my-mcp-server
npm init -y
npm install @modelcontextprotocol/sdk zod
npm install -D typescript @types/node tsx
npx tsc --init

Bước 2: Cấu trúc máy chủ cơ bản

// src/index.ts
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import { z } from 'zod';

const server = new McpServer({
  name: 'my-custom-tools',
  version: '1.0.0',
});

// Định nghĩa một công cụ đơn giản
server.tool(
  'greet',
  'Xin chào một người dùng bằng tên',
  {
    name: z.string().describe('Tên để chào'),
  },
  async ({ name }) => ({
    content: [
      {
        type: 'text',
        text: `Xin chào, ${name}! Chào mừng đến với máy chủ MCP của tôi.`,
      },
    ],
  })
);

// Bắt đầu máy chủ
async function main() {
  const transport = new StdioServerTransport();
  await server.connect(transport);
}

main().catch(console.error);

Bước 3: Đăng ký với mã Claude

// Trong tệp .claude/settings.json hoặc CLAUDE.md của dự án:
// Thêm cấu hình máy chủ MCP
{
  "mcpServers": {
    "my-tools": {
      "command": "npx",
      "args": ["tsx", "/path/to/my-mcp-server/src/index.ts"]
    }
  }
}

Building một máy chủ cơ sở dữ liệu MCP

Use case phổ biến nhất: cho phép Claude truy cập cơ sở dữ liệu của bạn.

// src/database-server.ts
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import { z } from 'zod';
import { Pool } from 'pg';

const pool = new Pool({
  connectionString: process.env.DATABASE_URL,
});

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

// Chức năng đọc-only
server.tool(
  'query_database',
  'Thực hiện một truy vấn đọc-only SQL chống lại cơ sở dữ liệu',
  {
    sql: z.string().describe('Truy vấn SQL SELECT để thực hiện'),
  },
  async ({ sql }) => {
    // An toàn: chỉ cho phép truy vấn SELECT
    if (!sql.trim().toUpperCase().startsWith('SELECT')) {
      return {
        content: [{
          type: 'text',
          text: 'Lỗi: Chỉ cho phép truy vấn SELECT.',
        }],
        isError: true,
      };
    }

    try {
      const result = await pool.query(sql);
      return {
        content: [{
          type: 'text',
          text: JSON.stringify(result.rows, null, 2),
        }],
      };
    } catch (error) {
      return {
        content: [{
          type: 'text',
          text: `Lỗi truy vấn: ${error.message}`,
        }],
        isError: true,
      };
    }
  }
);

// Chức năng liệt kê schema bảng
server.tool(
  'list_tables',
  'Liệt kê tất cả các bảng trong cơ sở dữ liệu với các cột',
  {},
  async () => {
    const result = await pool.query(`
      SELECT table_name, column_name, data_type
      FROM information_schema.columns
      WHERE table_schema = 'public'
      ORDER BY table_name, ordinal_position
    `);
    return {
      content: [{
        type: 'text',
        text: JSON.stringify(result.rows, null, 2),
      }],
    };
  }
);

Thiết kế một Server tích hợp API

// src/api-server.ts
server.tool(
  'search_github',
  'Tìm kiếm các dự án trên GitHub',
  {
    query: z.string().describe('Từ khóa tìm kiếm cho các dự án'),
    language: z.string().optional().describe('Lọc theo ngôn ngữ lập trình'),
  },
  async ({ query, language }) => {
    const params = new URLSearchParams({
      q: language ? `${query} language:${language}` : query,
      sort: 'stars',
      order: 'desc',
    });

    const response = await fetch(
      `https://api.github.com/search/repositories?${params}`,
      { headers: { 'Accept': 'application/vnd.github.v3+json' } }
    );

    const data = await response.json();
    const repos = data.items.slice(0, 10).map(repo => ({
      name: repo.full_name,
      description: repo.description,
      stars: repo.stargazers_count,
      url: repo.html_url,
    }));

    return {
      content: [{
        type: 'text',
        text: JSON.stringify(repos, null, 2),
      }],
    };
  }
);

Thực hành tốt nhất về bảo mật

  • Những gì không bao giờ được cho phép là các hoạt động ghi mà không cần xác nhận — đọc-only mặc định

  • Bảo vệ và khử trùng tất cả đầu vào — sử dụng lược đồ Zod cho an toàn kiểu

  • Giới hạn phạm vi truy vấn — hạn chế truy cập cơ sở dữ liệu vào các lược đồ bảng cụ thể

  • Lưu tất cả các cuộc gọi công cụ — bản ghi để debug và bảo mật

  • Sử dụng biến môi trường cho thông tin đăng nhập — không mã hóa bí mật

  • Giới hạn tốc độ các cuộc gọi công cụ — ngăn chặn hành vi máy chủ bị mất kiểm soát


Những câu hỏi thường gặp khác

Những ngôn ngữ nào có thể xây dựng máy chủ MCP?

Lực lượng phát triển chính hỗ trợ TypeScript/JavaScript và Python. Các SDK cộng đồng tồn tại cho Go, Rust và các ngôn ngữ khác.

Liệu máy chủ MCP có thể chạy ở xa không?

Có — MCP hỗ trợ cả giao thức stdio (địa phương) và HTTP/SSE (trực tuyến). Máy chủ ở xa có thể chạy trên bất kỳ nhà cung cấp đám mây nào.

Số lượng công cụ mà một máy chủ MCP có thể hiển thị?

Không có giới hạn cứng, nhưng giữ nó tập trung. Một máy chủ với 5-10 công cụ được định nghĩa rõ ràng tốt hơn một máy chủ với 50 công cụ mờ nhạt. Claude cần hiểu rõ từng công cụ để sử dụng hiệu quả.


Found this helpful? Share it:

Share
PreviousTạo một đại diện AI với MCP và TypeScript vào năm 2026Next Microsoft, Google và xAI sẽ cho phép chính phủ thử nghiệm các mô hình AI của họ trước khi ra mắt

Contents

Điều gì là MCP?Setup máy chủ MCP đầu tiên của bạnBuilding một máy chủ cơ sở dữ liệu MCPThiết kế một Server tích hợp APIThực hành tốt nhất về bảo mậtNhững câu hỏi thường gặp khác

Related Posts

SEO Tools for YouTube: A Comprehensive Guide to Boost Your Video Optimization

SEO Tools for YouTube: A Comprehensive Guide to Boost Your Video Optimization

May 7, 2026

Công cụ SEO cho Website: Những sai lầm cần tránh

Công cụ SEO cho Website: Những sai lầm cần tránh

May 7, 2026

Lợi ích của việc tích hợp DevOps vào chu kỳ phát triển của bạn

Lợi ích của việc tích hợp DevOps vào chu kỳ phát triển của bạn

May 7, 2026

Canopy ra mắt đồng nghiệp AI cho tự động hóa kế toán

Canopy ra mắt đồng nghiệp AI cho tự động hóa kế toán

May 7, 2026

Share this post

Share