From 7a98c66f4e6cc3dc23554692af1687463c4e20f1 Mon Sep 17 00:00:00 2001
From: mateo-berri <277851410+mateo-berri@users.noreply.github.com>
Date: Thu, 24 Sep 2026 17:59:05 -0700
Subject: [PATCH] feat(mcp): add Microsoft 365 (Graph) server to the MCP
catalog
---
.../_experimental/out/assets/logos/microsoft_365.svg | 1 +
litellm/proxy/mcp_registry.json | 11 +++++++++++
.../_experimental/mcp_server/test_mcp_discovery.py | 2 +-
.../public/assets/logos/microsoft_365.svg | 1 +
4 files changed, 14 insertions(+), 1 deletion(-)
create mode 100644 litellm/proxy/_experimental/out/assets/logos/microsoft_365.svg
create mode 100644 ui/litellm-dashboard/public/assets/logos/microsoft_365.svg
diff --git a/litellm/proxy/_experimental/out/assets/logos/microsoft_365.svg b/litellm/proxy/_experimental/out/assets/logos/microsoft_365.svg
new file mode 100644
index 00000000000..e053ac831fb
--- /dev/null
+++ b/litellm/proxy/_experimental/out/assets/logos/microsoft_365.svg
@@ -0,0 +1 @@
+
diff --git a/litellm/proxy/mcp_registry.json b/litellm/proxy/mcp_registry.json
index b117f35600d..3a25ced4cff 100644
--- a/litellm/proxy/mcp_registry.json
+++ b/litellm/proxy/mcp_registry.json
@@ -217,6 +217,17 @@
{"name": "GOOGLE_CLIENT_SECRET", "description": "Google OAuth Client Secret", "secret": true}
]
},
+ {
+ "name": "microsoft_365",
+ "title": "Microsoft 365 (Graph)",
+ "description": "Outlook mail and calendar, OneDrive and SharePoint files, and Teams through Microsoft Graph, with each user's own Entra ID sign-in",
+ "icon_url": "/ui/assets/logos/microsoft_365.svg",
+ "category": "Productivity",
+ "registry_url": "https://registry.modelcontextprotocol.io/servers/io.github.Softeria%2Fms-365-mcp-server",
+ "transport": "http",
+ "url": "http://localhost:3000/mcp",
+ "env_vars": []
+ },
{
"name": "obsidian",
"title": "Obsidian",
diff --git a/tests/test_litellm/proxy/_experimental/mcp_server/test_mcp_discovery.py b/tests/test_litellm/proxy/_experimental/mcp_server/test_mcp_discovery.py
index 43cf35c152d..3f8d6a2be3f 100644
--- a/tests/test_litellm/proxy/_experimental/mcp_server/test_mcp_discovery.py
+++ b/tests/test_litellm/proxy/_experimental/mcp_server/test_mcp_discovery.py
@@ -95,7 +95,7 @@ class TestMCPRegistryFile:
with open(registry_path, "r") as f:
data = json.load(f)
names = {s["name"] for s in data["servers"]}
- expected = {"github", "slack", "postgresql", "snowflake", "atlassian"}
+ expected = {"github", "slack", "postgresql", "snowflake", "atlassian", "microsoft_365"}
missing = expected - names
assert not missing, f"Missing well-known servers: {missing}"
diff --git a/ui/litellm-dashboard/public/assets/logos/microsoft_365.svg b/ui/litellm-dashboard/public/assets/logos/microsoft_365.svg
new file mode 100644
index 00000000000..e053ac831fb
--- /dev/null
+++ b/ui/litellm-dashboard/public/assets/logos/microsoft_365.svg
@@ -0,0 +1 @@
+