Salesforce的MCP元数据(内测版)
此存储库包含Salesforce元数据模板,用于使用命名凭据和外部服务将模型上下文协议(MCP)服务器与Salesforce集成。
以下元数据仅适用于MCP客户端测试参与者。
包含什么
- 外部凭证 --从两种身份验证类型中选择一种:
- OAuth 2.0客户端凭据 (默认) - 无需认证 --适用于公共/未经身份验证的MCP服务器
- 命名凭证 -MCP服务器的安全端点配置
- 外部服务注册 -MCP服务注册
- 权限集 -外部凭据的访问权限
先决条件
- 已安装Node.js 18+
- Salesforce命令行界面(
sf)已安装 - 具有API访问权限的Salesforce组织
- 您的MCP服务器详细信息:
- 服务器URL - 仅适用于OAuth服务器:OAuth令牌端点URL
快速入门(推荐--无克隆)
从现有SFDX项目的根(其中 sfdx-project.json 或 sf-project.json 生命):
npm create @mvogelgesang/sf-mcp-client-metadata@latest向导在以下位置写入元数据 ./force-app/main/default/ 在你的 当前工作目录。从项目根目录运行该命令,以便文件落在正确的位置。
选项
传递旗帜后 -- (npm要求将其转发给生成器):
npm create @mvogelgesang/sf-mcp-client-metadata@latest -- --target ./packages/my-app所有旗帜均接受 --key value 或 --key=value.
- **`--target
** --SFDX项目根(必须包含 force-app/main/default),或者已经存在的路径 force-app/main/default,或包含以下内容的目录 externalCredentials / namedCredentials 作为直系子女(被视为 default` 元数据文件夹)。
--mcp-name--MCP服务器的唯一标识符。只有字母,没有数字或下划线。--mcp-server-url--MCP服务器端点URL(必须以开头http://或https://).--auth-type--身份验证类型。接受oauth或noauth不区分大小写默认为oauth当以交互方式提示时。--auth-provider-url--OAuth 2.0令牌终结点URL。当--auth-type=oauth;在以下情况下被忽略并发出警告--auth-type=noauth.--namespace--Salesforce命名空间前缀。可选;通过""明确跳过。--overwrite(别名--force)--在不提示的情况下,用相同的名称替换现有的MCP实例。-h,--help--显示帮助并退出。
node setup.mjs --help非交互式使用
当 --mcp-name, --mcp-server-url, --auth-type和(for oauth) --auth-provider-url 如果全部提供,向导将在没有任何提示的情况下运行,并直接应用更改。使用 --overwrite 替换现有实例。
npm create @mvogelgesang/sf-mcp-client-metadata@latest -- \
--mcp-name weatherApi \
--mcp-server-url https://mcp.example.com/api \
--auth-type oauth \
--auth-provider-url https://auth.example.com/oauth/token \
--namespace mycompany \
--overwrite对于未经身份验证的服务器,省略 --auth-provider-url:
node setup.mjs \
--mcp-name weatherApi \
--mcp-server-url https://mcp.example.com/api \
--auth-type noauth快速入门(克隆此仓库)
git clone
cd mcpMetadata
node setup.mjs从克隆中,输出默认为此存储库的 force-app/main/default/.使用 --target 在别处写作。
在本地开发发电机
git clone
cd mcpMetadata
npm link
cd /path/to/your-sfdx-project
npm create @mvogelgesang/sf-mcp-client-metadata或者直接从克隆运行脚本:
node setup.mjs发布(软件包维护者)
此仓库发布为 @mvogelgesang/create-sf-mcp-client-metadata.用户运行 npm create @mvogelgesang/sf-mcp-client-metadata,它安装该包并执行其 bin.
- 颠簸一下
"version"领域 .
- 验证到npm(
npm login)有权访问@mvogelgesang范围。
- 从存储库根目录:
npm publish --access public- 使用干净安装进行验证:
npm create @mvogelgesang/sf-mcp-client-metadata@latestpackage.json 用途 "files": ["setup.mjs", "force-app"] 因此,只发布向导和模板。
交互式向导将提示您:
| 变量 | 描述 | 示例 |
|---|---|---|
MCP_NAME | MCP服务器的唯一标识符(仅限字母) | weatherApi |
MCP_SERVER_URL | 您的MCP服务器端点URL | https://mcp.example.com/api |
AUTH_TYPE | 身份验证类型-- OAuth 2.0 Client Credentials 或 No Authentication | OAuth 2.0 Client Credentials |
AUTH_PROVIDER_URL | OAuth 2.0令牌端点(仅当 AUTH_TYPE 是OAuth) | https://auth.example.com/oauth/token |
NAMESPACE | Salesforce命名空间(可选) | mycompany |
部署和分配权限集
从SFDX项目根目录部署 仅 向导创建的MCP组件(不是全部 force-app 树):
sf project deploy start \
--metadata "ExternalCredential:" \
--metadata "NamedCredential:" \
--metadata "ExternalServiceRegistration:" \
--metadata "PermissionSet:_Perm_Set"
sf org assign permset -n _Perm_Set替换 ` 使用您在向导中输入的名称(例如 weatherApi → ExternalCredential:weatherApi …和权限集 weatherApi_Perm_Set`).
添加 --target-org 如果尚未选择默认的scratch组织或沙箱,请使用deploy命令。
激活MCP服务器连接
OAuth 2.0客户端凭据
- \[解决方法\]转到\*\*设置→ 命名凭据→ {MCP服务器名称}→ 点击进入外部凭证
- 向下滚动到“主体”→ Edit → 输入客户端Id和密码→ Save
- 转到\*\*设置→ 代理注册→ {MCP服务器名称}→ Edit
- 将内容保留在模态中→ 保存并继续
- 在“工具”选项卡下,单击“编辑工具”。完整工具列表将刷新
无需认证
不需要客户端凭据。向导生成外部凭据 authenticationProtocol = NoAuthentication.
- 转到\*\*设置→ 代理注册→ {MCP服务器名称}→ Edit
- 将内容保留在模态中→ 保存并继续
- 在“工具”选项卡下,单击“编辑工具”。完整工具列表将刷新
文件结构
force-app/main/default/
├── externalCredentials/
│ └── .externalCredential-meta.xml
├── externalServiceRegistrations/
│ └── .externalServiceRegistration-meta.xml
├── namedCredentials/
│ └── .namedCredential-meta.xml
└── permissionsets/
└── _Perm_Set.permissionset-meta.xml配置变量
安装脚本替换了以下占位符:
| 占位符 | 描述 |
|---|---|
MCP_NAME | 用于标签、API名称和文件名 |
MCP_SERVER_URL | MCP服务器端点URL |
AUTH_PROVIDER_URL | 用于身份验证的OAuth令牌端点(仅限OAuth身份验证类型) |
NAMESPACE__ | 托管包引用的命名空间前缀(如果没有命名空间,则为空) |
许可证
Apache许可证版本2.0
