Business Central MCP Workshop Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Business Central MCP Workshop Servershow me the top 10 customers by sales"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
๐ MCP Server Workshop - Business Central Integration
Choose a route
Learn MCP locally: start without BC credentials; src/config.py permits mock mode. Create the venv and run python test_server.py from the repository root. The expected result is MCP tool discovery using sample data; it does not validate Entra authentication or live BC.
Connect your own BC sandbox: configure .env from .env.example, authorize the application and company, then verify a read with your own client. Do not mix a successful mock test with a successful BC API call.
The root contains server_workshop.py, setup.ps1, setup.sh, ConfigurationPaths.ps1, test_server.py and validate_workshop.py; src/ and data/ contain modules and samples. No root scripts/ or tests/ directory is supplied. Static documentation review: 6 October 2026; no dependency installation or MCP invocation performed. No applicable license file confirmed.
Welcome to the MCP Server Workshop! This workshop teaches you to build a complete MCP (Model Context Protocol) server with STDIO transport for Claude Desktop, integrated with Microsoft Dynamics 365 Business Central.
โฑ๏ธ Workshop Duration: 20-30 minutes
๐ Complete Workshop Guide โ
๐ Quick Start Guide โ (Setup + Exercises)
๐ Presentation Slides: MCP_Server_Custom Directions.pptx
Related MCP server: Microsoft Business Central MCP Server
๐ฏ Workshop Objectives
Learn to build, extend, and customize MCP servers with:
โ MCP Protocol fundamentals
โ STDIO transport for Claude Desktop integration
โ Business Central API integration
โ Custom tools and prompts creation
โ Practical exercises for hands-on learning
๐ Prerequisites
Before starting the workshop, ensure you have:
Required:
๐ Python 3.12 or higher installed (Download here)
๐ป Claude Desktop app installed (Download here)
๐ฆ Basic command line knowledge (terminal/PowerShell)
Only required for the real Business Central route:
๐ญ Azure AD Tenant with Business Central access
Business Central Environment with Standard API v2.0 enabled:
Sandbox or Production environment
API endpoints:
/api/v2.0/companies,/items,/customers,/salesOrders, etc.Company name and Environment name
๐ Azure AD App Registration configured:
Client ID, Client Secret, Tenant ID
API permissions for Business Central (Dynamics 365 Business Central)
Redirect URI configured (if needed)
Local MCP learning route (mock data):
๐งช Mock Data Mode: The workshop includes mock data as a fallback
Allows completing exercises without real BC connection
Limited to testing MCP protocol mechanics
Does not demonstrate real authentication or API integration
Use the real BC route when authentication and live APIs are your learning objective
Good to Know:
โ Virtual environment setup is automated via scripts
โ All Python dependencies are listed in
requirements.txt๐งช Mock data available only as fallback if BC access unavailable
๐ Quick Start
๐ฅ Step 1: Download the Repository
Go to: https://github.com/javiarmesto/Workshop-MCP-Server-Directions-Lab
Click the green "Code" button
Select "Download ZIP"
Extract the ZIP file to your desired location
Open a terminal and navigate to the extracted folder:
cd Workshop-MCP-Server-Directions-Lab-main
๐ Step 2: Automated Setup (Recommended - 2 minutes)
For Windows PowerShell:
# Run the automated setup script
.\setup.ps1
# For help and options:
.\setup.ps1 -Help
# Force recreate virtual environment:
.\setup.ps1 -ForceFor macOS/Linux:
# Make script executable and run
chmod +x setup.sh
./setup.shThe automated scripts will:
[OK] Auto-detect Python installation (no PATH required)
[OK] Check Python version (3.12+ required)
[OK] Create and activate virtual environment
[OK] Install all dependencies automatically
[OK] Verify the installation works
[OK] Show you next steps
Important: The setup script automatically finds Python in common locations. You don't need to add Python to your system PATH.
๐ Manual Setup (5 minutes)
# 1. Download and extract
# Go to: https://github.com/javiarmesto/Workshop-MCP-Server-Directions-Lab
# Click "Code" โ "Download ZIP"
# Extract the ZIP file
# Navigate to the extracted folder:
cd Workshop-MCP-Server-Directions-Lab-main
# 2. Install dependencies
python -m venv workshop-env
# Activate virtual environment
# Windows PowerShell:
.\workshop-env\Scripts\Activate.ps1
# Windows CMD:
workshop-env\Scripts\activate.bat
# macOS/Linux:
source workshop-env/bin/activate
# Install dependencies (ensure virtual environment is activated!)
pip install -r requirements.txt
# 3. Configure credentials (optional - works with mock data)
cp .env.example .env
# Edit .env with your Azure AD and Business Central credentials
# Example:
# AZURE_TENANT_ID=your-tenant-id-guid
# AZURE_CLIENT_ID=your-app-registration-client-id
# AZURE_CLIENT_SECRET=your-app-registration-secret
# BC_ENVIRONMENT=production
# BC_COMPANY_ID=your-company-guid
# 4. Test the server works
python ./test_server.pyExpected output: The test script will show all available MCP tools:
[SUCCESS] Server responded!
============================================================
AVAILABLE TOOLS:
============================================================
1. get_customers - Get customer list from Business Central
2. get_items - Get items list from Business Central
3. get_sales_orders - Get sales orders from Business Central
... (6 tools total)
[SUCCESS] Test completed successfully!๐ก Quick test: Use
python test_server.pyto verify your server is working correctly
๐จ Having setup issues? See the workshop guide for setup troubleshooting!
Visual Testing with MCP Inspector (Optional)
Before configuring Claude Desktop, you can test your server visually with MCP Inspector:
Install MCP Inspector:
# Quick (no installation required)
npx @modelcontextprotocol/inspector
# Or install globally
npm install -g @modelcontextprotocol/inspector
mcp-inspectorGet Configuration Paths:
# Run the configuration paths script
.\ConfigurationPaths.ps1This script will display:
Python executable path
Server script path
Workshop path
Claude Desktop format (JSON with forward slashes
/)MCP Inspector format (Windows with backslashes
\)
Configure in MCP Inspector UI:
Transport Type: Select
STDIOCommand: Paste the
python.exepath (Windows format with backslashes)Arguments: Paste the
server_workshop.pypath (Windows format)Environment Variables (optional):
Key:
PYTHONPATHValue: Your workshop path
Test Your Server:
Click "Connect" to start the server
Browse the Tools tab to see all 6 available tools
Click any tool and fill parameters to test it
Check Prompts tab for
customer_analysisandpricing_analysisInspect Resources tab to view available data files
Benefits:
โ Visual interface for debugging
โ Test tools individually without Claude Desktop
โ Inspect JSON request/response data
โ Faster iteration during development
๐ For detailed instructions, see Step 6-7 in WORKSHOP_GUIDE_EN.md
Configure with Claude Desktop
Option A: Automated Configuration (Recommended) โก
# Run the automated configuration script
.\configure_claude.ps1This script will:
โ Auto-detect all required paths
โ Backup your existing configuration
โ Create/update Claude Desktop config with correct paths and PYTHONPATH
โ Validate the JSON configuration
โ Open the config file for review
โ Show you the next steps
Then restart Claude Desktop and start using your MCP tools!
Option B: Manual Configuration
Get your paths first:
# Run the configuration paths script
.\ConfigurationPaths.ps1Copy the paths from the "FOR CLAUDE DESKTOP (JSON format)" section.
Edit your Claude Desktop configuration file:
Windows: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Configuration template (replace paths with yours):
{
"mcpServers": {
"bc-workshop-server": {
"command": "YOUR_PYTHON_PATH_HERE",
"args": ["YOUR_SERVER_PATH_HERE"],
"env": {
"PYTHONPATH": "YOUR_WORKSHOP_PATH_HERE"
}
}
}
}โ ๏ธ Important: Include the
"env"field withPYTHONPATHto ensure proper module loading.๐ก Quick validation: Run
Get-Content "$env:APPDATA\Claude\claude_desktop_config.json" | ConvertFrom-Jsonto test your JSON.
Then restart Claude Desktop and start using your MCP tools!
๐ Documentation
๐ Complete Workshop Guide - Step-by-step instructions with architecture diagrams
๐ง Troubleshooting - Common issues and solutions
๐ Repository Structure
The checkout contains these paths:
Workshop-MCP-Server-Directions-Lab/
โโโ ๐ server_workshop.py # Main MCP server (STDIO transport)
โโโ ๐ validate_workshop.py # Validation script
โโโ ๐ test_server.py # Quick server test (lists tools)
โโโ ๐ requirements.txt # Python dependencies
โโโ ๐ setup.ps1 # Automated setup (Windows)
โโโ ๐ setup.sh # Automated setup (macOS/Linux)
โโโ ConfigurationPaths.ps1 # Get paths for Claude Desktop & MCP Inspector
โโโ ๐ .env.example # Environment template
โโโ ๐ README.md # This file
โโโ ๐ QUICK_START_GUIDE.md # Quick start instructions
โโโ ๐ WORKSHOP_GUIDE_EN.md # Complete step-by-step guide
โ
โโโ ๐ src/ # Source code modules
โ โโโ azure_auth.py # Azure AD authentication
โ โโโ client.py # Business Central client
โ โโโ config.py # Configuration
โ
โโโ ๐ data/ # Sample data
โโโ README.md # Data files documentation
โโโ categories.csv # Product categories
โโโ prices.csv # Price and stock data
โโโ substitutes.csv # Product substitutions
โโโ sales_orders.csv # Mock sales orders
โโโ payment_terms.csv # Mock payment terms
โโโ price-analysis.json # Price analysis data๐ง Prerequisites
Software Requirements
Python 3.12+ (verify:
python --version)pip (verify:
pip --version)Claude Desktop - Download from claude.ai
Text editor (VS Code, PyCharm, etc.)
Terminal/Command line access
Business Central Access (Optional)
With Business Central access:
๐ข Azure AD Tenant with Business Central access
๐ App Registration in Azure AD (Client ID, Client Secret, Tenant ID)
๐ BC Environment name (production or sandbox)
๐ BC Company ID
Without Business Central access:
โ The workshop works with mock data included in the
data/folderโ You can complete all exercises using sample CSV files
โ Perfect for learning MCP concepts without external dependencies
Knowledge Prerequisites
Beginner-friendly, but helpful to know:
Basic Python programming
JSON format
Command line usage
๐ What is STDIO Transport?
STDIO (Standard Input/Output) transport enables MCP servers to communicate with clients through stdin/stdout streams. This is the standard method for integrating MCP servers with Claude Desktop.
Key Benefits:
โก Fast local communication
๐ No network exposure (secure by default)
๐ฏ Perfect for Claude Desktop integration
โ๏ธ Simple configuration - no ports or networking required
How it works:
Claude Desktop launches your MCP server as a subprocess
Communication happens via standard input/output streams
JSON-RPC messages are exchanged over these streams
The server provides tools, prompts, and resources to Claude
STDIO vs HTTP Transport
While this workshop focuses on STDIO transport for Claude Desktop, MCP also supports HTTP-based transport for different use cases:
Feature | STDIO (This Workshop) | HTTP/SSE (Alternative) |
Transport | stdin/stdout streams | HTTP + Server-Sent Events |
Use Case | Claude Desktop integration | Web integrations, remote access |
Network | Local only | Network-accessible |
Setup | Simple | Requires port configuration |
Security | Isolated by default | Needs HTTPS in production |
Best For | Desktop apps, local tools | Cloud services, webhooks, APIs |
๐ ๏ธ Using This Template
This repository serves as a complete, working template. You can:
Run immediately with Claude Desktop
The server works with mock data out of the box
No external dependencies required
Study the implementation
See how tools, prompts, and resources are built
Understand MCP protocol patterns
Extend with your own features
Add new tools following the examples
Create custom prompts for your use case
Connect to your own APIs
Replace Business Central with any API
Adapt the patterns to your needs
๐ ๏ธ How to Extend
Understanding the MCP Server Components
The workshop server demonstrates three main MCP capabilities:
1๏ธโฃ Tools (Functions Claude can call)
Located in:
server_workshop.pyโhandle_list_tools()andhandle_call_tool()Examples:
get_customers,get_items,get_currency_exchange_ratesHow to add your own:
# In handle_list_tools(), add: types.Tool( name="your_tool_name", description="What your tool does", inputSchema={ "type": "object", "properties": { "param1": {"type": "string", "description": "Parameter description"} } } ) # In handle_call_tool(), add: elif tool_name == "your_tool_name": result = await client.your_api_method(arguments.get("param1")) return [types.TextContent(type="text", text=json.dumps(result))]
2๏ธโฃ Prompts (Pre-configured Claude prompts)
Located in:
server_workshop.pyโhandle_list_prompts()andhandle_get_prompt()Examples:
customer_analysis,vendor_analysisHow to add your own:
# In handle_list_prompts(), add: types.Prompt( name="your_prompt_name", description="What your prompt does", arguments=[ types.PromptArgument( name="param1", description="Parameter description", required=True ) ] ) # In handle_get_prompt(), add case for your prompt
3๏ธโฃ Resources (Static data files)
Located in:
server_workshop.pyโhandle_list_resources()andhandle_read_resource()Examples: CSV and JSON files in
data/folderHow to add your own:
# In handle_list_resources(), add: types.Resource( uri=AnyUrl("file://data/your_file.csv"), name="Your Resource Name", description="What this resource contains", mimeType="text/csv" )
Practical Workshop Exercise
The repository includes working examples you can study:
โ
vendor_analysisprompt: Example of adding a new promptโ
get_currency_exchange_ratestool: Example of adding a new toolโ Test suite:
test_server.pyandvalidate_workshop.pyprovide local validation entry points
๐ Additional Resources
๐ Support
If you encounter problems:
๐ Review the Troubleshooting section in WORKSHOP_GUIDE_EN.md
๐ Check logs in Claude Desktop (View โ Developer โ Developer Tools)
๐ Verify credentials if using Business Central
โ Run
python validate_workshop.pyto check your setup
๐ Learning More
MCP Specification: spec.modelcontextprotocol.io
MCP Documentation: modelcontextprotocol.io
Claude Desktop: claude.ai
๐ Enjoy building with MCP and Business Central!
Workshop Duration: 20-30 minutes โข Focus: STDIO Transport โข Based on MCP SDK
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.
Hosted Amazon Seller Central and Amazon Ads MCP server for Claude, ChatGPT, Cursor, and agents.
Cloud-hosted MCP server for secure AI access to enterprise data sources via CData Connect AI.
Related MCP Servers
- AlicenseBqualityDmaintenanceA Model Context Protocol server that enables interaction with Microsoft Dynamics 365 CRM from Claude Desktop, allowing users to retrieve, create, and update CRM data through natural language.521MIT
- AlicenseAqualityCmaintenanceMCP server for Microsoft Dynamics 365 Business Central that enables AI assistants to query and manage Business Central data via full CRUD operations.632 npmMIT
- AlicenseBqualityCmaintenanceMCP server for Microsoft Dynamics 365 Business Central, enabling AI assistants to perform CRUD operations, query data, and retrieve schemas via Business Central API v2.0.632 npmMIT
- AlicenseAqualityCmaintenanceMCP server that provides AI assistants direct access to Microsoft Dynamics 365 Business Central using its native WebSocket protocol, enabling page navigation, data operations, actions, and report execution without OData or browser automation.14285 npmMIT