Wednesday, 11 February 2026

Building BcMCPProxy.exe and Connecting to Claude Desktop (BLOG 3 OF 4)

 

Introduction

In the previous posts, we covered the concepts (Blog 1) and the BC MCP Server setup (Blog 2). Now it’s time to get hands-on. In this post, we will create an Azure App Registration, build the BcMCPProxy as a self-contained .exe in Visual Studio, and connect it to Claude Desktop.


Prerequisites

Requirement

Details

.NET 8 SDK

Download from dotnet.microsoft.com

Visual Studio 2022

Community, Professional, or Enterprise with .NET desktop workload

Git (Optional)

To clone the BCTech repository from GitHub

Claude Desktop

Download from claude.ai/download

Azure Portal Access

Admin rights to create App Registrations

BC Environment

SaaS with MCP Server enabled (see Blog 2)


Step 1: Create the Azure App Registration

The BcMCPProxy uses delegated permissions—it authenticates as the signed-in user via Azure AD.

Register the Application

1.    Sign in to the Azure Portal (portal.azure.com).

2.    Navigate to Microsoft Entra ID → App registrations → New registration.

3.    Name: Enter a descriptive name (e.g., “BcMCPProxy-Claude”).

4.    Supported account types: Select “Accounts in this organizational directory only (Single tenant).”

5.    Redirect URI: Select “Public client/native” and enter:

ms-appx-web://Microsoft.AAD.BrokerPlugin/<Your-Client-ID>

6.    Click Register. Note down the Application (client) ID and the Directory (tenant) ID from the Overview page.

Add API Permissions

1.    In the app registration, go to API permissions → Add a permission.

2.    Select Microsoft APIs → Dynamics 365 Business Central.

3.    Select Delegated permissions.

4.    Check both Financials.ReadWrite.All and user_impersonation.

5.    Click Add permissions.

6.    Click Grant admin consent for your tenant (requires an admin role).



Step 2: Build BcMCPProxy.exe in Visual Studio

Clone the Repository or download the code manually

git clone https://github.com/microsoft/BCTech.git

cd BCTech\samples\BcMCPProxy

Open in Visual Studio

1.    Launch Visual Studio 2022.

2.    Go to File → Open → Project/Solution.

3.    Navigate to the BcMCPProxy folder and open the .csproj or .sln file.

4.    Wait for NuGet package restore to complete (check the status bar).

Publish as Self-Contained .exe

Option A: Visual Studio UI

1.    Right-click the project in Solution Explorer → Publish.

2.    Choose Folder as the target → Next → Finish.

3.    Click Show all settings in the publish profile.

4.    Set Deployment Mode to Self-contained.

5.    Set Target Runtime to win-x64 (or win-arm64 for ARM machines).

6.    Under File publish options, check Produce single file (recommended).

7.    Click Save, then click Publish.

  



Option B: Command Line (Recommended)

The command line approach is more reliable and avoids the Visual Studio UI quirks. Open PowerShell or Command Prompt in the project folder and run:

dotnet publish -c Release -r win-x64 --self-contained true ^

    -p:PublishSingleFile=true

 

# For ARM-based Windows:

dotnet publish -c Release -r win-arm64 --self-contained true ^

    -p:PublishSingleFile=true




Locate Your .exe

After publishing, you should find BcMCPProxy.exe in:

bin\Release\net8.0\win-x64\publish\BcMCPProxy.exe

 


If you are not sure where it ended up (especially after using the Visual Studio UI), run this in PowerShell from your project folder to find every copy:

Get-ChildItem -Recurse -Filter "BcMCPProxy.exe" |

    Select-Object FullName, Length

The self-contained .exe will be around 60-80 MB. Any file that is only ~150 KB is a regular build output, not the published version.

Locate and Copy the .exe

Find BcMCPProxy.exe in the publish output:

bin\Release\net8.0\win-x64\publish\BcMCPProxy.exe

Copy it to a permanent location:

C:\Tools\BcMCPProxy\BcMCPProxy.exe


✅ Already have .NET 8 installed?

If you are only running the proxy on your own machine and .NET 8 is already installed, the small ~150 KB .exe from a regular Build also works fine. The self-contained version is mainly needed for deploying to machines that may not have .NET installed.


Step 3: Configure Claude Desktop

Install Claude Desktop

1.    Download from claude.ai/download (Windows or macOS).

2.    Install and sign in to your Claude account.

Edit the Configuration

1.    Open Claude Desktop → Settings → Developer.

2.    Click Edit Config to open claude_desktop_config.json.

3.    Add the following configuration:

{

  "mcpServers": {

    "BC_MCP": {

      "command": "C:\\Tools\\BcMCPProxy\\BcMCPProxy.exe",

      "args": [

        "--TenantId",          "<Your-Tenant-ID>",

        "--ClientId",          "<Your-Client-ID>",

        "--Environment",       "<BC-Environment-Name>",

        "--Company",           "<Company-Name>",

        "--ConfigurationName", "<MCP-Config-Name>"

      ]

    }

  }

}

Parameter Reference

Parameter

Description

--TenantId

Azure AD tenant ID (GUID from App Registration overview)

--ClientId

Application (client) ID from your Azure App Registration

--Environment

BC environment name (e.g., Production, Sandbox)

--Company

BC company name (e.g., CRONUS USA, Inc.)

--ConfigurationName

MCP config name created in BC. If omitted, uses default read-only config.

 

4.    Save the file and restart Claude Desktop completely.

5.    On first launch, an Azure sign-in prompt will appear. Authenticate with a user from the same tenant.

6.    After authentication, BC MCP tools should appear in Claude Desktop’s tool list.




⚠️ Troubleshooting

If tools don’t appear: verify the .exe path uses double backslashes in JSON, confirm all required args are present, check MCP Server is enabled in BC Feature Management, and restart Claude Desktop after any config change.


What’s Next?

Your setup is complete! In Blog 4, we run through real-world testing scenarios to validate everything works end to end.

 

Blog Series Navigation

   Blog 1: UnderstandingAI Agents and MCP

   Blog 2: The BusinessCentral MCP Server

▶ Blog 3: Building BcMCPProxy.exe and Connecting to Claude Desktop (You are here)

   Blog 4: Testing Scenarios and Best Practices



No comments:

Post a Comment