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