0
0
Lập trình
Admin Team
Admin Teamtechmely

Hỗ Trợ HTTP Streamable cho Slack Explorer MCP

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

• 4 phút đọc

Giới thiệu

Trong bài viết này, tôi sẽ giới thiệu về việc thêm hỗ trợ HTTP Streamable vào Slack Explorer MCP, một công cụ mà tôi đã giới thiệu trước đó. Giờ đây, bạn có thể dễ dàng kết nối từ ChatGPT và các công cụ AI khác thông qua Remote MCP bằng cách lưu trữ nó ở một nơi nào đó. Hãy cùng tôi tìm hiểu cách sử dụng nó.

Cách khởi động

Để khởi động Slack Explorer MCP trong chế độ HTTP Streamable, bạn có thể sử dụng lệnh sau:

bash Copy
# Khởi động trong chế độ HTTP Streamable (cổng mặc định: 8080)
docker run -i --rm --pull always \
  -e TRANSPORT=http \
  -p 8080:8080 \
  ghcr.io/shibayu36/slack-explorer-mcp:latest

# Khởi động với cổng tùy chỉnh
docker run -i --rm --pull always \
  -e TRANSPORT=http \
  -e HTTP_PORT=9090 \
  -p 9090:9090 \
  ghcr.io/shibayu36/slack-explorer-mcp:latest

Khi chạy với cài đặt mặc định (http://localhost:8080), bạn có thể thêm máy chủ MCP vào Claude Code như sau. Token Slack sẽ được truyền qua tiêu đề X-Slack-User-Token.

bash Copy
claude mcp add \
  --transport http \
  --header "X-Slack-User-Token: xoxp-..." \
  -- slack-explorer-mcp http://localhost:8080/mcp

Tại sao tôi muốn hỗ trợ HTTP Streamable

Tôi muốn thêm hỗ trợ HTTP Streamable để giúp cho những người không phải kỹ sư cũng có thể sử dụng dễ dàng hơn. Trước đây, với giao tiếp stdio, người dùng cần phải thiết lập Docker cục bộ và chạy các container. Mặc dù điều này rất đơn giản với các nhà phát triển, nhưng nó tạo ra một rào cản cho những người khác.

Với hỗ trợ HTTP Streamable, bạn có thể lưu trữ nó ở một nơi nào đó và kết nối từ ChatGPT và các công cụ khác. Không cần thiết lập môi trường cục bộ nữa.

Nền tảng kỹ thuật: Bộ nhớ cache và triển khai Stateful

Tôi muốn chia sẻ một thách thức kỹ thuật mà tôi đã gặp phải - tôi phải triển khai điều này như một dịch vụ stateful. Khi thêm hỗ trợ HTTP Streamable, việc triển khai stateless sẽ dễ dàng hơn. Bằng cách đó, bạn có thể dễ dàng triển khai lên các nền tảng serverless như Lambda. Tuy nhiên, Slack Explorer MCP lại lưu trữ danh sách người dùng của Slack, vì vậy tôi không thể triển khai nó stateless.

Do đó, tôi đã triển khai nó như một dịch vụ stateful với quản lý bộ nhớ cache trong bộ nhớ theo từng phiên. Bộ nhớ cache có cơ chế hết hạn, và tôi sử dụng goroutines để thường xuyên dọn dẹp các mục hết hạn nhằm ngăn ngừa rò rỉ bộ nhớ.

Bạn có thể xem cách này được triển khai trong user_repository.go, nơi xử lý quản lý bộ nhớ cache.

Thực hành tốt nhất

  • Thường xuyên kiểm tra: Đảm bảo kiểm tra định kỳ các dịch vụ của bạn để ngăn chặn các lỗi không mong muốn và cải thiện hiệu suất.
  • Quản lý bộ nhớ cache: Sử dụng các cơ chế hết hạn để giải phóng bộ nhớ đã không còn cần thiết.

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

  • Thiếu cấu hình đúng: Đảm bảo rằng bạn đã cấu hình đúng các biến môi trường khi chạy Docker.
  • Không quản lý bộ nhớ cache hiệu quả: Điều này có thể dẫn đến rò rỉ bộ nhớ và giảm hiệu suất.

Mẹo hiệu suất

  • Sử dụng cổng tùy chỉnh: Nếu bạn đang chạy nhiều dịch vụ cùng một lúc, hãy sử dụng cổng tùy chỉnh để tránh xung đột.
  • Theo dõi hiệu suất: Sử dụng các công cụ giám sát để theo dõi hiệu suất của dịch vụ và điều chỉnh khi cần thiết.

Khắc phục sự cố

  • Không thể kết nối tới Slack: Kiểm tra xem token Slack của bạn có đúng không và có đang được truyền qua tiêu đề không.
  • Lỗi khi khởi động Docker: Đảm bảo rằng Docker đã được cài đặt và đang chạy trên máy của bạn.

Tóm tắt

Tôi đã thêm hỗ trợ HTTP Streamable vào Slack Explorer MCP để làm cho nó dễ tiếp cận hơn cho những người không phải kỹ sư. Dù việc triển khai bộ nhớ cache là một thách thức, nhưng tôi rất hài lòng với kết quả đạt được. Hãy thử nghiệm và chia sẻ trải nghiệm của bạn với tôi!

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

Hỗ trợ HTTP Streamable là gì?

Hỗ trợ HTTP Streamable cho phép bạn kết nối các công cụ AI mà không cần thiết lập môi trường cục bộ.

Tôi có thể sử dụng công cụ nào với Slack Explorer MCP?

Bạn có thể sử dụng các công cụ như ChatGPT và nhiều công cụ AI khác để kết nối.

Có cần thiết lập Docker không?

Không, bạn chỉ cần lưu trữ dịch vụ ở một nơi nào đó và kết nối thông qua HTTP.

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