Tilfoej Microsoft Learn MCP til udviklere + goer add_repo konkret

To ting fra QualityHub-sporet:

1. Udviklere faar nu samme Microsoft Learn MCP som Mode C-supportbrugere
   allerede havde (https://learn.microsoft.com/api/mcp, HTTP, ingen auth) -
   registreret maskin-globalt via sync-bcquality-knowledge.ps1, samme
   moenster som al/businesscentral. Lukker hullet hvor udviklere kun havde
   den statiske microsoft/-videnfil-snapshot og ingen live dokumentationssoegning.

2. add_repo-mekanismen i curabis-app-sources-must-be-checked-first.md var
   kun naevnt, aldrig defineret - intet vaerktoej med det navn findes i
   Claude Code CLI. Erstattet med en konkret, testet mekanisme: en
   vedvarende, opdateret klon i ~/.claude/reference-repos/<org>/<repo>/,
   samme moenster som BCQualitys egen kanal-klon. Testet live mod det
   faktiske microsoft/BCApps-repo (shallow clone ~52s, ~36.000 .al-filer,
   git pull --depth 1 til opdatering).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Michael Dieringer 2026-07-31 20:03:10 +02:00
parent 2d0f1c1eec
commit 85b2acc372
3 changed files with 82 additions and 25 deletions

View file

@ -212,13 +212,14 @@ If it does NOT exist:
Everything machine-global beyond the bridge and BC secret — the knowledge
mirror, the 19 roster agent files (18 to `~/.claude/curabis-agents/` +
Florence to `~/.claude/agents/florence.md`), `~/.claude/find-altool.ps1`, and
the `al`/`businesscentral` MCP registrations — is deployed by ONE script,
`sync-bcquality-knowledge.ps1`. None of it is ever committed to a project
repository (BCQuality rule `bcquality-knowledge-must-mirror-to-machine-not-repo`,
extended in v24 to `roster-agents-live-on-machine-not-in-repo`). Rationale:
developers switch between many repos daily — N per-repo copies are
permanently out of sync with each other, while one machine copy needs
exactly one sync per upstream change.
the `al`/`businesscentral`/`microsoft-learn` MCP registrations — is deployed
by ONE script, `sync-bcquality-knowledge.ps1`. None of it is ever committed
to a project repository (BCQuality rule
`bcquality-knowledge-must-mirror-to-machine-not-repo`, extended in v24 to
`roster-agents-live-on-machine-not-in-repo`). Rationale: developers switch
between many repos daily — N per-repo copies are permanently out of sync
with each other, while one machine copy needs exactly one sync per upstream
change.
1. Fetch `{BASE}/sync-bcquality-knowledge.ps1` → write AS RAW BYTES
(`Invoke-WebRequest -OutFile`, never via string content — re-encoding
@ -234,15 +235,20 @@ exactly one sync per upstream change.
- `~/.claude/curabis-agents/*.agent.md` (18 files)
- `~/.claude/agents/florence.md` (Florence, as a real subagent)
- `~/.claude/find-altool.ps1`
- `al` + `businesscentral` registered at user MCP scope (idempotent — a
server that already exists is reported, not re-added or overwritten)
- `al` + `businesscentral` + `microsoft-learn` registered at user MCP scope
(idempotent — a server that already exists is reported, not re-added or
overwritten). `microsoft-learn` is `https://learn.microsoft.com/api/mcp`,
HTTP transport, no auth — the same official documentation search Mode C
already gives support users; v24 closes the gap where developers had
only the static `microsoft/` knowledge-file snapshot and no live search
of Microsoft's own docs.
3. If a v6-era `.github/.agents/bcquality-knowledge/` exists in THIS repo,
add it to `.gitignore` so no future session can accidentally commit it
(see the v6-cleanup step in Mode B for full removal — this step just
prevents new commits).
4. Confirm: "Maskine-opsætning synkroniseret — bcquality-knowledge [antal]
filer, curabis-agents 18 filer, Florence, find-altool.ps1, MCP (al,
businesscentral)."
businesscentral, microsoft-learn)."
This machine setup is what the global `~/.claude/CLAUDE.md` roster section
and the project CLAUDE.md's session-start line both depend on. Without this
@ -543,7 +549,7 @@ these are shared across every CURABIS repo on the machine:
| `~/.claude/curabis-agents/*.agent.md` (18 files) | Re-run the sync script |
| `~/.claude/agents/florence.md` | Re-run the sync script |
| `~/.claude/find-altool.ps1` | Re-run the sync script |
| `al` + `businesscentral` MCP servers (user scope) | Re-run the sync script — idempotent: registers if missing, does NOT touch an existing registration (a developer's personal-scope config is not policed the way repo-shared `.mcp.json` used to be) |
| `al` + `businesscentral` + `microsoft-learn` MCP servers (user scope) | Re-run the sync script — idempotent: registers if missing, does NOT touch an existing registration (a developer's personal-scope config is not policed the way repo-shared `.mcp.json` used to be) |
| `.github/.agents/bcquality-knowledge/` + `.github/.agents/sync-bcquality-knowledge.ps1` | v6-era repo-local mirror: propose removal (see below) |
### bcquality-knowledge — machine re-sync (Mode B)

View file

@ -198,3 +198,27 @@ Ensure-UserMcpServer -Name 'al' -CommandAndArgs @(
'-File', '${USERPROFILE}\.claude\find-altool.ps1',
'launchmcpserver', 'auto', '--transport', 'stdio'
)
# --- 9. Microsoft Learn MCP (HTTP, ingen auth) - samme adgang udviklere faar som
# Mode C support-brugere allerede har. Verificeret 2026-07-30: offentlig, ingen
# nogen creds noedvendige, stdio-mekanismen ovenfor gaelder ikke - HTTP-transport
# bruger et andet flag-sæt (--transport http, ingen '--' kommando-adskiller).
function Ensure-UserMcpHttpServer {
param([string]$Name, [string]$Url)
$prevEap = $ErrorActionPreference
$ErrorActionPreference = 'Continue'
$output = & claude mcp add --scope user --transport http $Name $Url 2>&1
$exitCode = $LASTEXITCODE
$ErrorActionPreference = $prevEap
if ($exitCode -ne 0) {
if ($output -match 'already exists') {
Write-Host "MCP-server '$Name' er allerede registreret paa user scope."
} else {
throw "claude mcp add fejlede for '$Name': $output"
}
} else {
Write-Host "MCP-server '$Name' registreret paa user scope."
}
}
Ensure-UserMcpHttpServer -Name 'microsoft-learn' -Url 'https://learn.microsoft.com/api/mcp'