ML

Microsoft Learn MCP

Official remote MCP server that lets agents search and read current Microsoft Learn documentation and code samples (Azure, .NET, Microsoft 365 and more). Free, no API key.

📚 Up-to-date docs for codingGitHub stars1,951Updated 2026-10-17By MicrosoftLicense: CC-BY-4.0Auth: Not checked yetGitHub ↗

Test results

Last passed 2026-10-22
Claude CodePassed2026-10-22 · install, connect, tools, agent taskTested with Claude Code 2.1.296 · mcp-remote 0.15.2 · connected in 4.8s
CursorPassed2026-10-22 · install, connect, tools, agent taskTested with Cursor CLI 2026.10.22-27dcf5f · mcp-remote 0.15.2 · connected in 2.9s
Claude DesktopNot tested yet—
ChatGPT (Codex)Passed2026-10-22 · install, connect, tools, agent taskTested with Codex CLI 0.162.0-alpha.17.2 · mcp-remote 0.15.2 · connect time not recorded

Server package tested: mcp-remote 0.15.2 (npm, Node v20.19.2; resolved 2026-10-22)

Direct and key dependencies as resolved: express 4.22.3 · open 10.2.0 · strict-url-sanitise 0.0.1 · undici 7.30.1

All 79 resolved dependencies
accepts==1.3.8
array-flatten==1.1.1
body-parser==1.20.9
bundle-name==4.1.1
bytes==3.1.2
call-bind-apply-helpers==1.0.2
call-bound==1.0.4
content-disposition==0.5.4
content-type==1.0.5
cookie==0.7.2
cookie-signature==1.0.7
debug==2.6.9
default-browser==5.5.1
default-browser-id==5.0.1
define-lazy-prop==3.0.0
depd==2.0.0
destroy==1.2.0
dunder-proto==1.0.1
ee-first==1.1.1
encodeurl==2.0.0
es-define-property==1.0.1
es-errors==1.3.0
es-object-atoms==1.1.2
escape-html==1.0.3
etag==1.8.1
express==4.22.3
finalhandler==1.3.2
forwarded==0.2.0
fresh==0.5.2
function-bind==1.1.2
get-intrinsic==1.3.0
get-proto==1.0.1
gopd==1.2.0
has-symbols==1.1.0
hasown==2.0.4
http-errors==2.0.1
iconv-lite==0.4.24
inherits==2.0.4
ipaddr.js==1.9.1
is-docker==3.0.0
is-inside-container==1.0.0
is-wsl==3.1.1
math-intrinsics==1.1.0
media-typer==0.3.0
merge-descriptors==1.0.3
methods==1.1.2
mime==1.6.0
mime-db==1.52.0
mime-types==2.1.35
ms==2.0.0, 2.1.3
negotiator==0.6.3
object-inspect==1.13.4
on-finished==2.4.2
open==10.2.0
parseurl==1.3.3
path-to-regexp==0.1.13
proxy-addr==2.0.8
qs==6.16.1
range-parser==1.2.1
raw-body==2.5.3
run-applescript==7.1.0
safe-buffer==5.2.1
safer-buffer==2.1.2
send==0.19.2
serve-static==1.16.3
setprototypeof==1.2.0
side-channel==1.1.1
side-channel-list==1.0.1
side-channel-map==1.0.1
side-channel-weakmap==1.0.2
statuses==2.0.2
strict-url-sanitise==0.0.1
toidentifier==1.0.1
type-is==1.6.18
undici==7.30.1
unpipe==1.0.0
utils-merge==1.0.1
vary==1.1.2
wsl-utils==0.1.0

Captured with: npm ls --all --json in the npx env.

Full result per app: Does it work with Claude Code? · Does it work with Cursor? · Does it work with ChatGPT (Codex)?

Protocol: starts, 3 tools listed · 2026-10-22 · connected in 2.6s
🧪 Test-box note: Remote server (streamable HTTP, no key) reached through mcp-remote, same as other remote servers in the harness.

Real test

Passed

One run from our records. When two runs share a date, we show a failure if there is one.

