Skip to main content
Glama
Edouard-Legoupil

MCP Platform Framework

MCP Framework - Model Context Protocol Server Template

Azure Functions Python 3.11+ MCP Protocol License: MIT

A production-ready template for deploying MCP (Model Context Protocol) servers on Azure Functions, fully compatible with Microsoft Copilot and Copilot Studio.

overview

intro post


🎯 Choose Your Path

This repository serves two distinct audiences. Please select your path:

πŸš€ I want to BUILD an MCP Server (Most Users)

β†’ USER_GUIDE.md - Complete guide for MCP server developers

You want to create your own MCP server using this framework as a template. You'll focus on implementing your business logic (tools, resources, prompts) while the framework handles all infrastructure concerns.

πŸ—οΈ I want to CONTRIBUTE to the Framework (Framework Developers)

β†’ FRAMEWORK_DOCUMENTATION.md - Internal framework documentation

You want to contribute to, extend, or maintain the MCP Framework itself. You'll work on the core infrastructure, platform services, and connectivity layers.


Related MCP server: Kroki MCP

πŸ“š Documentation Overview

For MCP Server Developers (Users of this Framework)

Document

Purpose

Audience

USER_GUIDE.md

Complete guide for building MCP servers

🎯 MCP Server Developers

TEMPLATE_GUIDE.md

Quick start template with examples

🎯 MCP Server Developers

deploy/scripts/deploy.sh

Automated deployment script

🎯 MCP Server Developers

src/azure/requirements.txt

Production dependencies

🎯 MCP Server Developers

What you'll implement:

  • βœ… Your business tools (functions)

  • βœ… Your data resources

  • βœ… Your prompt templates for Copilot Studio

  • βœ… Your domain-specific configuration

What the framework provides:

  • βœ… Authentication & Authorization (Entra ID, JWT, RBAC)

  • βœ… Telemetry & Monitoring (Application Insights, OpenTelemetry)

  • βœ… Error Handling & Logging

  • βœ… Configuration Management (Environment variables, Key Vault)

  • βœ… Data Connectivity (Fabric, Warehouse, Lakehouse)

  • βœ… Audit Logging (Immutable audit trail)

  • βœ… Data Classification & Governance

  • βœ… MCP Protocol Compliance (All required endpoints)

For Framework Developers (Contributors)

Document

Purpose

Audience

FRAMEWORK_DOCUMENTATION.md

Internal framework architecture & design

πŸ—οΈ Framework Contributors

docs/architecture/

Architecture diagrams and design decisions

πŸ—οΈ Framework Contributors

docs/modules/

Platform service documentation

πŸ—οΈ Framework Contributors

docs/api-reference/

Internal API documentation

πŸ—οΈ Framework Contributors

platform/

Core framework code

πŸ—οΈ Framework Contributors

What you'll work on:

  • πŸ—οΈ Authentication & Authorization infrastructure

  • πŸ—οΈ Telemetry and monitoring systems

  • πŸ—οΈ Error handling and logging frameworks

  • πŸ—οΈ Configuration management systems

  • πŸ—οΈ Data connectivity layers (Fabric, Warehouse, Lakehouse)

  • πŸ—οΈ Audit logging and data classification


πŸ—οΈ Framework Architecture

