Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
GRAPH_MCP_PORTNoHTTP port for Streamable HTTP server.8094
AZURE_AD_CLIENT_IDNoClient ID (alias for GRAPH_MCP_CLIENT_ID).
AZURE_AD_TENANT_IDNoTenant ID (alias for GRAPH_MCP_TENANT_ID).
GRAPH_MCP_AUDIENCENoAudience to validate in OBO mode. Derived from client id if not set.
GRAPH_MCP_DOES_OBONoServer performs its own on-behalf-of exchange.false
GRAPH_MCP_CLIENT_IDNoClient ID.
GRAPH_MCP_READ_ONLYNoRemove the write tier entirely.false
GRAPH_MCP_TENANT_IDNoTenant ID.
GRAPH_MCP_JWT_VERIFYNoVerify JWT signatures (JWKS).true
GRAPH_MCP_OBO_SCOPESNoGraph scopes requested during OBO exchange.https://graph.microsoft.com/.default
GRAPH_MCP_USER_EMAILNoCaller identity, used for tenant-scoping in some tools.
GRAPH_MCP_WRITE_SCOPENoSet to true to expose the 8 write tools. Default off.false
AZURE_AD_CLIENT_SECRETNoClient secret (alias for GRAPH_MCP_CLIENT_SECRET).
GRAPH_MCP_ACCESS_TOKENNoThe delegated Graph token every tool call uses.
GRAPH_MCP_CLIENT_SECRETNoClient secret.
GRAPH_MCP_SHARED_SECRETNoShared secret for machine callers.
GRAPH_MCP_BROWSE_MAX_FILESNoMax files per browse operation.500
GRAPH_MCP_DISABLE_SSL_VERIFYNoDisable TLS verification (e.g. for corporate proxy).false
GRAPH_MCP_SEND_EMAIL_ALLOWED_DOMAINSNoRecipient-domain allowlist for send/propose email.

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
calendar_list_upcoming_eventsA

List the signed-in user's upcoming calendar events for the next N days, soonest first. Returns id, subject, start and end times, organiser and whether it is online. This is the tool for 'what's on my calendar'. Use calendar_list_events_in_range for a specific window, and calendar_get_event for full detail including the join URL. Requires Calendars.Read.

calendar_get_eventA

Get one calendar event in full by its id: subject, times, organiser, location, agenda preview, the Teams join URL and the complete attendee list with each person's response status. Takes an event id from calendar_list_upcoming_events or calendar_list_events_in_range. Use calendar_get_event_attendees when only the attendee list is needed. Requires Calendars.Read.

calendar_get_event_attendeesA

List who was invited to a calendar event and how each person replied — accepted, declined, tentative or no response. Returns email, display name and response status per attendee. Use this when the question is about who is coming; calendar_get_event returns the same list alongside the event's other detail. Requires Calendars.Read.

calendar_list_events_in_rangeA

List calendar events between two dates, in chronological order. Use for any window that is not simply 'the next few days' — last week's meetings, a specific month, or a range the user names. Dates are ISO 8601 (2026-01-15) and the whole of both end days is included. Returns id, subject, times and organiser. Requires Calendars.Read.

mail_list_attachmentsA

List the file attachments on one email — name, content type and size in bytes. Returns metadata only and never file contents, so it is safe to call on messages with very large attachments. Inline images such as signature logos are excluded. Requires Mail.Read.

mail_searchA

Search the signed-in user's mailbox by keyword, subject or sender name. Returns id, subject, sender, date and a preview snippet, newest first. Searchable folders are inbox, sentitems, drafts, or all. Use mail_list_recent when the ask is time-based rather than keyword-based, and mail_get_thread to read a whole conversation. Requires Mail.Read.

mail_list_recentA

List the signed-in user's most recent emails from the last N days, newest first. Returns id, subject, sender, date and a preview snippet. Use for 'what came in today' or catching up after time away; mail_search is the tool when specific keywords or a sender are known. Requires Mail.Read.

mail_list_flaggedA

List emails the signed-in user has flagged for follow-up, newest first. Returns id, subject, sender, date and preview. Flags are the user's own marker for 'come back to this', so use it for 'what do I still need to deal with' rather than mail_list_recent, which returns everything regardless of state. Requires Mail.Read.

mail_get_threadA

Read every message in one email conversation, oldest first, given a conversation id from any of the mail listing tools. Returns full message bodies rather than previews, so it is the tool for understanding what was actually discussed before replying or summarising. Requires Mail.Read.

meetings_get_transcriptA

Get the spoken transcript of a Teams meeting as time-stamped speaker turns. Accepts a Teams join URL, a calendar event id, or an online meeting id and resolves whichever it is. Works whether the user organised the meeting or merely attended it. Use meetings_get_transcript_by_event when a calendar event id is all that is available. Requires OnlineMeetingTranscript.Read.All.

