OCI MCP服务器
这是MCP服务器针对OCI IAM服务进行身份验证的示例代码。在用于任何生产用途之前,您应该对代码进行测试和扫描。
入门指南
MCP服务器使用OCI IAM域进行身份验证。一旦用户通过身份验证,我们就使用OCI令牌交换将访问令牌交换为OCI会话令牌。这两个用例都需要OAuth应用程序。您可以将同一个应用程序用于这两个用例。
为MCP服务器身份验证创建OAuth客户端
按照下面提到的步骤创建OAuth客户端。
- 登录OCI控制台(https://cloud.oracle.comOCI商业云)。
- 从“身份和安全”菜单中,打开“域”页面。
- 在“域”列表页面上,选择要在其中创建MCP服务器OAuth客户端的域。如果您需要帮助查找域的列表页面,请参阅 列出标识域。.
- 在详细信息页面上,选择集成应用程序。将显示域中的应用程序列表。
- 选择添加应用程序。
- 在“添加应用程序”窗口中,选择“机密应用程序”。
- 选择启动工作流。
- 在添加应用程序详细信息页面中,输入名称和描述,如下所示。
- 创建集成应用程序后,单击“OAuth配置”选项卡。
- 点击“编辑OAuth配置”按钮。
- 通过选择“立即将此应用程序配置为客户端”单选按钮,将应用程序配置成OAuth客户端。
- 选择“授权码”授权类型。如果您计划使用相同的OAuth客户端应用程序进行令牌交换,请同时选择“客户端凭据”授权类型。在示例中,我们将使用相同的客户端。
- 对于授权授予类型,选择重定向URL。在大多数情况下,这将是MCP服务器URL,后跟“/oauth/recall”。
- 单击“提交”按钮更新客户端应用程序的OAuth配置。
注意:您不需要进行任何特殊配置来支持OAuth客户端的PKCE。
- 确保激活客户端应用程序。
- 记下应用程序的客户端ID和客户端机密。更新.env文件并替换IAM_CLIENT_ID和IAM_CLIENT_SECRET值。
- env文件中的IAM_DOMAIN是您为MCP服务器选择的标识域URL。
这就是针对OCI IAM实施MCP服务器身份验证所需的全部内容。但是,如果你想使用经过身份验证的用户令牌来调用OCI控制平面API并将身份传播到OCI控制平面,而不是使用服务用户帐户,那么你需要实现令牌交换。
确保JWK的URL可以在没有客户端凭据的情况下访问
- 登录OCI控制台(https://cloud.oracle.comOCI商业云)。
- 从“身份和安全”菜单中,打开“域”页面。
- 在“域”列表页面上,选择用于MCP身份验证的域。
- 打开“设置”选项卡。
- 点击“编辑域设置”按钮。
- 启用“配置客户端访问”复选框,如屏幕截图所示。
令牌交换设置
令牌交换可帮助您将登录用户的OCI IAM令牌交换为OCI控制平面会话令牌。上升。要了解有关代币交换的更多信息,请参阅我的 工作负载身份联合会博客。
对于令牌交换,我们需要配置身份传播信任。上面的博客更多地讨论了使用REST API建立信任。但是,您也可以使用oci-cli。在使用下面的cli命令之前,请确保创建令牌交换OAuth客户端。在大多数情况下,您可以使用上面创建的OAuth客户端。您将在下面的cli命令中使用令牌交换OAuth客户端的客户端ID,并将其替换为{IAM_TOKENEXCHANGE_client_ID}。
您还需要在.env文件中更新令牌交换OAuth客户端的客户端机密。它是IAM_TOKENEXCHANGE_CLIENT_SECRET参数。在.env文件中更新令牌交换OAuth客户端的IAM_GUID和IAM_TOKENEXCHANGE_CLIENT_ID。
oci identity-domains identity-propagation-trust create \
--schemas '["urn:ietf:params:scim:schemas:oracle:idcs:IdentityPropagationTrust"]' \
--name "For Token Exchange" --type "JWT" \
--issuer "https://identity.oraclecloud.com/" \
--endpoint "https://{IAM_GUID}}.identity.oraclecloud.com" \
--subject-claim-name "sub" --allow-impersonation false \
--subject-mapping-attribute "username" \
--subject-type "User" --client-claim-name "iss" \
--client-claim-values '["https://identity.oraclecloud.com/"]' \
--oauth-clients '["{IAM_TOKENEXCHANGE_CLIENT_ID}"]'正在运行MCP服务器
设置完成后,要运行MCP服务器,请运行以下命令。
fastmcp run server.py:mcp --transport http --port 8000要运行MCP客户端,请运行以下命令。
python3 client.py您还可以使用MCP解释器来测试MCP服务器。
fastmcp dev server.py添加更多OCI MCP服务器
如果你想为任何OCI服务创建MCP服务器,你可以使用OCI IAM进行身份验证,并使用get_OCI_signer方法获取签名者对象。使用签名者对象,您可以实例化任何OCI客户端。
如果您遇到任何问题,请随时联系kiran.thakkar@oracle.com
贡献
这个项目欢迎社区的贡献。在提交pull请求之前,请 查看我们的贡献指南。
