~ / rigs / dynamics365ninja / d365fo-mcp-server

dynamics365ninja/d365fo-mcp-server

Exposes MCP tools that prove every method, field, label and form pattern against your real metadata before the AI writes code.

↗ GitHub ★ 151 mit updated 7d ago project Claude CodeCopilot
share on X
ARCHETYPE
Pragmatist
A balanced, no-drama setup: some rules, some tools, nothing extreme.
CONTEXT TAX · EVERY TURN
~2.7k tokens
Moderate · median rig: 2.3k · breakdown
GUARDRAILS
0/5
No committed guardrails · details

Copy this rig

# review before running: this installs third-party code
$ npx degit dynamics365ninja/d365fo-mcp-server/.claude ./rig-d365fo-mcp-server  # inspect, then merge into .claude/

MCP servers are added to Claude Code at local scope; env vars are shown as YOUR_… placeholders — we never store values. Files are fetched with degit into a separate folder so you can review before merging.

$ curl -fsSL --create-dirs -o .claude/agents/eval-author.md https://raw.githubusercontent.com/dynamics365ninja/d365fo-mcp-server/main/.claude/agents/eval-author.md
$ curl -fsSL --create-dirs -o .claude/agents/eval-implementer.md https://raw.githubusercontent.com/dynamics365ninja/d365fo-mcp-server/main/.claude/agents/eval-implementer.md
$ curl -fsSL --create-dirs -o .claude/agents/eval-improver.md https://raw.githubusercontent.com/dynamics365ninja/d365fo-mcp-server/main/.claude/agents/eval-improver.md

This rig commits no guardrails. Here is the community baseline instead — the deny/ask rules most often found across all 6,974 rigs:

{
  "permissions": {
    "deny": [
      "Read(./.env)",
      "Read(**/.env)",
      "Read(~/.ssh/**)",
      "Bash(rm -rf *)",
      "Read(**/*.pem)",
      "Bash(rm -rf /)",
      "Bash(git push --force:*)",
      "Bash(sudo *)",
      "Read(~/.aws/**)",
      "Bash(rm -rf /*)",
      "Read(./.env.*)",
      "Read(.env)",
      "Bash(git push --force*)",
      "Bash(rm -rf:*)",
      "Read(**/.env.*)",
      "Read(**/*.key)",
      "Bash(sudo:*)",
      "Bash(git reset --hard*)",
      "Bash(git reset --hard:*)",
      "Read(.env.*)"
    ],
    "ask": [
      "Bash(git push:*)",
      "Bash(git push *)",
      "Bash(git commit:*)",
      "Bash(rm *)",
      "Bash(rm:*)",
      "Bash(npm publish:*)",
      "Bash(wget *)",
      "Bash(git rebase *)",
      "Bash(gh pr merge *)",
      "Bash(git commit *)"
    ]
  }
}

Subagents (3)

eval-author
model: inherit
Authoring role for the D365FO agent eval loop catalog. Drafts a new eval/cases/<id>.json spec (valid against eval/cases/schema.json), scaffolds its golden folder, and sets golden_pending until the gol
eval-implementer
model: inherit
Implementer role of the D365FO agent eval loop. Runs ON THE VM (mcp-server in full mode + C# bridge) against the Contoso sandbox model. Takes an eval case id, drives the grounded MCP tool path to impl
eval-improver
model: inherit
Improver role of the D365FO agent eval loop. Reads the corpus of run records, ranks failure clusters, reproduces a TOOL_DEFECT/KNOWLEDGE_GAP/VALIDATOR_GAP as a minimal VM-free repo test, fixes it, val

Slash commands (3)

/eval-author/eval-improve/eval-run

Similar rigs

copied ✓