Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat
Các máy chủ MCPSalesforce MCP

Salesforce MCP

Cấu hình các máy chủ MCP được lưu trữ trên Salesforce trong LibreChat với External Client App và OAuth theo từng người dùng.

Các máy chủ MCP do Salesforce lưu trữ cho phép người dùng LibreChat kết nối với Salesforce thông qua OAuth theo từng người dùng. Mỗi lệnh gọi công cụ đều chạy với quyền của người dùng Salesforce đã xác thực, bao gồm bảo mật cấp trường, quyền đối tượng và các quy tắc chia sẻ.

Sử dụng một ứng dụng khách bên ngoài

Các máy chủ MCP được lưu trữ trên Salesforce yêu cầu một External Client App. Các Classic Salesforce Connected Apps không được hỗ trợ cho xác thực MCP được lưu trữ.

Những gì bạn sẽ cấu hình

Hướng dẫn này bắt đầu với máy chủ SObject chỉ đọc vì đây là kết nối đầu tiên an toàn nhất. Sau khi kết nối đó hoạt động, bạn có thể chuyển sang máy chủ Salesforce rộng hơn.

Máy chủCấp độ truy cậpURL sản xuấtURL sandbox hoặc scratch
SObject ReadsĐọc, truy vấn, tìm kiếm, quan hệhttps://api.salesforce.com/platform/mcp/v1/platform/sobject-readshttps://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-reads
SObject MutationsĐọc, tạo, cập nhật, không xóahttps://api.salesforce.com/platform/mcp/v1/platform/sobject-mutationshttps://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-mutations
SObject DeletesQuy trình tập trung vào xóahttps://api.salesforce.com/platform/mcp/v1/platform/sobject-deleteshttps://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-deletes
SObject AllTạo, đọc, cập nhật, xóa đầy đủhttps://api.salesforce.com/platform/mcp/v1/platform/sobject-allhttps://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-all

Đường dẫn callback OAuth

Đường dẫn callback OAuth MCP của LibreChat là BASE_URL/api/mcp/SERVER_NAME/oauth/callback. SERVER_NAME là khóa nằm trong mcpServers trong librechat.yaml. Các ví dụ dưới đây sử dụng salesforce, vì vậy callback cục bộ là http://localhost:3080/api/mcp/salesforce/oauth/callback.

Điều kiện tiên quyết

  • Một Salesforce org hỗ trợ các máy chủ Hosted MCP và quyền truy cập API.
  • Quyền Quản trị viên Hệ thống (System Administrator), hoặc các quyền tương đương để tạo External Client Apps và kích hoạt các máy chủ MCP.
  • Một instance LibreChat đang chạy với librechat.yaml được mount hoặc được tải theo cách khác.
  • URL cơ sở công khai mà người dùng sử dụng để mở LibreChat, ví dụ: http://localhost:3080 cho môi trường phát triển cục bộ hoặc https://chat.example.com cho môi trường sản xuất.

Nếu bạn chưa có Salesforce org, hãy tạo một Developer Edition org miễn phí tại developer.salesforce.com/signup, xác minh tài khoản qua email, sau đó đăng nhập tại login.salesforce.com. Nếu các menu Thiết lập Salesforce trong hướng dẫn này không hiển thị trong org, hãy sử dụng production, sandbox hoặc trial org được hỗ trợ với các máy chủ MCP được lưu trữ (Hosted MCP servers) đã được bật.

Thiết lập

Kích hoạt máy chủ MCP Salesforce

Trong Salesforce, hãy mở Setup.

  1. Trong Quick Find, tìm kiếm MCP Servers.
  2. Mở MCP Servers trong API Catalog.
  3. Bật máy chủ bạn muốn sử dụng. Đối với thiết lập lần đầu, hãy bật platform/sobject-reads.
  4. Đợi tối đa 2 phút để máy chủ chuyển sang trạng thái hoạt động.

Nếu bạn dự định sử dụng ví dụ toàn quyền truy cập, hãy bật platform/sobject-all thay thế.

Tạo một Ứng dụng Client bên ngoài

Trong phần Thiết lập Salesforce:

  1. Trong Quick Find, hãy tìm kiếm External Client App Manager.
  2. Nhấp vào New External Client App.
  3. Điền thông tin cơ bản của ứng dụng. Hãy sử dụng một cái tên rõ ràng, chẳng hạn như LibreChat Salesforce MCP.
  4. Mở rộng API (Enable OAuth Settings) và bật OAuth.
  5. Thêm URL callback của LibreChat.

Đối với phát triển cục bộ:

http://localhost:3080/api/mcp/salesforce/oauth/callback

Đối với môi trường production, hãy thay thế base URL bằng URL LibreChat công khai của bạn:

https://chat.example.com/api/mcp/salesforce/oauth/callback

Cấu hình OAuth scopes và bảo mật

Trong cài đặt OAuth của External Client App, hãy thêm các phạm vi (scopes) sau:

mcp_api
refresh_token

Không sử dụng phạm vi (scope) api tiêu chuẩn của Salesforce cho các máy chủ MCP được lưu trữ (Hosted MCP servers). Máy chủ MCP yêu cầu phạm vi mcp_api.

