8 điểm bởi GN⁺ 2025-03-27 | 4 bình luận | Chia sẻ qua WhatsApp
  • MCP(Model Context Protocol) là một cách chuẩn hóa để cung cấp công cụ và ngữ cảnh cho LLM
  • Giống như cổng USB-C, nó đóng vai trò là giao diện tiêu chuẩn để kết nối mô hình AI với nhiều nguồn dữ liệu hoặc công cụ khác nhau
  • OpenAI Agents SDK hỗ trợ MCP, cho phép tích hợp với nhiều máy chủ MCP khác nhau

Máy chủ MCP

  • Hiện tại, đặc tả MCP định nghĩa hai loại máy chủ tùy theo cơ chế truyền tải được sử dụng:
    1. Máy chủ stdio chạy như tiến trình con của ứng dụng và có thể xem là chạy ở chế độ "cục bộ".
    2. Máy chủ HTTP over SSE chạy từ xa và kết nối thông qua URL.
  • Có thể kết nối tới các máy chủ này bằng các lớp MCPServerStdioMCPServerSse.
  • Ví dụ, cách sử dụng máy chủ hệ thống tệp MCP chính thức như sau:
    async with MCPServerStdio(  
        params={  
            "command": "npx",  
            "args": ["-y", "@modelcontextprotocol/server-filesystem", samples_dir],  
        }  
    ) as server:  
        tools = await server.list_tools()  
    

Bộ nhớ đệm

  • Việc gọi list_tools() của máy chủ MCP mỗi khi tác nhân chạy có thể gây ra độ trễ, đặc biệt nếu đó là máy chủ từ xa.
  • Để tự động lưu đệm danh sách công cụ, có thể truyền cache_tools_list=True vào MCPServerStdioMCPServerSse. Chỉ nên làm điều này khi bạn chắc chắn rằng danh sách công cụ sẽ không thay đổi.
  • Để làm mất hiệu lực bộ nhớ đệm, có thể gọi invalidate_tools_cache() trên máy chủ.

4 bình luận

 
GN⁺ 2025-03-27
Ý kiến Hacker News
  • Hôm nay MCP đã bổ sung Streamable HTTP. Đây là một bước tiến lớn vì không còn cần phải luôn duy trì kết nối tới máy chủ HTTP từ xa

    • Nhưng khi nhìn vào đặc tả, việc đưa mô hình kiểu LSP vào máy chủ HTTP từ xa đang làm tăng thêm rất nhiều độ phức tạp
    • Theo cách truyền thống, chỉ cần gửi HTTP POST tới /get_weather với { "location": "New York" }
    • Đã có đề xuất giảm bớt độ phức tạp và quay lại với máy chủ HTTP truyền thống. Phiên làm việc được thương lượng qua header Authorization và sử dụng các endpoint truyền thống
    • Việc xây dựng máy chủ sẽ dễ hơn nhiều và các web framework cũng sẽ không cần phải cập nhật để phù hợp với đặc tả
  • Có một phép ví von rằng hãy nghĩ MCP như cổng USB-C của ứng dụng AI

    • Với tư cách là một kỹ sư phần mềm, phép ví von đó không giúp ích gì nhiều
  • Tôi từng tự hỏi liệu OpenAI có chính thức ủng hộ nó hay không, và giờ thì đã có câu trả lời

    • MCP đã trở thành tiêu chuẩn ngành để kết nối LLM với các công cụ bên ngoài
  • Tôi từng hy vọng họ sẽ hỗ trợ OpenAPI. Tôi đã tạo vài máy chủ MCP, nhưng nó cho cảm giác như một API kém linh hoạt hơn và được tài liệu hóa tệ hơn

    • Rất khó tìm ra điểm nào MCP tốt hơn OpenAPI. Có ít code hơn một chút, nhưng lựa chọn thì ít đi rất nhiều
    • Theo thời gian rồi Swagger cũng sẽ được tích hợp sẵn
  • Rất khó hiểu giá trị của MCP là gì. Nó giống như thêm một yếu tố gây xao nhãng nữa giữa mớ hỗn loạn của công nghệ AI hiện đại

    • MCP là một giao thức mở tiêu chuẩn hóa cách ứng dụng cung cấp ngữ cảnh cho LLM
    • Tôi không chắc có gì cần được tiêu chuẩn hóa ở đây. Chúng ta đang dùng bộ biến đổi văn bản-thành-văn bản hoạt động trên các chuỗi token hóa tùy ý
    • Những thứ như gọi công cụ/chức năng cũng chỉ là các heuristic khéo léo đặt trên lớp văn bản thuần túy
  • Tôi đã xây dựng một kiến trúc cho phép tác nhân AI sử dụng "công cụ" ở máy cục bộ. Nó hoạt động với mọi loại LLM và máy chủ LLM

    • Nó hoạt động như middleware, chạy theo dạng stream giữa máy chủ LLM và chat client
    • Đây là một dự án mã nguồn mở, nhưng repo không được cập nhật vì không ai tỏ ra quan tâm tới code
  • Thiếu các video cho thấy MCP thực sự được sử dụng như thế nào. Thiếu các trường hợp sử dụng thực tế dành cho lập trình viên

  • Có một phép ví von rằng hãy nghĩ MCP như cổng USB-C của ứng dụng AI

    • Nhưng vì tôi đã nghe quá nhiều câu chuyện đau đầu về việc triển khai USB, có lẽ nên tìm một phép ví von khác thì hơn
  • Có vẻ như nó đang nhắm tới HTTP+SSE, phiên bản cũ của MCP, chứ không phải phiên bản Streaming HTTP mới

    • Còn có hỗ trợ OAuth 2.1, JSON-RPC batching, v.v.
  • Nếu muốn thử MCP một cách đơn giản, tôi đã tạo <a href="https://skeet.build/mcp" rel="nofollow">skeet.build/mcp</a>

    • Tôi làm nó vì cấu hình MCP quá phức tạp, thiếu hỗ trợ, và việc tự xây dựng thì khó khăn
    • Chủ yếu được dùng cho các workflow như sau
      • Viết tóm tắt khi bắt đầu PR
      • Tóm tắt lên Slack hoặc để lại bình luận trên Linear/Jira
      • Lấy issue từ Sentry rồi sửa
      • Tạo issue trên Linear khi phát hiện bug
      • Lấy issue từ Linear và xử lý lượt đầu tiên
      • Lấy tài liệu Notion và PRD rồi tạo tham chiếu API từ codebase
      • Schema Postgres hoặc MySQL để phát triển mô hình nhanh chóng
    • Tập trung vào tính dễ dùng, các workflow thực tiễn cho lập trình viên, và các máy chủ MCP chất lượng cao
 
samchon 2025-03-27

Tôi cũng nghĩ OpenAPI function calling có vẻ tốt hơn. Việc làm lại cái này bằng giao thức MCP cũng là cả một việc.

 
mangoblue 2025-03-28

Có phải là khác nhau giữa push và poll không. Thay vì mỗi model, mỗi dịch vụ đều phải làm function calling, có vẻ cách host spec MCP rồi để agent tự poll sẽ tiện hơn cho bên thứ ba.