Skip to main content
Glama

Agent365 MCP - Dataverse Integration

AI Model Management System with Microsoft Dataverse and Stripe Integration for Intertech Numberology Thailand.

Overview

Agent365 MCP provides a Model Context Protocol (MCP) server that integrates with Microsoft Dataverse to manage AI models and handle payment processing through Stripe.

Related MCP server: MCP Dataverse Server

Features

Dataverse Integration

  • Fetch and parse EDMX metadata for cr_aimodels

  • Extract properties, lookups, and entity schema

  • Automatic publisher prefix detection (fuzzy matching)

Azure Authentication

  • MSAL token caching for efficient API calls

  • Secure client credentials flow

  • Automatic token refresh

MCP Tools

  • health_check() - Server health status

  • get_ai_model(model_id) - Retrieve AI model configuration

  • fetch_metadata() - Fetch Dataverse metadata

  • parse_cr_aimodels() - Parse and schema extraction

Stripe Integration

  • Webhook listener for payment events

  • Webhook signing for security

  • Test event triggering

Prerequisites

  • Python 3.8+

  • Node.js 14+ (for Stripe CLI)

  • Azure AD Application Registration

  • Dataverse environment

  • Stripe account

Installation

1. Clone the Repository

git clone https://github.com/intertechnumberlogythailand-oem/agent365-mcp.git
cd agent365-mcp

2. Create Virtual Environment

python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

3. Install Dependencies

pip install -r requirements.txt
npm install -g @stripe/cli@latest

4. Configure Environment Variables

cp .env.example .env

Edit .env and fill in:

  • AZURE_TENANT_ID - Your Azure AD tenant ID

  • AZURE_CLIENT_ID - Your Azure AD client ID

  • AZURE_CLIENT_SECRET - Your Azure AD client secret

  • DATAVERSE_ENV - Your Dataverse environment URL

  • STRIPE_PUBLIC_KEY - Your Stripe public key

  • STRIPE_SECRET_KEY - Your Stripe secret key

  • STRIPE_WEBHOOK_SECRET - Your Stripe webhook signing secret

Usage

Fetch Dataverse Metadata

python dataverse_metadata_v2.py

This will:

  1. Authenticate with Azure AD

  2. Fetch the EDMX metadata from Dataverse

  3. Parse the cr_aimodels entity schema

  4. Generate cr_aimodels_schema.json

Output Example

╔══ cr_aimodels Schema ═══════════════════════════════════════╗
  EntityType  : cr_aimodels
  EntitySet   : cr_aimodelses   ← use in API calls
  Primary Key : cr_aimodelid
  Base Type   : crmbaseentity
╚═════════════════════════════════════════════════════════════╝

  Properties (42):
  logical_name                                    type                           nullable
  ────────────────────────────────────────────────────────────────────────────────
  cr_name                                         Edm.String                     yes
  cr_description                                  Edm.String                     yes
  cr_modeltype                                    Edm.String                     yes
  ...

Start Stripe Webhook Listener

stripe listen

Test Stripe Events

stripe trigger charge.succeeded

Project Structure

agent365-mcp/
├── dataverse_metadata_v2.py      # Main metadata extraction script
├── requirements.txt              # Python dependencies
├── .env.example                  # Environment template
├── .gitignore                    # Git ignore rules
├── README.md                     # This file
└── cr_aimodels_schema.json       # Generated schema (auto-created)

API Endpoints

Dataverse API

GET /api/data/v9.2/$metadata?annotations=true
GET /api/data/v9.2/cr_aimodelses?$select=cr_name,cr_description,...
POST /api/data/v9.2/cr_aimodelses
PATCH /api/data/v9.2/cr_aimodelses(ID)
DELETE /api/data/v9.2/cr_aimodelses(ID)

Stripe API

POST /webhook  (Receive webhook events)

Environment Variables

Variable

Description

Example

AZURE_TENANT_ID

Azure AD tenant ID

xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

AZURE_CLIENT_ID

Azure AD app ID

xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

AZURE_CLIENT_SECRET

Azure AD secret

your_secret_here

DATAVERSE_ENV

Dataverse URL

https://intertechnumberlogythailand.crm5.dynamics.com

MCP_SERVER_NAME

MCP server name

intertechnumberlogythailand

MCP_SERVER_PORT

MCP server port

8000

STRIPE_PUBLIC_KEY

Stripe public key

pk_test_...

STRIPE_SECRET_KEY

Stripe secret key

sk_test_...

STRIPE_WEBHOOK_SECRET

Stripe webhook secret

whsec_...

Troubleshooting

Token Error: "Unauthorized_client"

  • Verify Azure AD credentials in .env

  • Check that the app has Dataverse API permissions

Error: "cr_aimodels not found"

  • Check if the table exists in your Dataverse environment

  • The table might have a different publisher prefix (e.g., cr8a2_aimodels)

  • Run with debug mode to see all custom entities

Stripe Webhook Not Receiving Events

  • Ensure stripe listen is running

  • Check webhook endpoint URL is accessible

  • Verify STRIPE_WEBHOOK_SECRET is correct

Contributing

  1. Create a feature branch (git checkout -b feature/AmazingFeature)

  2. Commit your changes (git commit -m 'Add some AmazingFeature')

  3. Push to the branch (git push origin feature/AmazingFeature)

  4. Open a Pull Request

License

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

Support

For issues and questions:


Made with ❤️ by Intertech Numberology Thailand

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    A Model Context Protocol (MCP) server that provides intelligent access to PowerPlatform/Dataverse entities and records. This tool offers context-aware assistance, entity exploration and metadata access.
    38
    111 npm
    43
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables CRUD operations and schema exploration on Microsoft Dataverse databases using service principal authentication. It allows users to query records with OData filters, manage table entries, and retrieve metadata through a standardized MCP interface.
    -
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI agents to query, inspect, and manage Microsoft Dataverse records, metadata, schema, forms, views, and Power Platform environments via the Dataverse OData Web API.
    97
    2
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to read and modify Mendix application models through MCP tools for creating modules, entities, pages, microflows, deploying, and querying runtime data.
    1
    -