Trong cài đặt bảo mật của External Client App:

  • Chọn Issue JSON Web Token (JWT)-based access tokens for named users.
  • Chọn Require Proof Key for Code Exchange (PKCE) extension for Supported Authorization Flows.
  • Để nguyên Require Secret for Web Server Flow ở trạng thái tắt (disabled) cho thiết lập cơ bản trong hướng dẫn này.
  • Để nguyên Require Secret for Refresh Token Flow ở trạng thái tắt (disabled) cho thiết lập cơ bản trong hướng dẫn này.

Nhấp vào Create, sau đó mở cài đặt ứng dụng và sao chép Consumer Key. Salesforce cho biết một External Client App mới có thể mất tới 30 phút để khả dụng.

Client secret tùy chọn

LibreChat có thể lưu trữ client secret ở phía máy chủ. Nếu quản trị viên Salesforce của bạn bật tùy chọn Require Secret for Web Server Flow, hãy tạo thêm client secret và bao gồm các trường client_secret tùy chọn được hiển thị ở phần sau của hướng dẫn này.

Thêm Salesforce client ID vào .env

Thêm consumer key của External Client App vào tệp .env trong LibreChat của bạn:

SALESFORCE_MCP_CLIENT_ID=your-salesforce-consumer-key

Nếu bạn đã bật Require Secret for Web Server Flow, hãy thêm cả:

SALESFORCE_MCP_CLIENT_SECRET=your-salesforce-client-secret

Thêm Salesforce MCP vào librechat.yaml

Ví dụ này cấu hình máy chủ SObject chỉ đọc cho một org production hoặc Developer Edition:

mcpServers:
  salesforce:
    type: streamable-http
    url: 'https://api.salesforce.com/platform/mcp/v1/platform/sobject-reads'
    timeout: 90000
    initTimeout: 150000
    requiresOAuth: true
    startup: false
    oauth:
      authorization_url: 'https://login.salesforce.com/services/oauth2/authorize'
      token_url: 'https://login.salesforce.com/services/oauth2/token'
      client_id: '${SALESFORCE_MCP_CLIENT_ID}'
      scope: 'mcp_api refresh_token'
      redirect_uri: 'http://localhost:3080/api/mcp/salesforce/oauth/callback'

Đối với sandbox hoặc scratch org, hãy sử dụng URL MCP sandbox và các endpoint OAuth của Salesforce sandbox:

mcpServers:
  salesforce:
    type: streamable-http
    url: 'https://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-reads'
    timeout: 90000
    initTimeout: 150000
    requiresOAuth: true
    startup: false
    oauth:
      authorization_url: 'https://test.salesforce.com/services/oauth2/authorize'
      token_url: 'https://test.salesforce.com/services/oauth2/token'
      client_id: '${SALESFORCE_MCP_CLIENT_ID}'
      scope: 'mcp_api refresh_token'
      redirect_uri: 'http://localhost:3080/api/mcp/salesforce/oauth/callback'

Nếu Ứng dụng Khách Bên ngoài của bạn yêu cầu một client secret, hãy thêm các trường này vào bên trong oauth:

oauth:
  client_secret: '${SALESFORCE_MCP_CLIENT_SECRET}'
  token_exchange_method: default_post
  token_endpoint_auth_methods_supported: ['client_secret_post']

Nếu LibreChat được triển khai tại một URL công khai, hãy cập nhật redirect_uri để khớp chính xác với URL callback đã đăng ký trong Salesforce.

Danh sách cho phép miền MCP nghiêm ngặt

Nếu librechat.yaml của bạn cũng cấu hình mcpSettings.allowedDomains, hãy thêm api.salesforce.com. Nếu bạn sử dụng các endpoint OAuth của Salesforce sandbox và chính sách của bạn cũng áp dụng cho các máy chủ OAuth, hãy cho phép cả test.salesforce.com hoặc máy chủ My Domain của sandbox của bạn.

Chuyển sang quyền truy cập Salesforce đầy đủ, nếu cần

Sau khi máy chủ chỉ đọc (read-only) hoạt động, bạn có thể chuyển sang một máy chủ Salesforce đã kích hoạt khác bằng cách thay đổi url.

Để có quyền truy cập SObject đầy đủ trong một org production hoặc Developer Edition:

url: 'https://api.salesforce.com/platform/mcp/v1/platform/sobject-all'

Để có quyền truy cập SObject đầy đủ trong sandbox hoặc scratch org:

url: 'https://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-all'

Chỉ cung cấp quyền truy cập vào các máy chủ có khả năng thay đổi (mutation) hoặc xóa dữ liệu cho những người dùng được phép tạo, cập nhật hoặc xóa các bản ghi Salesforce thông qua trợ lý.

Khởi động lại LibreChat

Khởi động lại LibreChat để tải lại .envlibrechat.yaml.

Triển khaiLệnh
Dockerdocker compose up -d
LocalDừng máy chủ, sau đó khởi động lại

Để xác nhận máy chủ đã tải trong Docker, hãy kiểm tra nhật ký API:

