Tác giả: Ramkumar Ramanujam
Ngày phát hành: 10 MAR 2026
Chuyên mục: .NET, Amazon Q Developer
Sự trỗi dậy của Generative AI (GenAI) và hệ sinh thái mới xung quanh nó đã thay đổi cơ bản cách các nhà phát triển viết, gỡ lỗi và triển khai phần mềm. Những công việc từng đòi hỏi hàng giờ chuyển đổi ngữ cảnh giữa tài liệu, Stack Overflow và các cửa sổ IDE, giờ đây có thể được hoàn thành trong vài phút với sự hỗ trợ của AI.
Các công cụ như Amazon Q Developer mang đến các gợi ý mã thông minh, tạo kiểm thử tự động, quét bảo mật và phát triển dựa trên ngôn ngữ tự nhiên trực tiếp vào quy trình làm việc của nhà phát triển.
Nhưng sức mạnh thực sự của các công cụ GenAI không chỉ nằm ở những gì chúng biết sẵn có – mà còn ở cách chúng học để hiểu môi trường của bạn. Các ứng dụng doanh nghiệp thường dựa vào các API nội bộ, SDK độc quyền, cơ sở dữ liệu tùy chỉnh và các framework chuyên biệt mà các mô hình AI đa năng chưa từng thấy. Đây là lúc Model Context Protocol (MCP) trở thành một yếu tố thay đổi cuộc chơi.
Bằng cách kết nối các trợ lý AI với các nguồn dữ liệu ngữ cảnh trực tiếp thông qua các máy chủ MCP, các nhà phát triển có thể:
- Giảm việc chuyển đổi ngữ cảnh bằng cách cung cấp quyền truy cập vào tài liệu nội bộ, API và schema trực tiếp trong IDE.
- Đẩy nhanh quá trình làm quen bằng cách cung cấp cho các thành viên nhóm mới quyền truy cập có hướng dẫn AI vào các hệ thống nội bộ.
- Nhận được các gợi ý và đầu ra chính xác hơn từ các trợ lý AI.
Các công cụ GenAI, khi được kết hợp với ngữ cảnh phù hợp, không chỉ tự động hoàn thành mã – chúng trở thành đối tác phát triển thông minh hiểu rõ stack của bạn.
Trong bài đăng trên blog này, tôi sẽ hướng dẫn bạn cách xây dựng máy chủ MCP tùy chỉnh của riêng bạn trong .NET và tích hợp nó với Amazon Q Developer để nâng cao khả năng của trợ lý mã hóa của bạn. Mặc dù trọng tâm ở đây là .NET và Amazon Q Developer, nhưng điều tương tự có thể được áp dụng cho các runtime và trợ lý mã hóa AI khác.
MCP Servers
Model Context Protocol (MCP) là một tiêu chuẩn mở được giới thiệu bởi Anthropic định nghĩa một cách có cấu trúc để các mô hình AI tương tác với các công cụ, nguồn dữ liệu và dịch vụ bên ngoài. Hãy coi nó như một bộ chuyển đổi phổ quát cho phép các trợ lý AI vượt ra ngoài dữ liệu đào tạo của chúng và kết nối với thông tin trực tiếp, động.
Một máy chủ MCP phơi bày một tập hợp các công cụ — các hàm rời rạc, có thể gọi được mà một mô hình AI có thể gọi để truy xuất dữ liệu, thực hiện hành động hoặc tương tác với các hệ thống bên ngoài. Sử dụng định dạng máy có thể đọc được, bạn mô tả các công cụ này để AI biết mỗi công cụ làm gì, nó mong đợi những đầu vào nào và nó trả về những đầu ra nào.
Key Concepts
- Tools: Các hàm mà AI có thể gọi (ví dụ:
get_customer_orders,query_inventory,run_sql) - Resources: Các đối tượng dữ liệu mà AI có thể đọc (ví dụ: tệp, bản ghi cơ sở dữ liệu, phản hồi API)
- Prompts: Các mẫu prompt có thể tái sử dụng để hướng dẫn hành vi của AI cho các tác vụ cụ thể
- Transport Layer: MCP hỗ trợ nhiều cơ chế truyền tải, bao gồm stdio (standard input/output) và HTTP với Server-Sent Events (SSE)
Các máy chủ MCP có thể là cục bộ (chạy trên máy của nhà phát triển) hoặc từ xa (được lưu trữ dưới dạng dịch vụ), làm cho chúng linh hoạt cho cả các trường hợp sử dụng cá nhân và toàn nhóm.

