Skip to main content
Glama
rafteles2016

MCP Dynamics CRM Server

by rafteles2016

dynamics_import_solution

Import customizations and configurations into Microsoft Dynamics CRM by uploading solution files to deploy updates and manage system components.

Instructions

Importa uma solução para o Dynamics CRM

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
customizationFileYesConteúdo do arquivo ZIP da solução em Base64
overwriteUnmanagedCustomizationsNo
publishWorkflowsNo
importJobIdNoID do job de importação (gerado automaticamente se não fornecido)

Implementation Reference

  • The handler for the 'dynamics_import_solution' tool. It triggers the 'ImportSolution' action via the Dataverse client.
    // 7. Import Solution
    server.tool(
      "dynamics_import_solution",
      "Importa uma solução para o Dynamics CRM",
      ImportSolutionSchema.shape,
      async (params: z.infer<typeof ImportSolutionSchema>) => {
        const importJobId = params.importJobId || crypto.randomUUID();
    
        await client.executeAction("ImportSolution", {
          CustomizationFile: params.customizationFile,
          OverwriteUnmanagedCustomizations: params.overwriteUnmanagedCustomizations,
          PublishWorkflows: params.publishWorkflows,
          ImportJobId: importJobId,
        });
    
        return {
          content: [
            {
              type: "text" as const,
              text: `Importação da solução iniciada!\nImport Job ID: ${importJobId}\n\nUse dynamics_get_import_job_status para acompanhar o progresso.`,
            },
          ],
        };
      }
    );
  • Input validation schema for 'dynamics_import_solution'.
    export const ImportSolutionSchema = z.object({
      customizationFile: z.string().describe("Conteúdo do arquivo ZIP da solução em Base64"),
      overwriteUnmanagedCustomizations: z.boolean().default(true),
      publishWorkflows: z.boolean().default(true),
      importJobId: z.string().optional().describe("ID do job de importação (gerado automaticamente se não fornecido)"),
    });
  • Registration of the 'dynamics_import_solution' tool.
    "dynamics_import_solution",
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It mentions 'importa' (imports), implying a write operation, but fails to detail critical behaviors: whether it's idempotent, requires specific permissions, has side effects (e.g., overwriting existing customizations), or how errors are handled. The description adds minimal value beyond the basic action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, straightforward sentence with no wasted words, making it efficient. However, it's front-loaded with only basic information and lacks necessary elaboration for a tool with multiple parameters and no annotations, slightly reducing its effectiveness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (4 parameters, 1 required, no output schema, and no annotations), the description is incomplete. It doesn't explain the import process, expected outcomes, error handling, or how it interacts with sibling tools like 'dynamics_get_import_job_status'. For a mutation tool with significant behavioral implications, this leaves critical gaps for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50% (2 out of 4 parameters have descriptions), so the description must compensate but doesn't. It provides no additional parameter context beyond what the schema offers (e.g., explaining the Base64 format or the implications of 'overwriteUnmanagedCustomizations'). However, since the schema covers half the parameters adequately, a baseline score of 3 is appropriate, though the description adds no extra value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the action ('Importa uma solução') and target ('para o Dynamics CRM'), which provides a basic purpose. However, it's vague about what 'solução' entails (e.g., a solution package with customizations) and doesn't differentiate from sibling tools like 'dynamics_export_solution' or 'dynamics_create_solution', leaving ambiguity about its specific role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. For example, it doesn't mention prerequisites (e.g., needing an exported solution file), when to choose it over 'dynamics_clone_solution', or how it relates to 'dynamics_get_import_job_status'. This lack of context makes it hard for an agent to decide appropriately.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

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/rafteles2016/mcpDynamics'

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