Business Central MCP Workshop Server
Click on "Install 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
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
๐ฏ 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
Related MCP server: Dynamics 365 MCP Server
๐ 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)
Required for Business Central Integration (Workshop Objective):
๐ญ 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)
Alternative (Only if BC access is not available):
๐งช 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
Not recommended for full workshop experience
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
./scripts/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\Activate.ps1
# Windows CMD:
workshop-env\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 tests/test_server.pyto verify your server is working correctly
๐จ Having setup issues? See SETUP_TROUBLESHOOTING.md for common solutions!
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
๐ Presentation Slides - For instructors teaching this workshop
๐ง Troubleshooting - Common issues and solutions
๐ Repository Structure
You should see this structure:
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) โโโ ๐ test_workshop_exercise.py # Exercise tests โโโ ๐ requirements.txt # Python dependencies โโโ ๐ setup.ps1 # Automated setup (Windows) โโโ ๐ setup.sh # Automated setup (macOS/Linux) โโโ scripts/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](https://claude.ai/download)
- **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:**
1. Claude Desktop launches your MCP server as a subprocess
2. Communication happens via standard input/output streams
3. JSON-RPC messages are exchanged over these streams
4. 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:
1. **Run immediately with Claude Desktop**
- The server works with mock data out of the box
- No external dependencies required
2. **Study the implementation**
- See how tools, prompts, and resources are built
- Understand MCP protocol patterns
3. **Extend with your own features**
- Add new tools following the examples
- Create custom prompts for your use case
4. **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()` and `handle_call_tool()`
- Examples: `get_customers`, `get_items`, `get_currency_exchange_rates`
- **How to add your own:**
```python
# 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_workshop_exercise.pyshows how to validate your additions
๐ 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 tests/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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/javiarmesto/Workshop-MCP-Server-Directions-Lab'
If you have feedback or need assistance with the MCP directory API, please join our Discord server