You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
3.7 KiB
70 lines
3.7 KiB
|
2 months ago
|
---
|
||
|
|
name: "mslearn"
|
||
|
|
description: "Query the live Microsoft Learn MCP for grounded, first-party docs, code samples, and full-page fetches across Azure, M365, .NET, and Power Platform. Use when the user asks what Microsoft says about X, needs an authoritative answer for a customer, wants current official guidance, looks for a code sample, or asks to cite or quote the docs. Triggers: ms learn, microsoft learn, learn docs, look it up on learn, cite the docs, official microsoft guidance, what do the docs say."
|
||
|
|
---
|
||
|
|
|
||
|
|
# MS Learn MCP skill
|
||
|
|
|
||
|
|
Calls the public Microsoft Learn MCP server at `https://learn.microsoft.com/api/mcp` over JSON-RPC 2.0. No auth required. Use this to ground customer-facing answers in live, first-party Microsoft documentation.
|
||
|
|
|
||
|
|
## Three tools available
|
||
|
|
|
||
|
|
| Tool | Purpose | Args |
|
||
|
|
| --- | --- | --- |
|
||
|
|
| `microsoft_docs_search` | Top-10 doc chunks (≤500 tokens each). Always start here. | `query` (string) |
|
||
|
|
| `microsoft_code_sample_search` | Official code snippets. Use when generating any MS/Azure code. | `query` (string), `language` (optional: csharp, javascript, typescript, python, powershell, azurecli, al, sql, java, kusto, cpp, go, rust, ruby, php) |
|
||
|
|
| `microsoft_docs_fetch` | Full page → markdown. Use AFTER search when a result looks high-value or is truncated. | `url` (must be microsoft.com HTML page) |
|
||
|
|
|
||
|
|
## How to call (PowerShell)
|
||
|
|
|
||
|
|
```powershell
|
||
|
|
$body = @{
|
||
|
|
jsonrpc = "2.0"
|
||
|
|
id = 1
|
||
|
|
method = "tools/call"
|
||
|
|
params = @{
|
||
|
|
name = "microsoft_docs_search"
|
||
|
|
arguments = @{ query = "YOUR QUERY HERE" }
|
||
|
|
}
|
||
|
|
} | ConvertTo-Json -Compress -Depth 6
|
||
|
|
|
||
|
|
curl.exe -s -X POST "https://learn.microsoft.com/api/mcp" `
|
||
|
|
-H "Content-Type: application/json" `
|
||
|
|
-H "Accept: application/json, text/event-stream" `
|
||
|
|
-d $body
|
||
|
|
```
|
||
|
|
|
||
|
|
Response is SSE-framed: skip the `event: message\ndata: ` prefix, then JSON-parse. The `result.content[0].text` field is itself JSON — parse it again to get `results[]`.
|
||
|
|
|
||
|
|
Quick parser:
|
||
|
|
```powershell
|
||
|
|
$raw = curl.exe ... # as above
|
||
|
|
$json = ($raw -join "`n") -replace '^event:.*\ndata: ',''
|
||
|
|
$outer = $json | ConvertFrom-Json
|
||
|
|
$inner = $outer.result.content[0].text | ConvertFrom-Json
|
||
|
|
$inner.results | ForEach-Object { "[$($_.title)]($($_.contentUrl))`n$($_.content)`n" }
|
||
|
|
```
|
||
|
|
|
||
|
|
To call `microsoft_code_sample_search` or `microsoft_docs_fetch`, swap the `params.name` and `params.arguments` accordingly (e.g. `arguments = @{ query = "..."; language = "csharp" }` or `arguments = @{ url = "https://learn.microsoft.com/..." }`).
|
||
|
|
|
||
|
|
## Workflow for a customer answer
|
||
|
|
|
||
|
|
1. **Search** with `microsoft_docs_search` using the user's question verbatim or refined keywords.
|
||
|
|
2. Skim the top results. If they fully answer the question → synthesize and cite.
|
||
|
|
3. If a result is truncated, ambiguous, or is the canonical landing page → **fetch** it with `microsoft_docs_fetch` for full content.
|
||
|
|
4. If the user wants code → also call `microsoft_code_sample_search` with the right `language`.
|
||
|
|
5. Compose the response with **inline citations**: every claim that came from Learn must link to the source `contentUrl` so the customer can verify.
|
||
|
|
|
||
|
|
## Output style for customer-facing answers
|
||
|
|
|
||
|
|
- Lead with a one-paragraph plain-English answer.
|
||
|
|
- Follow with bullet points of key facts, each citing `[Source title](url)`.
|
||
|
|
- If quoting code, fence it with the right language and cite the sample's `link`.
|
||
|
|
- End with **"Sources"** section listing every URL used.
|
||
|
|
- Never paraphrase past what the docs say. If Learn doesn't cover it, say so explicitly — don't fill gaps with model knowledge.
|
||
|
|
|
||
|
|
## When NOT to use
|
||
|
|
- Internal Microsoft content (Seismic, MSX, Learn Pathways gated content) — use the other skills.
|
||
|
|
- Non-Microsoft topics — Learn won't have it.
|
||
|
|
- Anything time-sensitive about pricing/SLAs — confirm via the actual product pricing page after Learn points you there.
|