Hình 1: Tích hợp MCP Server với IDE
Phần 1: Custom MCP Server trong .NET
Xây dựng một máy chủ MCP tùy chỉnh trong C#/.NET rất đơn giản bằng cách sử dụng gói NuGet ModelContextProtocol, SDK .NET chính thức cho MCP được duy trì bởi Microsoft và cộng đồng .NET.
Điều kiện tiên quyết:
- Visual Studio Code hoặc Visual Studio đã được cài đặt
- Tiện ích mở rộng Amazon Q Developer đã được cài đặt (
amazonwebservices.amazon-q-vscode) - .NET 8 SDK hoặc mới hơn
- Tài khoản AWS Builder ID hoặc AWS IAM Identity Center
- Node.js đã được cài đặt (để kiểm thử Custom MCP Server cục bộ mà không cần sử dụng AI client)
Bước 1: Tạo dự án .NET Console mới
dotnet new console -n MyMcpServercd MyMcpServer
Bước 2: Thêm gói NuGet MCP
dotnet add package ModelContextProtocoldotnet add package Microsoft.Extensions.Hostingdotnet add package Npgsql
Bước 3: Định nghĩa các công cụ MCP của bạn
Tạo một tệp có tên PostgresDBTools.cs và định nghĩa các công cụ của bạn bằng cách sử dụng thuộc tính [McpServerTool]:
using ModelContextProtocol.Server;using System.ComponentModel;using Npgsql;[McpServerToolType]public static class PostgresDBTools{ const string DB_CONN_STRING_ENV_VAR = "DB_CONN_STRING"; const string DEFAULT_SCHEMA = "employee"; static string _connectionString; static PostgresDBTools() { _connectionString = Environment.GetEnvironmentVariable(DB_CONN_STRING_ENV_VAR) ?? string.Empty; } [McpServerTool, Description("Get all column names from the specified table in specified schema.")] public static async Task<List<string>> GetColumnNames(string tableName, string schema = DEFAULT_SCHEMA) { using var connection = new NpgsqlConnection(_connectionString); await connection.OpenAsync(); var command = new NpgsqlCommand( "SELECT column_name FROM information_schema.columns WHERE table_schema = @schema AND table_name = @tableName", connection); command.Parameters.AddWithValue("@schema", schema); command.Parameters.AddWithValue("@tableName", tableName); var columnNames = new List<string>(); using var reader = await command.ExecuteReaderAsync(); while (await reader.ReadAsync()) { columnNames.Add(reader.GetString(0)); } return columnNames; } [McpServerTool, Description("Get all table names from the specified schema.")] public static async Task<List<string>> GetTableNames(string schema = DEFAULT_SCHEMA) { //Code excluded for brevity. Follow implementation in GetColumnNames. //"SELECT table_name FROM information_schema.tables WHERE table_schema = @schema", } [McpServerTool, Description("Get records from the specified table in specified schema.")] public static async Task<List<Dictionary<string, object>>> GetRecords(string tableName, string schema = DEFAULT_SCHEMA) { var quotedSchema = new NpgsqlCommandBuilder().QuoteIdentifier(schema); var quotedTable = new NpgsqlCommandBuilder().QuoteIdentifier(tableName); using var connection = new NpgsqlConnection(_connectionString); await connection.OpenAsync(); var command = new NpgsqlCommand($"SELECT * FROM {quotedSchema}.{quotedTable} LIMIT 100", connection); using var reader = await command.ExecuteReaderAsync(); var results = new List<Dictionary<string, object>>(); while (await reader.ReadAsync()) { results.Add(Enumerable.Range(0, reader.FieldCount) .ToDictionary(i => reader.GetName(i), i => reader.GetValue(i))); } return results; }}
Bạn có thể thêm nhiều công cụ hoặc phương thức để lấy thông tin cụ thể từ cơ sở dữ liệu. Ví dụ, bạn có thể thêm một phương thức (công cụ máy chủ MCP) để lấy định nghĩa cột chính xác cho một bảng với truy vấn này:
SELECT column_name, data_type, character_maximum_length, numeric_precision, numeric_scale, is_nullable, column_default, ordinal_positionFROM information_schema.columnsWHERE table_schema = @schema AND table_name = @tableName
Bước 4: Cấu hình MCP Server Host
Cập nhật Program.cs để kết nối máy chủ MCP bằng cách sử dụng .NET Generic Host:
using Microsoft.Extensions.DependencyInjection;using Microsoft.Extensions.Hosting;using ModelContextProtocol.Server;var builder = Host.CreateApplicationBuilder(args);// Register MCP server with stdio transportbuilder.Services .AddMcpServer() .WithStdioServerTransport() .WithToolsFromAssembly();await builder.Build().RunAsync();
Bước 5: Xây dựng và kiểm thử
dotnet build
Để kiểm thử máy chủ MCP của bạn cục bộ trước khi kết nối nó với Amazon Q Developer, bạn sử dụng công cụ MCP Inspector:
npm install -g @modelcontextprotocol/inspectormcp-inspector dotnet run --project full-path-to-MyMcpServer
Thao tác này sẽ mở một giao diện người dùng dựa trên trình duyệt, nơi bạn nên thêm các biến môi trường cần thiết (DB_CONN_STRING cho dịch vụ MCP mẫu được tạo ở đây) và kết nối với máy chủ MCP. Sau khi kết nối, bạn có thể duyệt các công cụ đã đăng ký, gọi chúng với các đầu vào kiểm thử và kiểm tra phản hồi — tất cả mà không cần một AI client.
Cấu trúc dự án
MyMcpServer/├── MyMcpServer.csproj├── Program.cs├── Tools/│ ├── PostgresDBTools.cs
Bảo mật
Các đoạn mã được cung cấp ở đây chỉ mang tính tham khảo. Bạn phải xem xét và triển khai các hướng dẫn bảo mật sau trước khi sử dụng chúng trong môi trường phát triển thực tế:
- Xác thực và làm sạch các đầu vào được truyền đến máy chủ MCP.
- Tránh thêm các công cụ (phương thức) thực hiện các thao tác tạo, cập nhật hoặc xóa trong cơ sở dữ liệu.
- Không mã hóa cứng các bí mật hoặc cấu hình bảo mật trong mã máy chủ MCP; hãy sử dụng các biến môi trường, AWS Secrets Manager hoặc các dịch vụ cấu hình bảo mật khác.
- Nếu bạn đang phơi bày các máy chủ MCP qua HTTP (từ xa), hãy bảo vệ điểm cuối khỏi truy cập bên ngoài/công cộng.
- Thực hiện kiểm tra bảo mật các triển khai tùy chỉnh.
- Triển khai giám sát và ghi nhật ký cho tất cả các hoạt động của máy chủ MCP.
- Triển khai xử lý lỗi thích hợp không làm rò rỉ thông tin nhạy cảm, ví dụ: đọc bản ghi từ các bảng hoặc các nguồn dữ liệu khác chứa thông tin bảo mật hoặc bí mật.
Phần 2: Amazon Q Developer + MCP
Amazon Q Developer là trợ lý mã hóa được hỗ trợ bởi AI của AWS, có sẵn dưới dạng tiện ích mở rộng trong Visual Studio Code, Visual Studio, Eclipse, JetBrains IDEs và AWS Management Console. Nó hỗ trợ Model Context Protocol nguyên bản, cho phép các nhà phát triển kết nối các máy chủ MCP tùy chỉnh và mở rộng khả năng của Q Developer với kiến thức và công cụ chuyên biệt.
Thiết lập MCP với Amazon Q Developer trong Visual Studio Code hoặc Visual Studio
Bước 1: Cài đặt tiện ích mở rộng Amazon Q Developer
Mở VS Code, điều hướng đến Extensions Marketplace và tìm kiếm Amazon Q. Cài đặt tiện ích mở rộng và đăng nhập bằng AWS Builder ID hoặc thông tin đăng nhập IAM Identity Center của bạn.
Bước 2: Cấu hình MCP Server
Amazon Q Developer đọc cấu hình máy chủ MCP từ một tệp JSON. Tạo hoặc chỉnh sửa tệp cấu hình MCP tại:
- macOS/Linux:
~/.aws/amazonq/mcp.json - Windows:
%USERPROFILE%\.aws\amazonq\mcp.json
Thêm mục máy chủ MCP của bạn:
{ "mcpServers": { "my-dotnet-mcp-server": { "command": "dotnet", "args": [ "run", "--project", "/path/to/your/McpServer/McpServer.csproj" ], "env": { "DB_CONN_STRING": "your-db-connection-string", "API_KEY": "your-api-key" } } }}
Bước 3: Khởi động lại Amazon Q Developer
Sau khi lưu cấu hình, hãy tải lại Visual Studio Code hoặc Visual Studio. Amazon Q Developer sẽ tự động khởi động quá trình máy chủ MCP và đăng ký bất kỳ công cụ nào có sẵn. Bạn có thể xác minh kết nối bằng cách mở bảng trò chuyện Amazon Q — danh sách các công cụ đã đăng ký sẽ hiển thị là có sẵn để sử dụng.
Bước 4: Sử dụng công cụ MCP trong Chat
Sau khi kết nối, bạn có thể gọi các công cụ MCP trực tiếp từ giao diện trò chuyện Amazon Q Developer bằng ngôn ngữ tự nhiên:
"Create a DAL class to perform CRUD operations on employee table - using ADO.NET"
Amazon Q sẽ xác định công cụ MCP có liên quan, gọi nó với các tham số thích hợp và tích hợp dữ liệu trực tiếp vào phản hồi của nó.
Các câu lệnh (Prompts)
Sau đây là một số trường hợp sử dụng hoặc câu lệnh sẽ gọi máy chủ PostgresDB MCP tùy chỉnh:
- Create a Web API controller to perform CRUD operations on employees table in xyz schema
- What are the columns in employee table in xyz schema?
- Create postgres insert scripts to add 2 sample records in employee table.
- Create a Data Entity / Class for employee table.
- Create a DAL class to perform CRUD operations on employee table – using ADO.NET.
- Create sample JSON for employee table.
- Get employees from employee table.
- How many employees joined in 2025?
- How many employees are from Engineering department?
Các trường hợp sử dụng
Các máy chủ MCP mở ra một loạt các trường hợp sử dụng thực tế cho các nhóm phát triển doanh nghiệp. Dưới đây là một số trường hợp có tác động lớn nhất:
- Tài liệu API nội bộ & Tạo mã. Kết nối máy chủ MCP của bạn với các thông số kỹ thuật OpenAPI/Swagger nội bộ để Amazon Q Developer có thể tạo mã client, mô hình yêu cầu/phản hồi và kiểm thử tích hợp chính xác dựa trên các hợp đồng API thực tế của bạn — không phải các ví dụ chung chung.
- Khám phá Schema cơ sở dữ liệu. Phơi bày schema cơ sở dữ liệu của bạn thông qua các công cụ MCP để các nhà phát triển có thể đặt câu hỏi bằng ngôn ngữ tự nhiên như “Những bảng nào liên quan đến đơn đặt hàng của khách hàng?” và nhận được các truy vấn SQL chính xác, nhận biết schema được tạo ngay lập tức.
- Thông tin chi tiết về Pipeline CI/CD. Xây dựng các công cụ MCP truy vấn hệ thống CI/CD của bạn (ví dụ: AWS CodePipeline, Jenkins, GitHub Actions) để hiển thị trạng thái xây dựng, các lỗi gần đây và lịch sử triển khai trực tiếp trong giao diện trò chuyện của nhà phát triển.
- Phản hồi sự cố và Runbook. Kết nối MCP của bạn với kho lưu trữ runbook nội bộ và hệ thống giám sát để các kỹ sư trực ca có thể hỏi
"What are the remediation steps for an Amazon DynamoDB throttling alert?"và nhận được hướng dẫn chính xác theo ngữ cảnh. - Khám phá tài nguyên đám mây. Phơi bày siêu dữ liệu tài nguyên AWS (các phiên bản Amazon EC2, các bucket Amazon S3, các hàm AWS Lambda) thông qua các công cụ MCP. Điều này sẽ giúp các nhà phát triển hiểu trạng thái hiện tại của cơ sở hạ tầng của họ và tạo các mẫu IaC (Infrastructure as Code) chính xác.
Kết luận
Sự kết hợp giữa Amazon Q Developer và các máy chủ MCP tùy chỉnh đại diện cho một mô hình mới mạnh mẽ cho phát triển phần mềm được hỗ trợ bởi AI. Bằng cách mở rộng khả năng của Amazon Q với các công cụ chuyên biệt được xây dựng trong .NET, các nhóm phát triển có thể thu hẹp khoảng cách giữa AI đa năng và các môi trường phức tạp, độc đáo của các ứng dụng doanh nghiệp trong thế giới thực.
Với MCP, trợ lý AI của bạn không còn bị giới hạn bởi những gì nó đã học trong quá trình đào tạo. Nó có thể truy vấn các API nội bộ của bạn, khám phá schema cơ sở dữ liệu của bạn, hiển thị các runbook của bạn và tương tác với các hệ thống độc quyền của bạn — tất cả trong thời gian thực, trực tiếp từ IDE của bạn.
Hệ sinh thái .NET giúp việc xây dựng các máy chủ MCP trở nên dễ tiếp cận đối với bất kỳ nhà phát triển C# nào. Chỉ với một vài gói NuGet và các mẫu quen thuộc như dependency injection và Generic Host, bạn có thể có một máy chủ MCP sẵn sàng sản xuất chạy trong vài giờ, không phải vài ngày.
Các nhóm đầu tư vào việc xây dựng một thư viện các máy chủ MCP được thiết kế tốt ngày nay sẽ có lợi thế năng suất đáng kể vào ngày mai — làm quen nhanh hơn, triển khai mã chất lượng cao hơn và dành nhiều thời gian hơn để giải quyết các vấn đề thú vị thay vì tìm kiếm ngữ cảnh.
Kêu gọi hành động
Hãy xây dựng máy chủ MCP tùy chỉnh của bạn và tăng cường Amazon Q Developer trong IDE của bạn.
Dưới đây là mọi thứ bạn cần để bắt đầu — cho dù bạn là nhà phát triển .NET hay làm việc bằng ngôn ngữ khác.
Bắt đầu với Amazon Q Developer
Cài đặt Amazon Q Developer trong IDE của bạn: Tài liệu | Visual Studio Code Marketplace | JetBrains Marketplace | Visual Studio Marketplace
Tài liệu Amazon Q Developer: https://docs.aws.amazon.com/amazonq
MCP với Amazon Q Developer (Tài liệu chính thức): Sử dụng MCP với Amazon Q Developer
Cấu hình MCP trong IDE: Cấu hình MCP cho Q Developer trong IDE
Xây dựng MCP Servers — Bằng ngôn ngữ bạn chọn
SDK ModelContextProtocol: https://github.com/modelcontextprotocol
Workshop Amazon Q Developer CLI & MCP (thực hành): AWS Workshop
Tài nguyên chính thức của MCP
Tài liệu & Đặc tả chính thức của MCP: https://modelcontextprotocol.io
Các máy chủ MCP được xây dựng sẵn: https://github.com/modelcontextprotocol/servers
MCP Inspector (công cụ kiểm thử cục bộ): https://github.com/modelcontextprotocol/inspector
Hãy bắt đầu xây dựng máy chủ MCP đầu tiên của bạn ngay hôm nay — bạn (và nhóm của bạn) sẽ cảm ơn bạn trong tương lai.
Về tác giả

Ramkumar Ramanujam
Ramkumar Ramanujam là Tư vấn viên Đám mây Cấp cao tại AWS Professional Services. Anh ấy giúp khách hàng hiện đại hóa và di chuyển các khối lượng công việc .NET của họ lên AWS, đồng thời có sự quan tâm đặc biệt đến công nghệ Container và Serverless. Ngoài công việc, anh ấy thích vẽ/sơn và chơi cricket.