Client
ChatGPT (Codex) · Codex CLI 0.162.0-alpha.17.2
Date
Oct 22, 2026
The task we gave
Using only the microsoft-learn-mcp MCP tools, look up in the official Microsoft Learn documentation which local port the Azure Functions Core Tools host (`func start`) listens on by default, and reply with the port number.
What it promised
details not recorded for this run
What happened

Tool calls:

microsoft-learn-mcp:microsoft_docs_search

Tool result

{"content": [{"type": "text", "text": "{\"results\":[{\"title\":\"Code and test Azure Functions locally (programming-language-powershell)\",\"content\":\"# Code and test Azure Functions locally (programming-language-powershell)\\n## Local project files\\n| Setting | Description| \\n|  --- | ---  |\\n| **\\u0060LocalHttpPort\\u0060** | Sets the default port used when running the local Functions host (\\u0060func host start\\u0060 and \\u0060func run\\u0060). The \\u0060--port\\u0060 command-line option takes precedence over this setting. For example, when running in Visual Studio IDE, you can change the port number by navigating to the \\u0022Project Properties -\\u003E Debug\\u0022 window and explicitly specifying the port number in a \\u0060host start --port \\u003Cyour-port-number\\u003E\\u0060 command that can be supplied in the \\u0022Application Arguments\\u0022 field. |\\n| **\\u0060CORS\\u0060** | Defines the origins allowed for [cross-origin resource sharing (CORS)](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing). Origins are supplied as a comma-separated list with no spaces. The wildcard value (\\\\*) is supported, which allows requests from any origin. |\\n| **\\u0060CORSCredentials\\u0060** | When set to \\u0060true\\u0060, allows \\u0060withCredentials\\u0060 requests. |\\n| **\\u0060ConnectionStrings\\u0060** | A collection. Don\\u0027t use this collection for the connection strings used by your function bindings. This collection is used only by fram

Agent reply

7071 ([Microsoft Learn: Azure Functions local runtime and tools reference](https://learn.microsoft.com/azure/azure-functions/functions-core-tools-reference#%60func-start%60)).
Verdict
Passed

Install

claude mcp add microsoft-learn-mcp -- npx -y mcp-remote https://learn.microsoft.com/api/mcp

Run in your terminal. This exact command is what our harness runs in Claude Code; see the results above.

{
  "mcpServers": {
    "microsoft-learn-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://learn.microsoft.com/api/mcp"
      ]
    }
  }
}

Save as .cursor/mcp.json. This exact config is what our harness runs in Cursor; see the results above.

{
  "mcpServers": {
    "microsoft-learn-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://learn.microsoft.com/api/mcp"
      ]
    }
  }
}

Add to claude_desktop_config.json and restart Claude Desktop. Tested on the Linux beta; see the results above.

[mcp_servers.microsoft-learn-mcp]
command = "npx"
args = ["-y", "mcp-remote", "https://learn.microsoft.com/api/mcp"]

Add to ~/.codex/config.toml (shared by the ChatGPT (Codex) CLI and the ChatGPT desktop app; Codex runs inside the ChatGPT desktop app). Tested with the ChatGPT (Codex) CLI bundled in the ChatGPT desktop app; see the results above.

Not connecting? Troubleshooting: Claude Code · Cursor · Claude Desktop · ChatGPT (Codex)

Test history

DateCheckResultVersions tested
2026-10-22Protocol (direct stdio)Protocol: starts, 3 tools listedmcp-remote 0.15.2 · server reported v1.0.0
2026-10-22Claude CodePassed
install, connect, tools, agent task
Claude Code 2.1.296 · mcp-remote 0.15.2
2026-10-22CursorPassed
install, connect, tools, agent task
Cursor CLI 2026.10.22-27dcf5f · mcp-remote 0.15.2
2026-10-22ChatGPT (Codex)Passed
install, connect, tools, agent task
Codex CLI 0.162.0-alpha.17.2 · mcp-remote 0.15.2

Tools seen by our harness (3)

microsoft_docs_searchmicrosoft_code_sample_searchmicrosoft_docs_fetch
Sponsors