sergiocabellopacha/Dataverse_Metadata_MCP
If you are the rightful owner of Dataverse_Metadata_MCP and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
Davaverse_Metadata_MCP is a local MCP Server designed to retrieve metadata from Dataverse.
Dataverse Metadata MCP Server
Un servidor MCP (Model Context Protocol) para consultar metadatos de Microsoft Dataverse, incluyendo entidades, atributos, relaciones y conjuntos de opciones a través de múltiples entornos.
🚀 Características
- Consulta de Metadatos: Acceso completo a metadatos de entidades, atributos y relaciones
- Múltiples Entornos: Soporte para múltiples entornos de Dataverse (desarrollo, producción, sandbox, etc.)
- Autenticación Flexible: Soporta autenticación interactiva y service principal
- Integración con GitHub Copilot: Funciona perfectamente con GitHub Copilot en VS Code
- Fácil Instalación: Disponible como paquete NuGet, no requiere clonar el repositorio
📋 Requisitos Previos
- .NET 8.0 SDK o superior
- Visual Studio Code
- Extensión de GitHub Copilot para VS Code
- Acceso a un entorno de Microsoft Dataverse
- Azure AD App Registration para autenticación
🔧 Instalación
Opción 1: Instalación vía NuGet (Próximamente)
⚠️ Nota: El paquete aún no está publicado en NuGet. Por ahora, usa la Opción 2: Desarrollo Local.
Una vez publicado, podrás instalarlo así:
-
Instalar .NET SDK (si aún no lo tienes):
# Verificar instalación dotnet --version -
Instalar la herramienta globalmente:
dotnet tool install -g DataverseMetadataMcpNota: Si ya la tienes instalada y quieres actualizar a la última versión:
dotnet tool update -g DataverseMetadataMcp -
Configurar en VS Code:
Crea o edita el archivo de configuración MCP en VS Code:
- Windows:
%APPDATA%\Roaming\Code\User\mcp.json
O crea un archivo
.vscode/mcp.jsonen la raíz de tu workspace. - Windows:
-
Agregar configuración del servidor:
{ "mcpServers": { "dataverse-metadata": { "type": "stdio", "command": "dataverse-mcp-server", "args": [], "env": { "DATAVERSE_MCP_Dataverse__CurrentEnvironment": "production", "DATAVERSE_MCP_Dataverse__Environments__production__DisplayName": "Mi Entorno de Producción", "DATAVERSE_MCP_Dataverse__Environments__production__OrganizationUrl": "https://tuorg.crm.dynamics.com", "DATAVERSE_MCP_Dataverse__Environments__production__Authentication__AuthType": "Interactive" } } } }Nota: Para autenticación interactiva, solo necesitas el
AuthType. ElClientIdyTenantIdson opcionales (se usarán valores por defecto si no se especifican). -
Reinicia VS Code y ¡listo! El servidor estará disponible en GitHub Copilot.
Opción 2: Desarrollo Local (Recomendado actualmente)
-
Clonar el repositorio:
git clone https://github.com/sergiocabellopacha/Davaverse_Metadata_MCP.git cd Davaverse_Metadata_MCP -
Restaurar dependencias:
dotnet restore src/DataverseMetadataMcp/DataverseMetadataMcp.csproj -
Configurar entorno local:
Crea un archivo
.vscode/mcp.jsonen la raíz del proyecto con esta configuración:{ "mcpServers": { "dataverse-metadata": { "type": "stdio", "command": "dotnet", "args": [ "run", "--project", "src/DataverseMetadataMcp/DataverseMetadataMcp.csproj" ], "env": { "DATAVERSE_MCP_Dataverse__CurrentEnvironment": "development", "DATAVERSE_MCP_Dataverse__Environments__development__DisplayName": "Desarrollo", "DATAVERSE_MCP_Dataverse__Environments__development__OrganizationUrl": "https://tuorg-dev.crm.dynamics.com", "DATAVERSE_MCP_Dataverse__Environments__development__Authentication__AuthType": "Interactive" } } } }Nota: es posible que ese path al proyecto no sirva y tengas que ponerlo completo a donde lo hayas clonado. Nota: Reemplaza
https://tuorg-dev.crm.dynamics.comcon la URL de tu organización de Dataverse. -
Reinicia VS Code y el servidor MCP estará disponible en GitHub Copilot.
⚙️ Configuración
Variables de Entorno
El servidor se configura mediante variables de entorno con el prefijo DATAVERSE_MCP_. Puedes configurar múltiples entornos:
Configuración General
DATAVERSE_MCP_Dataverse__CurrentEnvironment: Nombre del entorno actual a utilizar
Configuración por Entorno
Para cada entorno (reemplaza {env} con el nombre del entorno, ej: development, production, sandbox):
DATAVERSE_MCP_Dataverse__Environments__{env}__DisplayName: Nombre descriptivo del entornoDATAVERSE_MCP_Dataverse__Environments__{env}__OrganizationUrl: URL de la organización DataverseDATAVERSE_MCP_Dataverse__Environments__{env}__Authentication__AuthType: Tipo de autenticación (InteractiveoServicePrincipal)DATAVERSE_MCP_Dataverse__Environments__{env}__Authentication__TenantId: ID del tenant de Azure AD (opcional paraInteractive)DATAVERSE_MCP_Dataverse__Environments__{env}__Authentication__ClientId: ID de la aplicación Azure AD (opcional paraInteractive)DATAVERSE_MCP_Dataverse__Environments__{env}__Authentication__ClientSecret: Secreto del cliente (requerido solo paraServicePrincipal)
Ejemplo con Múltiples Entornos
{
"mcpServers": {
"dataverse-metadata": {
"type": "stdio",
"command": "dataverse-mcp-server",
"args": [],
"env": {
"DATAVERSE_MCP_Dataverse__CurrentEnvironment": "development",
"DATAVERSE_MCP_Dataverse__Environments__development__DisplayName": "Desarrollo",
"DATAVERSE_MCP_Dataverse__Environments__development__OrganizationUrl": "https://dev.crm.dynamics.com",
"DATAVERSE_MCP_Dataverse__Environments__development__Authentication__AuthType": "Interactive",
"DATAVERSE_MCP_Dataverse__Environments__production__DisplayName": "Producción",
"DATAVERSE_MCP_Dataverse__Environments__production__OrganizationUrl": "https://prod.crm.dynamics.com",
"DATAVERSE_MCP_Dataverse__Environments__production__Authentication__AuthType": "ServicePrincipal",
"DATAVERSE_MCP_Dataverse__Environments__production__Authentication__ClientId": "client-id",
"DATAVERSE_MCP_Dataverse__Environments__production__Authentication__ClientSecret": "secret"
}
}
}
}
Notas importantes:
- Para autenticación Interactive: Solo necesitas
AuthType.ClientIdyTenantIdson opcionales. - Para autenticación ServicePrincipal: Debes proporcionar
ClientIdyClientSecret(ambos requeridos).
🔑 Configuración de Azure AD
Para autenticación interactiva, no necesitas configurar una Azure AD App Registration. El servidor utilizará la aplicación por defecto de Microsoft.
Para autenticación Service Principal, sigue estos pasos:
- Ve a Azure Portal
- Navega a Azure Active Directory > App registrations > New registration
- Configura la aplicación:
- Name: Dataverse MCP Server
- Supported account types: Single tenant
- Copia el Application (client) ID y Directory (tenant) ID
- Ve a Certificates & secrets > New client secret
- Copia el secreto generado
- Configura permisos API:
- API permissions > Add a permission > Dynamics CRM
- Agrega user_impersonation permission
- Asegúrate de que el Service Principal tenga acceso al entorno de Dataverse
🛠️ Herramientas Disponibles
El servidor expone las siguientes herramientas para GitHub Copilot:
GetEnvironmentInfo
Obtiene información sobre el entorno Dataverse actual, incluyendo estado de conexión y versión.
Ejemplo de uso en Copilot:
@workspace ¿Cuál es el estado de mi entorno de Dataverse?
ListEnvironments
Lista todos los entornos de Dataverse configurados en el servidor.
Ejemplo de uso:
@workspace Muéstrame los entornos disponibles
SetEnvironment
Cambia a un entorno de Dataverse diferente.
Parámetros:
environmentName: Nombre del entorno (ej: development, production, sandbox)
Ejemplo de uso:
@workspace Cambia al entorno de producción
ListEntities
Lista todas las entidades (tablas) en el entorno actual.
Parámetros:
customOnly(opcional): Si es true, solo devuelve entidades personalizadas
Ejemplo de uso:
@workspace Lista todas las entidades personalizadas
@workspace Muéstrame todas las tablas en Dataverse
GetEntityDetails
Obtiene metadatos detallados de una entidad específica.
Parámetros:
entityLogicalName: Nombre lógico de la entidad (ej: account, contact)
Ejemplo de uso:
@workspace Dame los detalles de la entidad account
@workspace ¿Qué metadatos tiene la tabla contact?
ListEntityAttributes
Lista todos los atributos (columnas/campos) de una entidad específica.
Parámetros:
entityLogicalName: Nombre lógico de la entidadcustomOnly(opcional): Si es true, solo devuelve atributos personalizados
Ejemplo de uso:
@workspace Lista los campos de la entidad account
@workspace Muéstrame los atributos personalizados de contact
📚 Ejemplos de Uso
Explorar Metadatos
Usuario: @workspace ¿Qué entidades tengo disponibles?
Copilot: [Usa ListEntities para mostrar todas las entidades]
Usuario: @workspace Dame detalles sobre la entidad account
Copilot: [Usa GetEntityDetails con entityLogicalName="account"]
Usuario: @workspace ¿Qué campos tiene la tabla de contactos?
Copilot: [Usa ListEntityAttributes con entityLogicalName="contact"]
Cambiar entre Entornos
Usuario: @workspace Cambia a mi entorno de producción
Copilot: [Usa SetEnvironment con environmentName="production"]
Usuario: @workspace ¿En qué entorno estoy?
Copilot: [Usa GetEnvironmentInfo]
🐛 Solución de Problemas
Error: "No se encontró el comando dataverse-mcp-server"
Este error significa que la herramienta no está instalada globalmente. Soluciones:
-
Instala la herramienta:
dotnet tool install -g DataverseMetadataMcp -
Verifica que esté instalada:
dotnet tool list -g # Debe aparecer "dataversemetadatamcp" en la lista -
Si ya está instalada, actualízala:
dotnet tool update -g DataverseMetadataMcp -
Verifica la ruta de las herramientas globales:
- Las herramientas se instalan en
%USERPROFILE%\.dotnet\tools(Windows) - Asegúrate de que esta ruta esté en tu variable de entorno PATH
- Las herramientas se instalan en
Error de autenticación Interactive
- Si no especificas
ClientId, se usa la aplicación por defecto de Microsoft - Asegúrate de tener permisos para acceder al entorno de Dataverse
- Si aparece un error de autenticación, intenta especificar tu propio
ClientIdyTenantId
Error de autenticación ServicePrincipal
- Verifica que el
ClientIdyClientSecretsean correctos - Asegúrate de que el Service Principal tenga acceso al entorno de Dataverse
- Verifica que la aplicación tenga permisos para Dynamics CRM en Azure AD
El servidor no aparece en Copilot
- Verifica que el archivo
mcp.jsonesté en la ubicación correcta - Reinicia VS Code
- Comprueba los logs en la consola de desarrollador de VS Code (Help > Toggle Developer Tools)
Error de conexión a Dataverse
- Verifica que la OrganizationUrl sea correcta
- Asegúrate de tener acceso al entorno
- Prueba la conexión manualmente primero
📦 Publicación (Para Mantenedores)
Para publicar una nueva versión en NuGet:
# 1. Actualizar versión en .csproj y .mcp/server.json
# 2. Compilar en modo Release
dotnet build -c Release src/DataverseMetadataMcp/DataverseMetadataMcp.csproj
# 3. Empaquetar
dotnet pack -c Release src/DataverseMetadataMcp/DataverseMetadataMcp.csproj
# 4. Publicar a NuGet
dotnet nuget push src/DataverseMetadataMcp/bin/Release/*.nupkg --api-key <your-api-key> --source https://api.nuget.org/v3/index.json
🤝 Contribuir
Las contribuciones son bienvenidas! Por favor:
- Haz fork del repositorio
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
📄 Licencia
Este proyecto está licenciado bajo la Licencia MIT - ver el archivo para más detalles.
👤 Autor
Sergio Cabello Pacha
- GitHub: @sergiocabellopacha
🙏 Agradecimientos
- Model Context Protocol por el protocolo
- Microsoft Dataverse por la plataforma
- Comunidad de .NET y Power Platform
Nota: Este es un proyecto independiente y no está afiliado oficialmente con Microsoft.