meetings_list_pastA

List the signed-in user's meetings from the last N days, most recent first, optionally restricted to online ones. Returns id, subject, times, organiser and join URL. The starting point for 'what did I attend' and for finding a meeting to summarise — meetings_list_with_transcripts is better when only recorded meetings matter. Requires Calendars.Read.

meetings_get_from_join_urlA

Resolve a Teams join URL to its online meeting record, returning the online meeting id, subject and start time. A plumbing step: the online meeting id is what the transcript and attendance tools need, and a calendar event only carries the join URL. Fails for meetings the user attended but did not organise, because the underlying Graph filter is organiser-only. Requires OnlineMeetings.Read.

meetings_list_transcriptsA

List the transcripts available for one online meeting, given an online meeting id from meetings_get_from_join_url. Returns transcript ids and creation times without fetching any content, so it is cheap to call. A meeting can hold more than one transcript when recording was stopped and restarted. Requires OnlineMeetingTranscript.Read.All.

meetings_list_with_transcriptsA

List recent meetings and flag which ones actually have a transcript, checking each concurrently. Returns subject, time, organiser, the online meeting id and a has_transcript boolean. Use this to find something worth summarising without fetching transcripts one at a time to discover most meetings were never recorded. Requires Calendars.Read and OnlineMeetingTranscript.Read.All.

meetings_get_transcript_by_eventA

Get a meeting transcript starting from a calendar event id, resolving the event to its join URL and then the online meeting. Use when an event id from the calendar tools is all that is available. Optionally takes a known join URL or meeting id to skip lookup steps. Falls back to a time-based match for meetings the user attended rather than organised. Requires OnlineMeetingTranscript.Read.All.

meetings_get_attendance_reportA

Get who actually attended a Teams meeting, with join and leave times and total duration per person, given an online meeting id. This reflects real attendance, which is not the same as the invite list — calendar_get_event_attendees returns who was invited and how they replied. Only available to the meeting organiser. Requires OnlineMeetingArtifact.Read.All.

files_searchA

Search the signed-in user's OneDrive and the SharePoint sites they can reach, by filename or content keyword. Returns id, name, drive id, size, last-modified date and web URL. OneDrive and SharePoint document libraries are the same underlying resource, so one search covers both. Requires Files.Read.All.

files_list_trendingA

List documents currently trending around the signed-in user — files their colleagues are actively working on, ranked by Microsoft 365 activity signals rather than by the user's own history. Use for 'what is the team working on'. files_list_recent is the tool for what this user personally touched. Requires Files.Read.All.

files_list_recentA

List files the signed-in user has recently opened or edited, most recent first. Returns id, name, drive id and web URL. Use for 'the document I was working on yesterday' — files_search is better when the name or a keyword is known, and files_list_trending covers what colleagues are working on. Requires Files.Read.

files_get_contentA

Read the text content of a file in OneDrive or SharePoint, given a drive id and item id from files_search or files_list_recent. Works for text, Office documents and PDFs; binary files return a placeholder instead of bytes. Output is truncated to a caller-specified character limit. Requires Files.Read.All.

files_list_shared_with_meA

List files other people have shared directly with the signed-in user, with the owner and web URL for each. Covers items shared via OneDrive or SharePoint that do not live in the user's own drive, which is why files_list_recent and files_search may not surface them. Requires Files.Read.All.

people_searchA

Find colleagues the signed-in user actually works with, ranked by relevance from their own mail and meeting history — so it finds the right 'Priya' without exact spelling. Returns name, email, title and department. Use directory_search_users to search the whole tenant instead, or people_list_contacts for the saved address book. Requires People.Read.

people_getA

Look up one person in the organisation by their exact email address and return their profile: display name, job title, department, office location and phone numbers. Use when the address is already known — people_search is the tool for finding someone by partial or approximate name. Fails if the address does not belong to a tenant account. Requires User.Read.All.

people_get_my_profileA

Get the signed-in user's own profile — their name, email address, job title, department and office. Call this first when a request says 'me', 'my' or 'I' and the user's own identity or email address is needed to answer it, for example before filtering a calendar or addressing a message. Takes no arguments. Requires User.Read.

directory_search_usersA

Search every user account in the Entra ID tenant directory by display name, email or UPN. Returns id, name, email, job title, department and office. Use this to find anyone in the organisation; people_search only covers colleagues the signed-in user already interacts with, and ranks by relevance rather than matching the whole directory. Guest accounts cannot run this query. Requires User.Read.All.

directory_get_userA

Get one tenant user's full directory profile by email or UPN, including their manager. Returns job title, department, office, phone numbers and account details. Use when the address is known and the org-chart context matters; people_get returns a similar profile without the manager lookup. Requires User.Read.All.

directory_get_user_managerA