docker logs LibreChat --tail 200 | grep MCP

Kết nối Salesforce trong LibreChat

Mở LibreChat, sau đó mở MCP Settings hoặc menu thả xuống MCP Servers trong phần nhập liệu trò chuyện.

  1. Nhấp vào Connect cho máy chủ Salesforce.
  2. Hoàn tất quy trình Salesforce OAuth.
  3. Xem lại các phạm vi mcp_apirefresh_token được yêu cầu.
  4. Quay lại LibreChat sau khi trang xác thực OAuth đóng lại.

Sau khi OAuth thành công và kết nối MCP khởi tạo, các công cụ Salesforce sẽ khả dụng trong trò chuyện và trong Agent Builder.

Kiểm thử

Hãy thử các câu lệnh (prompts) phù hợp với server mà bạn đã bật:

ServerPrompt
Any SObject server"Who am I in Salesforce?"
SObject Reads"Show me my five most recently viewed accounts."
SObject Reads"Find open cases related to Acme Corp and summarize them."
SObject Mutations"Create a follow-up task for this account. Ask me before saving anything."
SObject All"Update this opportunity stage to Closed Won after confirming the exact record."

Để kiểm tra tính hợp lệ ở cấp độ thấp hơn, hãy thử nghiệm cùng một máy chủ Salesforce với Postman hoặc MCP Inspector. Nếu cách đó hoạt động nhưng LibreChat thì không, hãy so sánh URL callback, các phạm vi OAuth và URL máy chủ của LibreChat với ứng dụng khách đang hoạt động.

Khắc phục sự cố

Triệu chứngNhững điều cần kiểm tra
Salesforce báo redirect_uri_mismatchURL callback của External Client App phải khớp chính xác với redirect_uri trong librechat.yaml, bao gồm giao thức, tên máy chủ, cổng, tên máy chủ và đường dẫn.
Lịch sử đăng nhập Salesforce báo Invalid Code VerifierTrạng thái PKCE không khớp với callback. Tránh bắt đầu nhiều luồng OAuth cùng một lúc. Trong các triển khai đa bản sao (multi-replica), hãy đảm bảo LibreChat sử dụng bộ lưu trữ luồng OAuth dùng chung, chẳng hạn như Redis, để các yêu cầu ủy quyền và callback có thể được xử lý an toàn trên các bản sao khác nhau.
Salesforce trả về JWT Token is requiredMáy chủ đang được gọi mà không có mã thông báo truy cập MCP của Salesforce. Hãy hoàn tất OAuth từ LibreChat, xác nhận requiresOAuth: true và xác nhận người dùng đã ủy quyền cho External Client App.
Salesforce trả về Invalid tokenXác nhận rằng External Client App sử dụng mcp_api, cấp mã thông báo truy cập dựa trên JWT và đã bật PKCE. Đồng thời xác nhận URL MCP và các endpoint OAuth trỏ đến cùng một loại tổ chức, production hoặc sandbox.
Salesforce trả về Server definition not found for: sobject-allMáy chủ chưa được kích hoạt, vẫn đang trong quá trình lan truyền hoặc URL sử dụng sai đường dẫn production hoặc sandbox. Hãy bật máy chủ trong Salesforce Setup và đợi tối đa 2 phút.
Làm mới mã thông báo thất bại với lỗi liên quan đến scopeSử dụng mcp_api refresh_token làm scope đã cấu hình. Không thay thế scope api thông thường của Salesforce cho Hosted MCP.
LibreChat hiển thị Salesforce nhưng không có công cụ nàoKết nối máy chủ từ giao diện người dùng LibreChat. Các máy chủ từ xa được bật OAuth sẽ hiển thị các công cụ sau khi người dùng đã xác thực và máy chủ đã khởi tạo.
Các yêu cầu MCP bị chặn bởi chính sách tên miền của LibreChatNếu mcpSettings.allowedDomains đã được cấu hình, hãy cho phép api.salesforce.com và bất kỳ máy chủ OAuth Salesforce nào mà triển khai của bạn sử dụng.

Ghi chú về bảo mật

  • Bắt đầu với platform/sobject-reads trừ khi người dùng thực sự cần quyền ghi hoặc xóa.
  • Salesforce thực thi các quyền của người dùng đã xác thực, nhưng trợ lý vẫn có thể đề xuất các hành động trên phạm vi rộng. Hãy xem xét kỹ các thao tác ghi và xóa.
  • Sử dụng các tập quyền (permission sets) của Salesforce và chính sách External Client App để hạn chế những ai có thể ủy quyền cho MCP client.
  • Hãy coi các bản ghi Salesforce là dữ liệu đầu vào không đáng tin cậy. Các bản ghi có thể chứa những nỗ lực tấn công chèn lệnh gián tiếp (indirect prompt injection) nhằm cố gắng gây ảnh hưởng đến trợ lý.
  • Đối với các triển khai trong môi trường production có nhiều bản sao LibreChat API, hãy sử dụng bộ nhớ dùng chung cho trạng thái luồng OAuth để các callback PKCE có tính bền vững trên các bản sao.

Hướng dẫn này thế nào?