Microsoft has recently added a preview feature to Azure API Centers, which gives you the possibility to deploy custom MCP servers using Logic App connector actions. It is a rather easy process, which gives you great flexibility to use any of the 300+ connectors, including D365 Dataverse and Fin & Ops ones, and publish them as a standard MCP server which can then be used by any MCP-compatible 3rd party AI agent. Sounds great, but in reality, not all connectors can be deployed without problems.
I have begun writing this blog about creating a custom Fin & Ops MCP server, since the native Fin & Ops MCP server has a very limited number of operations (13 at the time of writing). But at the time of writing, it does not work; in fact, in my tests, only the Dataverse connector can be deployed without errors. In this blog, we will create our custom MCP server using the Dataverse connector and test it using an AI agent.
Setup
To begin, create an empty Standard Logic App. It has to be a standard tier since consumption logic apps are not supported:


Then open Azure API Centers and create a Free tier if you do not have one already. In the discovery tab of your API Center, you will find the MCP (preview) page, where you will deploy the new MCP server from Azure Logic App connectors. Click Register under Azure Logic Apps:

Here, from the logic app list, select your logic app. Remember, if your logic app is not empty or if it is not a standard tier, it will not be displayed here. After selecting, click on the add actions button underneath and search for the Dataverse logic app connector. Then select the actions you want to provide as operations for your MCP server. I select actions for listing, selecting, deleting, and updating:


Then it will ask you to authenticate and create a connection. Just follow the instructions, and you will end up on the final page that lets you configure the operations before deploying them as an MCP server. Click on ‘Configure’ for each operation and configure it as follows. For Environment and Table name, choose the ‘User’ instead of the ‘Model’ option. When you connect to the MCP server you created, the AI agent will resolve and provide a fair amount of information to it, but expecting it to select the correct environment name from all available Power Platform environments is going too far. We need to provide these manually, selecting the ‘User’ option. The ‘Model’ option, on the other hand, lets the AI agent select the value from the information it gathers from your prompt. For now, I also provide the Table name here to make my server less complicated:


Provide optional parameters to be auto-filled by the agent here as well. For example, I add First-Last Name and E-Mail fields to the Add action:

We are now ready to register and publish our MCP server. Click on the register button and follow the instructions. Within seconds, it will create logic apps workflows from the actions you have selected and publish them with the MCP server it has deployed. If you open your empty logic app now, you will see auto-generated and well-documented workflows created for each action, together with all necessary connectors and authentication setup :


Remember that you can also modify these logic app workflows, for example, add a parallel Fin & Ops action to save the same data to Fin & Ops. The flexibility here is really amazing, but as mentioned before, not every option works without issues since it is still in the early phases of preview.
Testing your custom MCP server
The easiest way to test your new custom MCP server is by using the Agent tools inside Visual Studio Code and using the chat window.
Before setting up, you need to copy the link from the API portal (preview) from the API Center page. To do so, click on the API portal preview tab in the API Center page and go to Settings. If there is no portal published yet, publish one following the instructions. Once published, click on the ‘View API center portal’:

Here, filter the MCP servers and click on the Dataverse server you have created. From the pop-up select Copy URL from below (Note: if you receive authentication errors in the portal, you need to assign yourself the ‘Azure API Center Service Contributor’ and ‘Azure API Center Data Reader’ roles on top of your Owner role in your res group):

Open VS Code and select View>Command Palette. Here search and choose Add MCP server, then select HTTP. Paste the URL here:


It will ask you to authenticate, follow the instructions and afterwards test if the MCP server is registered clicking the configure tools icon in the chat window and searching for your dataverse MCP server:


Now we are ready to go. Make sure chat window is in Agent mode and enter the prompt ‘Show details of contact Susan Burk’. First time, it will ask for your permission for the execution, select Allow all the time and continue. We have the details for Susan Burk listed in the agent response:


Notice VS Code chat window shows which MCP server and operation is chosen, how your prompt is interpreted by the agent, and converted to an OData filter, and a full OData response, which you can use for debugging your MCP server responses:

Now, let’s create a record. Enter the prompt ‘Create a contact with name <Your name> and email <your@email>’:

See in the Dataverse that the new record is created:

You can also delete and update the records using your MCP server, although actions are operated using the RowId column. Agent finds the Row ID for the record you want to update/delete and successfully updates/removes it:


Fin & Ops?
Same manner, you can create an MCP server for Fin & Ops as well, as an alternative to the currently very limited native D365 F & O MCP server; however, at the time of writing, it ends up in a deployment error. Just select the F&O connector and set up the actions similarly, selecting the environment and table name:


And hope when you read this, you do not get this error after clicking register:

Disadvantages?
Since it needs logic app workflows for the custom MCP servers to work, it introduces extra costs compared to the native D365 MCP servers and has a lower performance than the native ones as well. However, given the flexibility and abundance of actions and connectors you can use and publish as an MCP server, there will definitely be scenarios where this option shines through.
Overall, it is a great new feature to create new custom D365 MCP servers in an easy and flexible way.