The Big Picture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                         YOUR MCP SERVER ON AZURE                        β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                         β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚  β”‚                         AZURE FUNCTIONS v4                          β”‚β”‚
β”‚  β”‚  βœ… HTTP Triggers, Function App, Storage, Application Insights      β”‚β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”‚                                                                         β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚  β”‚                      MCP FRAMEWORK LAYER                            β”‚β”‚
β”‚  β”‚  πŸ—οΈ Framework Contributors work here                                β”‚β”‚
β”‚  β”‚                                                                     β”‚β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”               β”‚β”‚
β”‚  β”‚  β”‚ Authenticationβ”‚  β”‚ Authorizationβ”‚  β”‚  Telemetry   β”‚              β”‚β”‚
β”‚  β”‚  β”‚  (Entra ID,  β”‚  β”‚   (RBAC,     β”‚  β”‚ (Auto-collectβ”‚               β”‚β”‚
β”‚  β”‚  β”‚   JWT, etc.) β”‚  β”‚  Policies)   β”‚  β”‚  tool calls) β”‚               β”‚β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜               β”‚β”‚
β”‚  β”‚                                                                     β”‚β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”               β”‚β”‚
β”‚  β”‚  β”‚   Audit      β”‚  β”‚   Error      β”‚  β”‚Classificationβ”‚               β”‚β”‚
β”‚  β”‚  β”‚  (Immutable  β”‚  β”‚  Handling    β”‚  β”‚ (Data        β”‚               β”‚β”‚
β”‚  β”‚  β”‚   logs)      β”‚  β”‚ (Standardizedβ”‚  β”‚  controls)   β”‚               β”‚β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜               β”‚β”‚
β”‚  β”‚                                                                     β”‚β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚β”‚
β”‚  β”‚  β”‚                    CONNECTIVITY LAYER                           β”‚β”‚β”‚
β”‚  β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”           β”‚β”‚β”‚
β”‚  β”‚  β”‚  β”‚ Semantic     β”‚  β”‚  Warehouse   β”‚  β”‚  Lakehouse   β”‚           β”‚β”‚β”‚
β”‚  β”‚  β”‚  β”‚  Models      β”‚  β”‚  (SQL)       β”‚  β”‚  (Delta)     β”‚           β”‚β”‚β”‚
β”‚  β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜           β”‚β”‚β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”‚                                                                         β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚  β”‚                      YOUR DOMAIN LAYER                              β”‚β”‚
β”‚  β”‚  🎯 MCP Server Developers work here                                 β”‚β”‚
β”‚  β”‚                                                                     β”‚β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”               β”‚β”‚
β”‚  β”‚  β”‚    Tools     β”‚  β”‚  Resources    β”‚  β”‚   Prompts    β”‚              β”‚β”‚
β”‚  β”‚  β”‚ (Functions)  β”‚  β”‚ (Data Sources)β”‚  β”‚ (Templates)  β”‚              β”‚β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜               β”‚β”‚
β”‚  β”‚                                                                     β”‚β”‚
β”‚  β”‚  🎯 Your Business Logic, Domain Models, Ontologies                  β”‚β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”‚                                                                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Clear Separation of Concerns

Concern

Framework Handles

You Handle

Authentication

βœ… Entra ID, JWT validation, token management

❌

Authorization

βœ… RBAC, policy enforcement, permission checks

❌

Telemetry

βœ… Logging, metrics, tracing, Application Insights

❌

Error Handling

βœ… Standardized errors, recovery, retry logic

❌

Configuration

βœ… Environment variables, Key Vault, secrets

❌

Data Connectivity

βœ… Fabric, Warehouse, Lakehouse connectors

❌

Audit Logging

βœ… Immutable audit trail, compliance logging

❌

Data Classification

βœ… Governance controls, sensitivity labels

❌

MCP Protocol

βœ… All required endpoints, protocol compliance

❌

Business Logic

❌

βœ… Your tools, resources, prompts

Domain Models

❌

βœ… Your ontologies, schemas

Domain Data

❌

βœ… Your data sources, connections


πŸš€ Quick Start for MCP Server Developers

If you just want to build an MCP server, here's the fastest path:

1. Read the User Guide

β†’ USER_GUIDE.md - Everything you need to know

2. Follow the Template Guide

β†’ TEMPLATE_GUIDE.md - Step-by-step examples

3. Key Files to Understand

# Your workspace (create these)
my_domain/
β”œβ”€β”€ tools/              # Your tool implementations
β”‚   └── my_tool.py     # Example: def greet_user(name: str) -> dict
β”œβ”€β”€ resources/          # Your data resource definitions
β”‚   └── my_resource.py # Example: Resource(name="donors", uri="/api/donors")
└── prompts/            # Your Copilot Studio prompt templates
    └── my_prompt.py   # Example: PromptTemplate(name="generate_report", template="...")

# Framework files (don't modify these unless contributing)
platform/
β”œβ”€β”€ registration/       # Tool registration system
β”‚   └── registry.py    # Register your tools here
β”œβ”€β”€ catalog/            # Resource catalog system
β”‚   └── client.py      # Access resources via framework
└── template/           # Prompt template system
    └── generator.py   # Generate prompts via framework

src/azure/
β”œβ”€β”€ function_app.py     # Main entry point (v4)
β”œβ”€β”€ host.json           # Azure Functions config
└── requirements.txt    # Production dependencies

4. Deployment

# Copy environment template
cp .env.example .env

# Edit .env with your configuration
nano .env

# Deploy (uses deploy.sh script)
./deploy/scripts/deploy.sh

πŸ—οΈ Quick Start for Framework Contributors

If you want to contribute to the framework itself:

1. Read the Framework Documentation

β†’ FRAMEWORK_DOCUMENTATION.md - Everything about the framework

2. Understand the Architecture

3. Key Areas to Contribute

platform/
β”œβ”€β”€ auth/              # Authentication services (Entra ID, JWT)
β”œβ”€β”€ authorization/     # Authorization services (RBAC, policies)
β”œβ”€β”€ telemetry/         # Monitoring and observability
β”œβ”€β”€ audit/             # Audit logging
β”œβ”€β”€ errors/            # Error handling
β”œβ”€β”€ config/            # Configuration management
β”œβ”€β”€ classification/    # Data governance
└── connectivity/      # Data source connectors (Fabric, Warehouse, Lakehouse)

docs/
β”œβ”€β”€ architecture/      # Architecture documentation
β”œβ”€β”€ modules/          # Module documentation
β”œβ”€β”€ api-reference/     # Internal API docs
└── best-practices/    # Development guidelines

πŸ“ Repository Structure

mcp-framework/
β”œβ”€β”€ README.md                          # This file - Choose your path
β”œβ”€β”€ USER_GUIDE.md                      # 🎯 For MCP Server Developers
β”œβ”€β”€ FRAMEWORK_DOCUMENTATION.md         # πŸ—οΈ For Framework Contributors
β”œβ”€β”€ TEMPLATE_GUIDE.md                  # Quick start template
β”œβ”€β”€ .env.example                       # Environment variables template
β”œβ”€β”€ .funcignore                        # Deployment ignore patterns
β”œβ”€β”€ .gitignore                         # Git ignore patterns
β”œβ”€β”€ local.settings.json.example        # Local development config
β”œβ”€β”€ pyproject.toml                     # Python project configuration
β”‚
β”œβ”€β”€ deploy/                            # Deployment scripts
β”‚   └── scripts/
β”‚       └── deploy.sh                  # Automated deployment
β”‚
β”œβ”€β”€ src/                               # Azure Functions v4
β”‚   └── azure/
β”‚       β”œβ”€β”€ function_app.py           # Main entry point
β”‚       β”œβ”€β”€ host.json                 # Azure Functions config
β”‚       └── requirements.txt          # Production dependencies
β”‚
β”œβ”€β”€ platform/                          # πŸ—οΈ Framework Core (Contributors)
β”‚   β”œβ”€β”€ auth/                          # Authentication services
β”‚   β”œβ”€β”€ authorization/                 # Authorization services
β”‚   β”œβ”€β”€ telemetry/                     # Telemetry and monitoring
β”‚   β”œβ”€β”€ audit/                         # Audit logging
β”‚   β”œβ”€β”€ errors/                        # Error handling
β”‚   β”œβ”€β”€ config/                        # Configuration management
β”‚   β”œβ”€β”€ classification/                # Data classification
β”‚   β”œβ”€β”€ connectivity/                  # Data connectivity
β”‚   β”œβ”€β”€ catalog/                       # Resource catalog
β”‚   β”œβ”€β”€ registration/                  # Tool registration
β”‚   └── template/                      # Prompt templates
β”‚
β”œβ”€β”€ tools/                             # Example tools (for users)
β”‚   β”œβ”€β”€ __init__.py
β”‚   └── example_tool.py                # Example implementations
β”‚
β”œβ”€β”€ docs/                              # πŸ—οΈ Framework Documentation
β”‚   β”œβ”€β”€ architecture/                  # Architecture docs
β”‚   β”œβ”€β”€ modules/                       # Module documentation
β”‚   β”œβ”€β”€ api-reference/                 # API reference
β”‚   β”œβ”€β”€ best-practices/                # Best practices
β”‚   β”œβ”€β”€ deployment/                    # Deployment guides
β”‚   └── examples/                      # Usage examples
β”‚
└── my_domain/                         # 🎯 YOUR CODE (create this!)
    β”œβ”€β”€ tools/                         # Your tool implementations
    β”œβ”€β”€ resources/                     # Your resource definitions
    └── prompts/                        # Your prompt templates

🎯 Which Path Are You On?

If you're building an MCP Server:

βœ… I want to create my own MCP server
βœ… I want to implement business tools and logic
βœ… I want to deploy to Azure Functions
βœ… I want to integrate with Copilot and Copilot Studio

β†’ START HERE: [USER_GUIDE.md](USER_GUIDE.md)

If you're contributing to the Framework:

βœ… I want to improve the framework infrastructure
βœ… I want to add new platform services
βœ… I want to fix bugs in the framework
βœ… I want to extend framework capabilities

β†’ START HERE: [FRAMEWORK_DOCUMENTATION.md](FRAMEWORK_DOCUMENTATION.md)

πŸ“ž Getting Help

For MCP Server Developers

For Framework Contributors


🀝 Contributing

We welcome contributions! Please see:


πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


Built with ❀️ for MCP Server Developers and Framework Contributors

Need help? Check the appropriate guide for your use case!

F
license - not found
Not graded
quality - not tested
B
maintenance

Maintenance

0Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    A production-ready framework for building enterprise-grade MCP servers featuring integrated OAuth 2.0 authentication and modular architectural patterns. It simplifies the creation of secure, standardized tools that allow AI assistants to interact with complex upstream platforms like Salesforce and NetSuite.
    8
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A production-ready MCP server scaffold that features built-in authentication, Docker support, and a comprehensive CI/CD release pipeline. It provides a standardized template for deploying servers with multi-transport support and configurable read-only modes.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Easiest framework for building MCP servers with automatic discovery of tools, prompts, and resources, plus enterprise-grade authentication and telemetry.
    839
    Apache 2.0

View all related MCP servers

Latest Blog Posts

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/Edouard-Legoupil/mcp-platform-framework'

If you have feedback or need assistance with the MCP directory API, please join our Discord server