MCP-Copilot-Automations
Bridges LLMs with enterprise IT operations by resolving user intents via Dataverse, creating ServiceNow service requests, and triggering Azure Automation Webhooks.
README
MCP-Copilot-Automations
Overview
MCP-Copilot-Automations is a Model Context Protocol (MCP) server built with FastMCP. It is designed to act as a bridge between Large Language Models (LLMs) and enterprise IT operations. The server provides tools to dynamically resolve user intents by querying Microsoft Dataverse, generate corresponding ServiceNow service requests, and trigger Azure Automation Webhooks to fulfill the requested actions.
This architecture enables an Agentic AI workflow where an LLM can discover the parameters required for a service request, prompt the user for missing details, create an audit trail in ServiceNow, and execute the backend automation seamlessly.
Key Components
- FastMCP Server (
copilotautomations.py): Hosts the MCP tools and handles HTTP transport for LLM integrations. It uses MSAL to authenticate with Azure Entra ID and fetch tool definitions from a specified Dataverse table. - ServiceNow Client (
ticketcreation.py): An asynchronous client that leverageshttpxto createsc_requestrecords in a ServiceNow instance, ensuring all automated actions are logged as standard service requests.
Prerequisites
To run this server, you need the following:
- Python 3.12+
- Azure App Registration: An Azure Entra ID application with permissions to access your Microsoft Dynamics 365 / Dataverse environment.
- Microsoft Dataverse: A custom table containing intent mapping, tool definitions (Step_Json), and Webhook URLs.
- ServiceNow Instance: Active developer or enterprise ServiceNow instance with API access.
Environment Variables
Create a .env file in the root directory and configure the following required variables:
# Microsoft Dataverse & Azure AD
DYNAMICS_INSTANCE=org********.crm8.dynamics.com
DATAVERSE_TABLE_NAME=cr9a7_servicerequestintentdetailses
AZURE_TENANT_ID=your-azure-tenant-id
AZURE_CLIENT_ID=your-azure-client-id
AZURE_CLIENT_SECRET=your-azure-client-secret
# ServiceNow
SERVICENOW_INSTANCE=https://dev******.service-now.com
SERVICENOW_USER=admin
SERVICENOW_PASS=your-servicenow-password
# Optional Configuration
PORT=8000 # Default port for the MCP server
Installation
- Clone the repository or download the source code.
- Install the required Python dependencies:
pip install -r requirements.txt
(Dependencies: fastmcp, httpx, msal, python-dotenv, requests)
Available MCP Tools
1. Resolve_Service_Request_Intent
- Description: Queries the Dataverse table based on a natural language user intent (e.g., "Create Shared Mailbox"). It fetches the required field definitions (
Step_Json) and the target Azure Automation Webhook URL. - Input:
intent(string) - Output: JSON object containing the
tool_definition,webhook_url, and an emptyparamsbodytemplate for the LLM to populate by asking the user.
2. Invoke_Webhook
- Description: Executed by the LLM after gathering all necessary parameters from the user. It creates a new Service Request (
sc_request) in ServiceNow, logs the user details, and then invokes the target Azure Automation webhook. - Input:
url: The Azure webhook URL.jsonbody: The populated parameters payload.user: User's email ID.userintent: The natural language intent.
- Output: The generated ServiceNow request number and the HTTP response from the Azure Automation webhook.
Running the Server
Start the FastMCP server by running the main Python script:
python copilotautomations.py
By default, the server runs on 0.0.0.0 over HTTP at port 8000 (or the port specified by the $PORT environment variable). The MCP endpoint is explicitly bound to /mcp.
Deployment Notes
- Azure App Service: The code binds to
0.0.0.0and respects the$PORTenvironment variable, making it ready for deployment on Azure App Service or containerized environments. - SSL Verification: The current implementation disables strict environment SSL checks (
trust_env=Falseinhttpxand pops SSL bundles from OS env) to bypass certain enterprise proxy restrictions. Adjust this for production environments requiring strict certificate validation.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.