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ập | URL sản xuất | URL 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-reads | https://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-reads |
| SObject Mutations | Đọc, tạo, cập nhật, không xóa | https://api.salesforce.com/platform/mcp/v1/platform/sobject-mutations | https://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-mutations |
| SObject Deletes | Quy trình tập trung vào xóa | https://api.salesforce.com/platform/mcp/v1/platform/sobject-deletes | https://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-deletes |
| SObject All | Tạo, đọc, cập nhật, xóa đầy đủ | https://api.salesforce.com/platform/mcp/v1/platform/sobject-all | https://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:3080cho môi trường phát triển cục bộ hoặchttps://chat.example.comcho 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.
- Trong Quick Find, tìm kiếm
MCP Servers. - Mở MCP Servers trong API Catalog.
- 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. - Đợ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:
- Trong Quick Find, hãy tìm kiếm
External Client App Manager. - Nhấp vào New External Client App.
- Đ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. - Mở rộng API (Enable OAuth Settings) và bật OAuth.
- 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/callbackCấ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_tokenKhô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-keyNếu bạn đã bật Require Secret for Web Server Flow, hãy thêm cả:
SALESFORCE_MCP_CLIENT_SECRET=your-salesforce-client-secretThê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 .env và librechat.yaml.
| Triển khai | Lệnh |
|---|---|
| Docker | docker compose up -d |
| Local | Dừ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 MCPKế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.
- Nhấp vào Connect cho máy chủ Salesforce.
- Hoàn tất quy trình Salesforce OAuth.
- Xem lại các phạm vi
mcp_apivàrefresh_tokenđược yêu cầu. - 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:
| Server | Prompt |
|---|---|
| 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ứng | Những điều cần kiểm tra |
|---|---|
Salesforce báo redirect_uri_mismatch | URL 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 Verifier | Trạ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 required | Má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 token | Xá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-all | Má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 scope | Sử 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ào | Kế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 LibreChat | Nế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-readstrừ 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.
Các trang liên quan
Hướng dẫn này thế nào?