Get the person a given user reports to, identified by email or UPN. Returns the manager's name, email, job title and department. Use for escalation paths and 'who does X report to' questions. Returns an empty result when the user has no manager set in the directory, which is common for executives and service accounts. Requires User.Read.All.

directory_list_user_groupsA

List the Entra ID groups a user is a direct member of, by email or UPN. Returns group id, name, type and description — useful for working out someone's access or which teams they belong to. Only direct membership is returned; groups inherited through nested groups do not appear. Requires GroupMember.Read.All.

directory_search_groupsA

Find Entra ID groups by name or keyword. Returns group id, display name, type (security or Microsoft 365), description and member count. Use the returned group id with directory_list_group_members or directory_get_group. Every Microsoft Teams team is backed by a group, so this also finds teams. Requires Group.Read.All.

directory_list_group_membersA

List the people in an Entra ID group, given a group id from directory_search_groups. Returns each member's name, email, job title and department, plus the total count. Use to answer 'who is on the claims team'. Only direct members are listed — people who belong via a nested group are not included. Requires GroupMember.Read.All.

directory_get_groupA

Get one Entra ID group's details by id: display name, description, type, email address, visibility and creation date. Use when a group id is already known and its properties matter rather than its membership — directory_list_group_members returns who is in it. Requires Group.Read.All.

chat_search_messagesA

Search Microsoft Teams messages the signed-in user can see, across every team and chat, by keyword. Returns message text, author, timestamp and a link to the message in Teams. Use for 'what did someone say about X'. chat_list_channel_messages is the tool for reading one channel in order instead of searching. Requires Chat.Read.

chat_list_channel_messagesA

Read the most recent messages in one Teams channel, newest first, given a team id and channel id from chat_list_teams and chat_list_channels. Returns text, author, timestamp and importance. Use to catch up on a channel; chat_search_messages is the tool for finding a message by keyword across everything. Requires ChannelMessage.Read.All.

chat_list_teamsA

List the Microsoft Teams the signed-in user is a member of, with id, name and description. Start here for anything scoped to a team — the returned team id is what chat_list_channels takes, and a channel id from that is what reading messages needs. Requires Team.ReadBasic.All.

chat_list_channelsA

List the channels in one Microsoft Teams team, with id, name and description. Takes a team id from chat_list_teams. The returned channel id is what chat_list_channel_messages needs to read a conversation. Requires Channel.ReadBasic.All.

files_get_group_driveA

Get the document library backing a Microsoft 365 group or Teams team, given a group id from directory_search_groups. Returns the drive id and web URL, which is what the other file tools need to read or write inside a team's shared files. Requires Files.Read.All and Group.Read.All.

notes_list_notebooksA

List the signed-in user's OneNote notebooks, with id, name, last-modified date and web URL. Call this first when saving or finding a note — a notebook id is what notes_list_sections takes, and a section id from there is what notes_create_page needs. Covers notebooks the user owns and ones shared with them. Requires Notes.Read.

notes_list_sectionsA

List the sections inside one OneNote notebook, with id, name and last-modified date. Takes a notebook id from notes_list_notebooks. Sections are the tabs within a notebook and are what pages actually live in, so a section id from here is required before notes_create_page can write anything. Requires Notes.Read.

tasks_list_planner_plansA

List the Microsoft Planner plans the signed-in user can see, with id and title. Planner is the shared, board-style task tool attached to Microsoft 365 groups and Teams — use it for team work. Microsoft To Do is the user's private task list; tasks_list_todo_lists covers that. Plan ids from here feed tasks_list_planner_tasks. Premium plans are not available through Graph. Requires Tasks.Read.

tasks_list_planner_bucketsA

List the buckets (columns) in a Planner plan, with id and name. Buckets are how a plan's board is divided — typically stages such as To Do, In Progress and Done. Takes a plan id from tasks_list_planner_plans. Use when a task needs placing in the right column, or to report on how work is distributed across a board. Requires Tasks.Read.

tasks_list_todo_listsA

List the signed-in user's Microsoft To Do lists, with id and display name. To Do is the user's own private task manager, separate from Planner's shared team boards. Call this first when a task needs adding to a specific named list — the returned list id is what tasks_create_todo and tasks_list_todo take. Requires Tasks.Read.

tasks_list_todoA

List the signed-in user's Microsoft To Do tasks, optionally narrowed to one list and to a status of notStarted, inProgress, completed or all. Returns id, title, status, due date and notes. Defaults to unfinished tasks across every list, which is what 'what do I need to do' usually means. Requires Tasks.Read.

tasks_list_planner_tasksA

List the tasks on a Planner plan's board, given a plan id from tasks_list_planner_plans. Returns id, title, bucket, percent complete, due date and who each task is assigned to. Use for shared team work; tasks_list_todo covers the user's own private list. Task ids returned here are what the Planner update tools take. Requires Tasks.Read.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/nitin27may/ms-graph-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server