Create a Custom Connector to a MCP Server with Entra ID Authorization
MCP Servers can utilize Entra ID authorization. This guide is aimed at integrating such servers in M365 Copilot Studio so they can be made available for Microsoft Copilot and Microsoft Teams.
Requirements:
- A working MCP Server with Entra ID Authorization
- VS Code for running the MCP Server locally (for debugging)
- Azure Entra ID
Initial setup
- Setup your MCP Server with Entra ID authorization to run locally. If you do not have one yet, find inspiration here: https://blog.mitchbarry.com/net-mcp-server-oauth-with-microsoft-entra-id/
- Ensure that your authorization flow runs as expected when using the VS Code mcp client: https://den.dev/blog/vscode-authorization-mcp
- Setup port forwarding and set the port to public: https://code.visualstudio.com/docs/debugtest/port-forwarding
Create an App Registration
The Power Automate connector for MCP servers requires an App Registration. The App Registration needs to have access to the API exposed by your MCP Server and it’s scope. You need to know the Application (Client) ID and the scope of the App Registration you use for your MCP Server. In this guide the following values will be used for the existing MCP Server App Registration:
Application (Client) ID: MyAppRegistrationsGUID
Scope: MyAppRegistrationsScope
Open Azure Portal and go to Entra ID -> App Registrations and create a New registration.
Just add a name and click Register
Note the Application (client) ID of the new application from the overview.
Select API Permissions. Here you need to add the API exposed by your MCP Server
You can search for the MCP Server Application under API’s my organization uses
Select the scope exposed by your MCP Servers Application and click Add permission
Go to the Certificates and secrets pane and add a new secret
Save the value for later.
Create the Power Automate Custom Connector
Ensure that your Power Environment has the the Get new features early attribute set to true.
Go to Custom Connectors in Power Automate and click New custom Connector -> Import from Github
Select custom, find the dev branch and pick the MCP-StreamableHTTP Connector
In the General tab add the forwarded address from your VS Code forwarding as the Host an click Security. Update name and description as desired.
Fill out the form with the data you have collected so far.
Authentication type: OAuth 2.0
Identity Provider: Azure Active Directory
Client ID: The Application (Client) ID of the new App Registration you have created.
Client secret: The secret you created for the application
Tenant ID: Your Tenant ID
Resource URL: api://MyAppRegistrationsGUID
Enable on-behalf-of login: true
Scope: MyAppRegistrationsScope
In my setup it looks like this:
Click on Create connector to generate the Redirect URL
Copy the Redirect URL
Update the App Registration
Go to your App Registration in the Azure Portal and select Authentication -> Add a platform
Select Web and paste the Redirect URI into the Redirect URIs text box, check the 2 boxes and click Configure.
Continue in Power Automate
Go to the Test tab and click Update connector. Your Test tab should look like this now
Click New connection and authenticate
Accept the requested access
If the connection is created, you are ready to test your Custom connector. Make your MCP Server is running in your debugger, so it can be reached from Power Automate via the dev tunnel
If everything has been configured as described so far, the test will fail, but the schema validation will succeed.
Add the tool to an agent
Go to Copilot Studio. Create a new agent or update an existing agent.
Go to the Tools tab on the agent and click Add a tool
Select Model Context Protocol and search for your new Custom Connection. It might take some time for the tool to show up - depending on how fast you created the Custom connection. Click on the tool:
Click on Add and configure
With a little luck, you should now see your MCP Server and the available tools in the menu.
To test the implementation you need to punch in a prompt that inspires the Agent to run one of the tools in your MCP Server. It might look something like this
You need to click Allow to grant the agent the right to use your credentials to contact the Custom connector. This will allow your agent to execute the Custom connector and get a response from your MCP Server
Final thoughts
Be patient - the different steps in connecting the Custom Connector to the Connector and making it available in Copilot Studio need to be allowed sufficient time to propagate to the different systems involved.
It might be possible to get the test in the Custom Connection to work, but for this demo I just needed to know, that the schema is valid. As far as I can see, most of it is related to some of the API Management bits used by Power Automate. This step was particularly difficult to get past, since it seemed to indicate, that something was wrong.
Once the tool is setup in an agent in Copilot Studio, the agent can be published to your enterprise and accessed safely by your end users.