Skip to main content
Glama
rafteles2016

MCP Dynamics CRM Server

by rafteles2016

dynamics_generate_plugin_project

Generate a complete C# plugin project structure for Microsoft Dynamics CRM with .csproj files, classes, and configured plugins for specific entities and events.

Instructions

Gera a estrutura completa de um projeto de plugin C# (.csproj, classes, etc.)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
projectNameYesNome do projeto
namespaceYesNamespace do projeto
pluginsYesLista de plugins a serem gerados

Implementation Reference

  • Handler implementation for "dynamics_generate_plugin_project" tool which generates a C# plugin project structure, including the .csproj file and associated plugin classes using templates.
    server.tool(
      "dynamics_generate_plugin_project",
      "Gera a estrutura completa de um projeto de plugin C# (.csproj, classes, etc.)",
      z.object({
        projectName: z.string().describe("Nome do projeto"),
        namespace: z.string().describe("Namespace do projeto"),
        plugins: z.array(CreatePluginSchema).describe("Lista de plugins a serem gerados"),
      }).shape,
      async (params: { projectName: string; namespace: string; plugins: z.infer<typeof CreatePluginSchema>[] }) => {
        const csproj = PLUGIN_TEMPLATES.csproj
          .replace(/{{PROJECT_NAME}}/g, params.projectName)
          .replace(/{{NAMESPACE}}/g, params.namespace);
    
        const pluginFiles: string[] = [];
        for (const plugin of params.plugins) {
          const stageValue = STAGE_MAP[plugin.stage] || 40;
          const code = PLUGIN_TEMPLATES.standard
            .replace(/{{NAMESPACE}}/g, params.namespace)
            .replace(/{{CLASS_NAME}}/g, plugin.name)
            .replace(/{{ENTITY_LOGICAL_NAME}}/g, plugin.entityLogicalName)
            .replace(/{{MESSAGE}}/g, plugin.message)
            .replace(/{{STAGE}}/g, String(stageValue))
            .replace(/{{EXECUTION_MODE}}/g, plugin.executionMode === "Synchronous" ? "0" : "1")
            .replace(/{{FILTERING_ATTRIBUTES}}/g, plugin.filteringAttributes || "")
            .replace(/{{DESCRIPTION}}/g, plugin.description || `Plugin ${plugin.name}`)
            .replace(/{{BUSINESS_LOGIC}}/g, plugin.businessLogic || "// TODO: Implement business logic");
          pluginFiles.push(`// File: ${plugin.name}.cs\n${code}`);
        }
    
        return {
          content: [
            {
              type: "text" as const,
              text: `Projeto gerado: **${params.projectName}**\n\n## ${params.projectName}.csproj\n\`\`\`xml\n${csproj}\n\`\`\`\n\n## Plugins\n${pluginFiles.map((f) => `\`\`\`csharp\n${f}\n\`\`\``).join("\n\n")}`,
            },
          ],
        };
      }
    );

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