Ms 365 MCP सर्वर
एक मॉडल संदर्भ प्रोटोकॉल (MCP) सर्वर जो Microsoft 365 और Office सेवाओं के साथ Graph API के माध्यम से बातचीत करने के लिए है।
सारांश
MS 365 MCP सर्वर क्या है?
MS 365 MCP सर्वर, जो Softeria द्वारा विकसित किया गया है, एक मॉडल कॉन्टेक्स्ट प्रोटोकॉल (MCP) सर्वर है जिसे Microsoft 365 और Office सेवाओं के साथ Graph API के माध्यम से इंटरैक्शन को सरल बनाने के लिए डिज़ाइन किया गया है। यह सर्वर एक पुल के रूप में कार्य करता है, जिससे डेवलपर्स विभिन्न Microsoft सेवाओं से डेटा को आसानी से एक्सेस और संशोधित कर सकते हैं। यह विशेष रूप से उन अनुप्रयोगों के लिए उपयोगी है जिन्हें Microsoft 365 के साथ एकीकरण की आवश्यकता होती है, जैसे कि उपयोगकर्ता प्रबंधन, फ़ाइल हैंडलिंग, और अधिक।
MS 365 MCP सर्वर की विशेषताएँ
- ग्राफ़ API एकीकरण: सर्वर Microsoft Graph API के साथ इंटरैक्ट करने के लिए एक मजबूत इंटरफ़ेस प्रदान करता है, जिससे डेवलपर्स Microsoft 365 सेवाओं की पूरी क्षमताओं का लाभ उठा सकते हैं।
- उपयोगकर्ता प्रबंधन: Microsoft 365 के भीतर उपयोगकर्ता खातों, अनुमतियों और भूमिकाओं को आसानी से प्रबंधित करें।
- डेटा एक्सेस: OneDrive, SharePoint, और Outlook सहित विभिन्न Microsoft सेवाओं से डेटा को प्राप्त और संशोधित करें।
- सार्वजनिक रिपॉजिटरी: MS 365 MCP सर्वर एक सार्वजनिक रिपॉजिटरी के रूप में उपलब्ध है, जो सामुदायिक योगदान और सहयोग को प्रोत्साहित करता है।
- MIT लाइसेंस: यह प्रोजेक्ट ओपन-सोर्स है और MIT लाइसेंस के तहत लाइसेंस प्राप्त है, जो मुफ्त उपयोग और वितरण को बढ़ावा देता है।
MS 365 MCP सर्वर का उपयोग कैसे करें
-
रिपॉजिटरी क्लोन करें: GitHub से MS 365 MCP सर्वर रिपॉजिटरी को क्लोन करने के लिए निम्नलिखित कमांड का उपयोग करें:
git clone https://github.com/Softeria/ms-365-mcp-server.git -
निर्भरताएँ स्थापित करें: प्रोजेक्ट डायरेक्टरी में जाएँ और अपने पसंदीदा पैकेज प्रबंधक, जैसे npm या yarn का उपयोग करके आवश्यक निर्भरताएँ स्थापित करें।
-
कॉन्फ़िगरेशन: आवश्यक वातावरण चर सेट करके सर्वर को कॉन्फ़िगर करें, जिसमें आपके Microsoft 365 क्रेडेंशियल और किसी भी आवश्यक API कुंजी शामिल हैं।
-
सर्वर चलाएँ: Microsoft 365 सेवाओं के साथ इंटरैक्ट करना शुरू करने के लिए सर्वर को स्थानीय रूप से लॉन्च करें। कमांड का उपयोग करें:
npm start -
API कॉल: उपयोगकर्ता बनाने, फ़ाइलों तक पहुँचने, और अनुमतियों को प्रबंधित करने जैसी क्रियाएँ करने के लिए प्रदान किए गए API एंडपॉइंट्स का उपयोग करें।
अक्सर पूछे जाने वाले प्रश्न
MS 365 MCP सर्वर का उद्देश्य क्या है?
MS 365 MCP सर्वर एक मध्यवर्ती समाधान के रूप में कार्य करता है जो अनुप्रयोगों और Microsoft 365 सेवाओं के बीच Graph API के माध्यम से इंटरैक्शन को सरल बनाता है।
क्या MS 365 MCP सर्वर का उपयोग मुफ्त है?
हाँ, MS 365 MCP सर्वर ओपन-सोर्स है और MIT लाइसेंस के तहत उपलब्ध है, जो मुफ्त उपयोग और संशोधन की अनुमति देता है।
क्या मैं MS 365 MCP सर्वर प्रोजेक्ट में योगदान कर सकता हूँ?
बिल्कुल! योगदान का स्वागत है। आप रिपॉजिटरी को फोर्क कर सकते हैं, परिवर्तन कर सकते हैं, और समीक्षा के लिए एक पुल अनुरोध सबमिट कर सकते हैं।
MS 365 MCP सर्वर में कौन सी तकनीकें उपयोग की गई हैं?
यह सर्वर आधुनिक वेब तकनीकों का उपयोग करके बनाया गया है, मुख्य रूप से JavaScript, और सेवा इंटरैक्शन के लिए Microsoft Graph API का उपयोग करता है।
मैं MS 365 MCP सर्वर के लिए दस्तावेज़ीकरण कहाँ पा सकता हूँ?
दस्तावेज़ीकरण आमतौर पर रिपॉजिटरी के भीतर प्रदान किया जाता है, जिसमें सेटअप निर्देश, API उपयोग, और उदाहरण शामिल होते हैं। विस्तृत जानकारी के लिए README फ़ाइल की जाँच करें।
विवरण
ms-365-mcp-server
Microsoft 365 MCP Server
A Model Context Protocol (MCP) server for interacting with Microsoft 365 and Microsoft Office services through the Graph API.
Prerequisites
- Node.js >= 20 (recommended)
- Node.js 14+ may work with dependency warnings
Features
- Authentication via Microsoft Authentication Library (MSAL)
- Comprehensive Microsoft 365 service integration
- Read-only mode support for safe operations
- Tool filtering for granular access control
Output Format: JSON vs TOON
The server supports two output formats that can be configured globally:
JSON Format (Default)
Standard JSON output with pretty-printing:
{
"value": [
{
"id": "1",
"displayName": "Alice Johnson",
"mail": "alice@example.com",
"jobTitle": "Software Engineer"
}
]
}
(experimental) TOON Format
Token-Oriented Object Notation for efficient LLM token usage:
value[1]{id,displayName,mail,jobTitle}:
"1",Alice Johnson,alice@example.com,Software Engineer
Benefits:
- 30-60% fewer tokens vs JSON
- Best for uniform array data (lists of emails, calendar events, files, etc.)
- Ideal for cost-sensitive applications at scale
Usage: (experimental) Enable TOON format globally:
Via CLI flag:
npx @softeria/ms-365-mcp-server --toon
Via Claude Desktop configuration:
{
"mcpServers": {
"ms365": {
"command": "npx",
"args": ["-y", "@softeria/ms-365-mcp-server", "--toon"]
}
}
}
Via environment variable:
MS365_MCP_OUTPUT_FORMAT=toon npx @softeria/ms-365-mcp-server
Supported Services & Tools
Personal Account Tools (Available by default)
Email (Outlook)
<sub>list-mail-messages, list-mail-folders, list-mail-folder-messages, get-mail-message, send-mail,
delete-mail-message, create-draft-email, move-mail-message</sub>
Calendar
<sub>list-calendars, list-calendar-events, get-calendar-event, get-calendar-view, create-calendar-event,
update-calendar-event, delete-calendar-event</sub>
OneDrive Files
<sub>list-drives, get-drive-root-item, list-folder-files, download-onedrive-file-content, upload-file-content,
upload-new-file, delete-onedrive-file</sub>
Excel Operations
<sub>list-excel-worksheets, get-excel-range, create-excel-chart, format-excel-range, sort-excel-range</sub>
OneNote
<sub>list-onenote-notebooks, list-onenote-notebook-sections, list-onenote-section-pages, get-onenote-page-content,
create-onenote-page</sub>
To Do Tasks
<sub>list-todo-task-lists, list-todo-tasks, get-todo-task, create-todo-task, update-todo-task, delete-todo-task</sub>
Planner
<sub>list-planner-tasks, get-planner-plan, list-plan-tasks, get-planner-task, create-planner-task</sub>
Contacts
<sub>list-outlook-contacts, get-outlook-contact, create-outlook-contact, update-outlook-contact,
delete-outlook-contact</sub>
User Profile
<sub>get-current-user</sub>
Search
<sub>search-query</sub>
Organization Account Tools (Requires --org-mode flag)
Teams & Chats
<sub>list-chats, get-chat, list-chat-messages, get-chat-message, send-chat-message, list-chat-message-replies,
reply-to-chat-message, list-joined-teams, get-team, list-team-channels, get-team-channel, list-channel-messages,
get-channel-message, send-channel-message, list-team-members</sub>
SharePoint Sites
<sub>search-sharepoint-sites, get-sharepoint-site, get-sharepoint-site-by-path, list-sharepoint-site-drives,
get-sharepoint-site-drive-by-id, list-sharepoint-site-items, get-sharepoint-site-item, list-sharepoint-site-lists,
get-sharepoint-site-list, list-sharepoint-site-list-items, get-sharepoint-site-list-item,
get-sharepoint-sites-delta</sub>
Shared Mailboxes
<sub>list-shared-mailbox-messages, list-shared-mailbox-folder-messages, get-shared-mailbox-message,
send-shared-mailbox-mail</sub>
User Management
<sub>list-users</sub>
Organization/Work Mode
To access work/school features (Teams, SharePoint, etc.), enable organization mode using any of these flags:
{
"mcpServers": {
"ms365": {
"command": "npx",
"args": ["-y", "@softeria/ms-365-mcp-server", "--org-mode"]
}
}
}
Organization mode must be enabled from the start to access work account features. Without this flag, only personal account features (email, calendar, OneDrive, etc.) are available.
Shared Mailbox Access
To access shared mailboxes, you need:
- Organization mode: Shared mailbox tools require
--org-modeflag (work/school accounts only) - Delegated permissions:
Mail.Read.SharedorMail.Send.Sharedscopes - Exchange permissions: The signed-in user must have been granted access to the shared mailbox
- Usage: Use the shared mailbox's email address as the
user-idparameter in the shared mailbox tools
Finding shared mailboxes: Use the list-users tool to discover available users and shared mailboxes in your
organization.
Example: list-shared-mailbox-messages with user-id set to shared-mailbox@company.com
Quick Start Example
Test login in Claude Desktop:
Examples
Integration
Claude Desktop
To add this MCP server to Claude Desktop:
Edit the config file under Settings > Developer:
{
"mcpServers": {
"ms365": {
"command": "npx",
"args": ["-y", "@softeria/ms-365-mcp-server"]
}
}
}
Claude Code CLI
claude mcp add ms365 -- npx -y @softeria/ms-365-mcp-server
For other interfaces that support MCPs, please refer to their respective documentation for the correct integration method.
Local Development
For local development or testing:
### From the project directory
claude mcp add ms -- npx tsx src/index.ts --org-mode
Or configure Claude Desktop manually:
{
"mcpServers": {
"ms365": {
"command": "node",
"args": ["/absolute/path/to/ms-365-mcp-server/dist/index.js", "--org-mode"]
}
}
}
Note: Run
npm run buildafter code changes to update thedist/folder.
Authentication
⚠️ You must authenticate before using tools.
The server supports three authentication methods:
1. Device Code Flow (Default)
For interactive authentication via device code:
- MCP client login:
- Call the
logintool (auto-checks existing token) - If needed, get URL+code, visit in browser
- Use
verify-logintool to confirm
- Call the
- CLI login:
Follow the URL and code prompt in the terminal.npx @softeria/ms-365-mcp-server --login
Tokens are cached securely in your OS credential store (fallback to file).
2. OAuth Authorization Code Flow (HTTP mode only)
When running with --http, the server requires OAuth authentication:
npx @softeria/ms-365-mcp-server --http 3000
This mode:
- Advertises OAuth capabilities to MCP clients
- Provides OAuth endpoints at
/auth/*(authorize, token, metadata) - Requires
Authorization: Bearer <token>for all MCP requests - Validates tokens with Microsoft Graph API
- Disables login/logout tools by default (use
--enable-auth-toolsto enable them)
MCP clients will automatically handle the OAuth flow when they see the advertised capabilities.
Setting up Azure AD for OAuth Testing
To use OAuth mode with custom Azure credentials (recommended for production), you'll need to set up an Azure AD app registration:
- Create Azure AD App Registration:
- Go to Azure Portal
- Navigate to Azure Active Directory → App registrations → New registration
- Set name: "MS365 MCP Server"
- Configure Redirect URIs:
- Configure the OAuth callback URI: Go to your app registration and on the left side, go to Authentication.
- Under Platform configurations:
- Click Add a platform (if you don’t already see one for "Mobile and desktop applications" / "Public client").
- Choose Mobile and desktop applications or Public client/native (mobile & desktop) (label depends on portal version).
- Testing with MCP Inspector (
npm run inspector):
- Go to your app registration and on the left side, go to Authentication.
- Under Platform configurations:
- Click Add a platform (if you don’t already see one for "Web").
- Choose Web.
- Configure the following redirect URIs
http://localhost:6274/oauth/callbackhttp://localhost:6274/oauth/callback/debughttp://localhost:3000/callback(optional, for server callback)
- Get Credentials:
- Copy the Application (client) ID from Overview page
- Go to Certificates & secrets → New client secret → Copy the secret value
- Configure Environment Variables:
Create a
.envfile in your project root:MS365_MCP_CLIENT_ID=your-azure-ad-app-client-id-here MS365_MCP_CLIENT_SECRET=your-azure-ad-app-client-secret-here MS365_MCP_TENANT_ID=common
With these configured, the server will use your custom Azure app instead of the built-in one.
3. Bring Your Own Token (BYOT)
If you are running ms-365-mcp-server as part of a larger system that manages Microsoft OAuth tokens externally, you can provide an access token directly to this MCP server:
MS365_MCP_OAUTH_TOKEN=your_oauth_token npx @softeria/ms-365-mcp-server
This method:
- Bypasses the interactive authentication flows
- Use your pre-existing OAuth token for Microsoft Graph API requests
- Does not handle token refresh (token lifecycle management is your responsibility)
Note: HTTP mode requires authentication. For unauthenticated testing, use stdio mode with device code flow.
Authentication Tools: In HTTP mode, login/logout tools are disabled by default since OAuth handles authentication. Use
--enable-auth-toolsif you need them available.
Tool Presets
To reduce initial connection overhead, use preset tool categories instead of loading all 90+ tools:
npx @softeria/ms-365-mcp-server --preset mail
npx @softeria/ms-365-mcp-server --list-presets # See all available presets
Available presets: mail, calendar, files, personal, work, excel, contacts, tasks, onenote, search, users, all
Experimental: --discovery starts with only 2 tools (search-tools, execute-tool) for minimal token usage.
CLI Options
The following options can be used when running ms-365-mcp-server directly from the command line:
--login Login using device code flow
--logout Log out and clear saved credentials
--verify-login Verify login without starting the server
--org-mode Enable organization/work mode from start (includes Teams, SharePoint, etc.)
--work-mode Alias for --org-mode
--force-work-scopes Backwards compatibility alias for --org-mode (deprecated)
Server Options
When running as an MCP server, the following options can be used:
-v Enable verbose logging
--read-only Start server in read-only mode, disabling write operations
--http [port] Use Streamable HTTP transport instead of stdio (optionally specify port, default: 3000)
Starts Express.js server with MCP endpoint at /mcp
--enable-auth-tools Enable login/logout tools when using HTTP mode (disabled by default in HTTP mode)
--enabled-tools <pattern> Filter tools using regex pattern (e.g., "excel|contact" to enable Excel and Contact tools)
--preset <names> Use preset tool categories (comma-separated). See "Tool Presets" section above
--list-presets List all available presets and exit
--toon (experimental) Enable TOON output format for 30-60% token reduction
--discovery (experimental) Start with search-tools + execute-tool only
Environment variables:
READ_ONLY=true|1: Alternative to --read-only flagENABLED_TOOLS: Filter tools using a regex pattern (alternative to --enabled-tools flag)MS365_MCP_ORG_MODE=true|1: Enable organization/work mode (alternative to --org-mode flag)MS365_MCP_FORCE_WORK_SCOPES=true|1: Backwards compatibility for MS365_MCP_ORG_MODEMS365_MCP_OUTPUT_FORMAT=toon: Enable TOON output format (alternative to --toon flag)LOG_LEVEL: Set logging level (default: 'info')SILENT=true|1: Disable console outputMS365_MCP_CLIENT_ID: Custom Azure app client ID (defaults to built-in app)MS365_MCP_TENANT_ID: Custom tenant ID (defaults to 'common' for multi-tenant)MS365_MCP_OAUTH_TOKEN: Pre-existing OAuth token for Microsoft Graph API (BYOT method)
Contributing
We welcome contributions! Before submitting a pull request, please ensure your changes meet our quality standards.
Run the verification script to check all code quality requirements:
npm run verify
For Developers
After cloning the repository, you may need to generate the client code from the Microsoft Graph OpenAPI specification:
npm run generate
Support
If you're having problems or need help:
- Create an issue
- Start a discussion
- Email: eirikb@eirikb.no
- Discord: https://discord.gg/WvGVNScrAZ or @eirikb
License
MIT © 2025 Softeria
सर्वर कॉन्फ़िगरेशन
{
"mcpServers": {
"ms-365-mcp-server": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/metorial/mcp-container--softeria--ms-365-mcp-server--ms-365-mcp-server",
"node dist/index.js"
],
"env": {}
}
}
}