Microsoft Office ve Microsoft 365 ekosisteminin tamamına (Outlook, mail, dosyalar, Excel, takvim) Graph API üzerinden bağlanan MCP sunucusu.
Claude Desktop config.json'a ekle
{
"mcpServers": {
"softeria-ms-365-mcp-server": {
"command": "node",
"args": [
"~/.mcp/ms-365-mcp-server/index.js"
]
}
}
} Kaynak kodu al ve yerel olarak çalıştır
git clone https://github.com/Softeria/ms-365-mcp-server.git ~/.mcp/ms-365-mcp-server
cd ~/.mcp/ms-365-mcp-server Microsoft 365 MCP Server
Model Context Protocol (MCP) sunucusu, Graph API aracılığıyla Microsoft 365 ve Microsoft Office hizmetleriyle etkileşim kurmak için.
Bu sunucu birden fazla Microsoft bulut ortamını destekler:
| Bulut | Açıklama | Auth Uç Noktası | Graph API Uç Noktası |
|---|---|---|---|
| Global (varsayılan) | Uluslararası Microsoft 365 | login.microsoftonline.com | graph.microsoft.com |
| Çin (21Vianet) | 21Vianet tarafından işletilen Microsoft 365 | login.chinacloudapi.cn | microsoftgraph.chinacloudapi.cn |
Sunucu, genel olarak yapılandırılabilen iki çıktı formatını destekler:
Pretty-printing ile standart JSON çıktısı:
{
"value": [
{
"id": "1",
"displayName": "Alice Johnson",
"mail": "alice@example.com",
"jobTitle": "Software Engineer"
}
]
}
Token-Oriented Object Notation verimli LLM token kullanımı için:
value[1]{id,displayName,mail,jobTitle}:
"1",Alice Johnson,alice@example.com,Software Engineer
Faydaları:
Kullanım: (deneysel) TOON formatını genel olarak etkinleştir:
CLI bayrağı aracılığıyla:
npx @softeria/ms-365-mcp-server --toon
Claude Desktop yapılandırması aracılığıyla:
{
"mcpServers": {
"ms365": {
"command": "npx",
"args": ["-y", "@softeria/ms-365-mcp-server", "--toon"]
}
}
}
Ortam değişkeni aracılığıyla:
MS365_MCP_OUTPUT_FORMAT=toon npx @softeria/ms-365-mcp-server
Sunucu, Microsoft Graph API yüzeyinin çoğunu kapsayan 200+ araç sağlar. Her araç, bir Graph API uç noktasına 1'e 1 eşlenir ve src/endpoints.json içinde bildirimsel olarak tanımlanır.
E-posta (Outlook), Takvim, OneDrive Dosyaları, Excel, OneNote, To Do Görevleri, Planner, Kişiler, Kullanıcı Profili, Arama
Teams ve Sohbetler, Çevrimiçi Toplantılar, Transkriptler ve Kayıtlar, Katılım Raporları, SharePoint Siteleri ve Listeleri, Paylaşılan Posta Kutuları ve Takvimler, Kullanıcı Yönetimi, Durum, Sanal Etkinlikler
İzinler, hangi araçların etkin olduğuna bağlı olarak dinamik olarak istenir. Yapılandırmanızın tam izinlerini görmek için --list-permissions kullanın:
# Kişisel mod (varsayılan)
npx @softeria/ms-365-mcp-server --list-permissions
# Kuruluş modu (Teams, SharePoint vb. içerir)
npx @softeria/ms-365-mcp-server --org-mode --list-permissions
# Önceden ayarlanmış tarafından filtrelenmiş
npx @softeria/ms-365-mcp-server --preset mail --list-permissions
Bu, Graph API izinlerinin yeni bir sürüm dağıtılmadan önce önceden onaylanması ve yönetici onayı alması gereken kurumsal ortamlar için yararlıdır.
--list-permissions JSON'u içerir:
toolPermissions: --allowed-scopes filtrelemesinden önce araç yüzeyinin ima ettiği izinlereffectivePermissions: --allowed-scopes uygulandıktan sonra etkin kalan araçların ima ettiği izinlerpermissions: effectivePermissions için eski ad, mevcut betiklerle uyumluluğu için tutulmuşallowedScopes: sağlandığında yapılandırılmış kapsam izin listesidisabledTools: gerekli Graph kapsamları allowedScopes tarafından kapsanmadığı için gizlenen araçlarmissingAllowedScopesForTools: devre dışı bırakılmış araçlar arasında benzersiz eksik kapsamlarextraAllowedScopesNotUsedByTools: mevcut araç yüzeyinde kullanılmayan izin verilen kapsamlarVarsayılan olarak, MSAL etkin araçlar tarafından ima edilen kapsamları ister ve araç yüzeyi --enabled-tools, --preset, --org-mode ve --read-only tarafından kontrol edilir.
Kurumsal ve başsız dağıtımlar --allowed-scopes veya MS365_MCP_ALLOWED_SCOPES ile bir kapsam sınırı ekleyebilir. Yapılandırıldığında, sunucu önce normal araç yüzeyini hesaplar, ardından gerekli kapsamları izin listesi tarafından kapsanmayan Graph araçlarını gizler. OAuth meta verileri ve giriş akışları yalnızca etkin kalan araçlar için etkili izinleri ister.
npx @softeria/ms-365-mcp-server \
--org-mode \
--enabled-tools '^(list-mail-messages|get-mail-message|list-drives|get-drive-item|download-bytes)$' \
--allowed-scopes 'User.Read Mail.Read Files.Read'
CLI değeri MS365_MCP_ALLOWED_SCOPES üzerinde öncelik alır; ikisi de ayarlanmamışsa, varsayılan araç türetilmiş kapsam davranışı değişmez. Boş bir değer sağlamak dağıtımları yanlışlıkla daha geniş bir araç yüzeyine geri dönmemesi için başlangıçta başarısız olur.
Kapsam kapsamı hiyerarşi duyarlıdır: örneğin, Mail.ReadWrite Mail.Read gerektiren araçları kapsar ve Files.ReadWrite.All Files.Read gerektiren araçları kapsar.
HTTP modunda, OAuth keşfi, istemcilerin aynı onay yüzeyini istemesi için etkili filtrelenmiş izinleri yayınlar. On-Behalf-Of modu (--obo) hala korumalı kaynak meta verileri için api://<clientId>/access_as_user yayınlar; --allowed-scopes OBO'yu geçersiz kılmaz.
İş/okul özelliklerine erişmek için (Teams, SharePoint, vb.), bu bayraklardan herhangi birini kullanarak kuruluş modunu etkinleştirin:
{
"mcpServers": {
"ms365": {
"command": "npx",
"args": ["-y", "@softeria/ms-365-mcp-server", "--org-mode"]
}
}
}
Kuruluş modu, iş hesabı özelliklerine erişmek için baştan etkinleştirilmelidir. Bu bayrak olmadan yalnızca kişisel hesap özellikleri (e-posta, takvim, OneDrive, vb.) kullanılabilir.
Paylaşılan posta kutularına erişmek için şunlara ihtiyacınız vardır:
--org-mode bayrağını gerektirir (yalnızca iş/okul hesapları)Mail.Read.Shared veya Mail.Send.Shared kapsamlarıuser-id parametresi olarak paylaşılan posta kutusunun e-posta adresini kullanınPaylaşılan posta kutularını bulma: Kuruluşunuzdaki mevcut kullanıcıları ve paylaşılan posta kutularını keşfetmek için list-users aracını kullanın.
Örnek: list-shared-mailbox-messages ile user-id shared-mailbox@company.com olarak ayarlandı
Claude Desktop'ta girişi test edin:
Bu MCP sunucusunu Claude Desktop'a eklemek için, Ayarlar > Geliştirici altındaki config dosyasını düzenleyin.
{
"mcpServers": {
"ms365": {
"command": "npx",
"args": ["-y", "@softeria/ms-365-mcp-server"]
}
}
}
{
"mcpServers": {
"ms365": {
"command": "npx",
"args": ["-y", "@softeria/ms-365-mcp-server", "--org-mode"]
}
}
}
{
"mcpServers": {
"ms365-china": {
"command": "npx",
"args": ["-y", "@softeria/ms-365-mcp-server", "--org-mode", "--cloud", "china"]
}
}
}
claude mcp add ms365 -- npx -y @softeria/ms-365-mcp-server
# macOS/Linux
claude mcp add ms365 -- npx -y @softeria/ms-365-mcp-server --org-mode
# Windows (cmd /c sarmalayıcısını kullan)
claude mcp add ms365 -s user -- cmd /c "npx -y @softeria/ms-365-mcp-server --org-mode"
# macOS/Linux
claude mcp add ms365-china -- npx -y @softeria/ms-365-mcp-server --org-mode --cloud china
# Windows (cmd /c sarmalayıcısını kullan)
claude mcp add ms365-china -s user -- cmd /c "npx -y @softeria/ms-365-mcp-server --org-mode --cloud china"
MCP'yi destekleyen diğer arayüzler için, lütfen doğru entegrasyon yöntemi hakkında ilgili belgelerine başvurun.
Open WebUI, OAuth 2.1 ile HTTP taşıması aracılığıyla MCP sunucularını destekler.
Sunucuyu HTTP modu ile başlatın:
npx @softeria/ms-365-mcp-server --http
Open WebUI'de Admin Ayarları → Araçlar (/admin/settings/tools) → Bağlantı Ekle'ye gidin:
/mcp yolu ile MCP sunucusu URL'nizİstemciyi Kaydet'e tıklayın.
Not: Dinamik istemci kaydı HTTP modunda varsayılan olarak etkindir. Devre dışı bırakmak için
--no-dynamic-registrationkullanın. Özel bir Azure Entra uygulaması kullanıyorsanız, yeniden yönlendirme URI'nizi "Tek sayfalı uygulama" değil, "Mobil ve masaüstü uygulamaları" platformu altına ekleyin.
Varsayılan Azure uygulaması kullanarak hızlı test kurulumu (ID ms-365 ve localhost:8080 önceden yapılandırılmış):
docker run -d -p 8080:8080 \
-e WEBUI_AUTH=false \
-e OPENAI_API_KEY \
ghcr.io/open-webui/open-webui:main
npx @softeria/ms-365-mcp-server --http
Daha sonra bağlantıyı URL http://localhost:3000/mcp ve ID ms-365 ile ekleyin.
Docker'da ters proxy'nin arkasında mı çalışıyor? Kullanıcının tarayıcısından kapsayıcı ağı dışından ulaşılabilir olması için OAuth yetkilendirme URL'sinin
--public-url https://your-domain.comile ayarlanması. Tam kılavuz için docs/deployment.md bölümüne bakın.
Yerel geliştirme veya test için:
# Proje dizininden
claude mcp add ms -- npx tsx src/index.ts --org-mode
Veya Claude Desktop'u manuel olarak yapılandırın:
{
"mcpServers": {
"ms365": {
"command": "node",
"args": ["/absolute/path/to/ms-365-mcp-server/dist/index.js", "--org-mode"]
}
}
}
Not: Kod değişikliklerinden sonra
npm run buildçalıştırarakdist/klasörünü güncelleyin.
⚠️ Araçları kullanmadan önce kimlik doğrulaması yapmalısınız.
Sunucu üç kimlik doğrulama yöntemini destekler:
Cihaz kodu aracılığıyla etkileşimli kimlik doğrulama için:
login aracını çağırın (mevcut belirteci otomatik kontrol eder)verify-login aracını kullanınnpx @softeria/ms-365-mcp-server --login
Terminal'deki URL ve kod komutunu izleyin.Belirteçler işletim sistemi kimlik bilgileri deposunda güvenli bir şekilde önbelleğe alınır (dosya tabanlı depolamaya geri düşüş).
--http ile çalıştırırken, sunucu OAuth kimlik doğrulaması gerektirir:
npx @softeria/ms-365-mcp-server --http 3000
Bu mod:
/auth/* uç noktalarında OAuth uç noktaları sağlar (yetkilendirme, belirteç, meta veriler)Authorization: Bearer <token> gerektirir--enable-auth-tools kullanın)MCP istemcileri, yayınlanan yetenekleri gördüklerinde OAuth akışını otomatik olarak işler.
OAuth modunu özel Azure kimlik bilgileriyle kullanmak için (üretim için önerilir), bir Azure AD uygulaması kaydı ayarlamanız gerekir:
npm run inspector):http://localhost:6274/oauth/callbackhttp://localhost:6274/oauth/callback/debughttp://localhost:3000/callback (isteğe bağlı, sunucu geri çağrısı için).env dosyası oluşturun:MS365_MCP_CLIENT_ID=your-azure-ad-app-client-id-here
MS365_MCP_CLIENT_SECRET=your-secret-here # Genel uygulamalar için isteğe bağlı
MS365_MCP_TENANT_ID=common
Bunlar yapılandırıldığında, sunucu yerleşik olanı yerine özel Azure uygulamanızı kullanacaktır.
ms-365-mcp-server'ı harici olarak Microsoft OAuth belirteçlerini yönetiyle daha geniş bir sistemin parçası olarak çalıştırıyorsanız, bir erişim belirtecini doğrudan bu MCP sunucusuna sağlayabilirsiniz:
MS365_MCP_OAUTH_TOKEN=your_oauth_token npx @softeria/ms-365-mcp-server
Bu yöntem:
Not: HTTP modu kimlik doğrulama gerektirir. Kimlik doğrulamasız test için, cihaz kodu akışı ile stdio modunu kullanın.
Kimlik Doğrulama Araçları: HTTP modunda, OAuth kimlik doğrulamasını işlediği için giriş/çıkış araçları varsayılan olarak devre dışıdır. Onlara ihtiyacınız varsa
--enable-auth-toolskullanın.
Tek bir sunucu örneğini birden fazla Microsoft hesabına hizmet vermek için kullanın. Birden fazla hesap oturum açarken, bir account parametresi otomatik olarak her araç çağrısına eklenir, bu da her araç çağrısında hangi hesabı kullanacağınızı belirtmenize olanak tanır.
Birden fazla hesaba oturum açın (hesap başına bir kez):
# İlk hesaba oturum aç (cihaz kodu akışı)
npx @softeria/ms-365-mcp-server --login
# Cihaz kodu komutunu izleyin, personal@outlook.com olarak oturum açın
# İkinci hesaba oturum aç
npx @softeria/ms-365-mcp-server --login
# Cihaz kodu komutunu izleyin, work@company.com olarak oturum açın
Yapılandırılan hesapları listeleyin:
npx @softeria/ms-365-mcp-server --list-accounts
Araç çağrılarında kullan: Herhangi bir araç isteğine "account": "work@company.com" geçirin:
{ "tool": "list-mail-messages", "arguments": { "account": "work@company.com" } }
Davranış:
account parametresi gerekmez).account parametresi yoksa, sunucu seçili varsayılanı kullanır veya mevcut hesapları listeleyen yardımcı bir hata döndürür.account parametresi e-posta adresini (ör. user@outlook.com) veya MSAL homeAccountId öğesini kabul eder.Başsız stdio dağıtımları yerel MSAL önbelleğini tek bir beklenen Microsoft hesabına sabitleyebilir:
# Kullanıcı adı eşleştirmesi büyük/küçük harfe duyarsızdır
MS365_MCP_EXPECTED_USERNAME=work@company.com npx @softeria/ms-365-mcp-server --login
# Veya --list-accounts tarafından gösterilen tam MSAL homeAccountId'sini sabitle
npx @softeria/ms-365-mcp-server --expected-home-account-id <homeAccountId> --login
homeAccountId değerlerini keşfetmek için --list-accounts kullanın. MCP list-accounts aracı kasıtlı olarak hesap kimliklerini gizler, bu nedenle tam ID sabitleme için CLI'yı kullanın.
Sabitleme isteğe bağlıdır ve yalnızca yerel-MSAL'dir:
--expected-username, --expected-home-account-id) MS365_MCP_EXPECTED_USERNAME ve MS365_MCP_EXPECTED_HOME_ACCOUNT_ID üzerinde öncelik alır.homeAccountId pinleri tam eşleşmedir.--login çalıştırarak, ardından başsız sunucuyu başlatarak önyükleme yapın.account parametresi yayınlamaz ve MCP talimatları hesap değiştirmeyi önermez.--http, --obo ve MS365_MCP_OAUTH_TOKEN Graph çağrıları için istek tarafından sağlanan belirteçleri kullanır, bu nedenle hesap pinleri bu modlarda yalnızca uyarı amaçlıdır. HTTP auth araçları etkinse, pin hala yerel MSAL yardımcı akışlarına uygulanır.--logout sabitlenmiş hesap dahil olmak üzere tüm önbelleğe alınmış hesapları temizler. Cerrahi temizlik için --remove-account <id> tercih edin.MCP multiplexerleri (Legate, Governor) için: Çoklu hesap modu N-işlem modelinin yerini alır. Hesap başına bir sunucu oluşturmak yerine, tek bir örnek
accountparametresi aracılığıyla tüm hesapları işler, araç çoğaltmasını N×110 yerine 110'a düşürür.
İlk bağlantı yükünü azaltmak için, 90+ araçların tümünü yüklemek yerine ön ayarlanmış araç kategorilerini kullanın:
npx @softeria/ms-365-mcp-server --preset mail
npx @softeria/ms-365-mcp-server --list-presets # Tüm mevcut ön ayarları görmek
Mevcut ön ayarlar: mail, calendar, files, personal, work, `excel
Inbox Zero için bir MCP sunucusu. Gmail üzerinde yanıtlamanız gereken veya takip etmeniz gereken e-postaları bulma gibi işlevler ekler.
WhatsApp mesajlarınızda arama yapmanızı, kişilerinizi görüntülemenizi ve bireysel ya da grup sohbetlerine mesaj göndermenizi sağlayan bir MCP sunucusu.
Slack Çalışma Alanları için en güçlü MCP sunucusu.
Telegram API entegrasyonu ile kullanıcı verilerine erişim, diyalogları (sohbetler, kanallar, gruplar) yönetme, mesajları alma ve gönderme, okundu durumunu takip etme olanakları sunur.
LINE Resmi Hesabı Entegrasyonu için MCP Server
Tarayıcı tabanlı toplantı platformlarıyla (Zoom, Teams, Google Meet) etkileşim kurmak için MCP server. AI ajanlarının çevrimiçi toplantılara bot göndermesine, canlı transkriptleri toplamasına, metni seslendirmesine ve toplantı sohbetinde mesaj göndermesine olanak tanır.