Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MCP_HOSTNoHTTP bind host127.0.0.1
MCP_PORTNoHTTP bind port3000
MCP_API_KEYNoBearer token required for HTTP transport
MCP_TRANSPORTNostdio or streamable-httpstdio
MSGRAPH_CLOUDNoSovereign cloud: global, us_gov_l4, us_gov_l5, china, germanyglobal
MSGRAPH_SCOPESNoComma-separated extra scopes(built-in defaults)
MSGRAPH_BASE_URLNoOverride Graph base URL(from cloud)
MSGRAPH_TOOLSETSNoReserved for future per-workload gatingcore
MSGRAPH_AUTH_MODENoAuthentication mode. One of: interactive, device_code, client_secret, certificate, obo, managed_identity, managed_identity_user, pre_token.interactive
MSGRAPH_CERT_PATHNoPath to PEM cert (certificate mode)
MSGRAPH_CLIENT_IDNoEntra app (client) ID
MSGRAPH_LOG_LEVELNoPython log levelWARNING
MSGRAPH_MAX_PAGESNoMax pages auto-paginated per collection50
MSGRAPH_READ_ONLYNotrue disables every write toolfalse
MSGRAPH_TENANT_IDNoEntra tenant IDcommon
MSGRAPH_API_VERSIONNov1.0 or betav1.0
MSGRAPH_ACCESS_TOKENNoPre-acquired token (pre_token)
MSGRAPH_CERT_PASSWORDNoOptional cert password
MSGRAPH_CLIENT_SECRETNoApp secret (client_secret / obo)
MSGRAPH_TOKEN_CACHE_PATHNoToken cache location~/.msgraph-mcp/token_cache.json

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_sign_in_logsD–
get_sign_in_logD–
list_directory_audit_logsD–
list_provisioning_logsD–
batch_requestA

Execute up to 20 Graph requests in one round trip. requests_json: JSON array of {id, method, url, body?, headers?}. Relative URLs like '/me/messages' are relative to the selected API version.

list_upcoming_eventsC

List upcoming events from the user's default calendar.

list_events_in_rangeB

List events in a date range. Dates in ISO 8601 format.

get_eventD–
list_event_instancesB

List instances of a recurring event in a date range.

list_event_attachmentsD–
list_calendarsD–
list_calendars_in_groupD–
list_roomsD–
find_meeting_timesC

Find meeting slots. attendees: semicolon-separated email addresses.

get_scheduleC

Get free/busy schedule. availability_views: semicolon-separated email addresses.

create_eventB

Create a calendar event. Dates in ISO 8601. attendees: semicolon-separated emails.

update_eventD–
cancel_eventD–
respond_to_eventC

Respond to event. response: 'tentativelyAccept', 'accept', 'decline'.

create_subscriptionC

Create a webhook subscription for a resource. resource: e.g. 'me/messages', 'me/events', 'me/drive/root'.

list_subscriptionsD–
reauthorize_subscriptionB

Reauthorize an expiring subscription.

delete_subscriptionD–
delta_queryC

Execute a delta query on a resource. resource: 'me/messages', 'me/events', 'me/contacts', 'me/drive/root'.

list_chatsD–
get_chatD–
list_chat_messagesD–
list_chat_membersD–
send_chat_messageC

Send a message to a chat. content_type: 'text' or 'html'.

create_chatA

Create a chat. chat_type: 'group' or 'oneOnOne'. members: semicolon-separated UPNs.

search_messagesC

Search Teams messages using Microsoft Search KQL.

list_contactsD–
get_contactD–
list_contact_foldersD–
list_folder_contactsD–
create_contactD–
update_contactD–
delete_contactD–
list_managed_devicesD–
get_managed_deviceD–
list_directory_devicesA

List directory (Entra) devices, not Intune-managed devices.

list_device_configurationsD–
list_compliance_policiesD–
list_mobile_appsD–
get_mobile_appD–
get_organizationD–
list_directory_rolesD–
list_directory_role_membersD–
list_administrative_unitsD–
get_administrative_unitD–
list_administrative_unit_membersD–
list_org_contactsD–
get_org_contactD–
get_objects_by_idsC

Resolve multiple object IDs in one call. ids: comma-separated GUIDs.

list_worksheetsB

List worksheets in an Excel workbook stored in OneDrive/SharePoint.

get_used_rangeC

Get the used (data) range of a worksheet.

read_rangeB

Read cell values from a range. address: e.g. 'A1:C10' or 'A1'.

list_tablesD–
list_table_rowsD–
write_rangeC

Write values to a range. values_json: JSON 2D array, e.g. '[["A",1],["B",2]]'.

append_table_rowB

Append a row to a table. values_json: JSON 1D array of cell values.

update_table_rowC

Update a table row. index: 0-based row index.

create_tableC

Create a table from a range. address: e.g. 'A1:D10'.

create_sessionA

Create a persistent Excel session for batch operations. Returns session ID.

list_recent_filesD–
list_shared_with_meD–
list_root_filesD–
get_fileD–
get_file_contentB

Get file content (returns base64-encoded).

list_folder_childrenD–
list_file_versionsD–
list_permissionsD–
search_filesD–
create_folderD–
upload_fileC

Upload a file. content_base64: base64-encoded file content.

create_upload_sessionB

Create an upload session for large files (>4MB). Returns upload URL.

update_fileD–
delete_fileD–
copy_fileD–
move_fileD–
create_sharing_linkB

Create a sharing link. link_type: 'view', 'edit', 'embed'. scope: 'anonymous', 'organization', 'users'.

revoke_sharing_linkD–
list_group_drive_filesD–
list_groupsD–
get_groupD–
list_group_membersD–
list_group_ownersD–
list_transitive_membersD–
create_groupD–
add_memberD–
remove_memberD–
delete_groupD–
list_access_reviewsD–
get_access_reviewD–
list_access_packagesD–
list_directory_role_assignmentsC

List Entra ID directory role assignments (PIM-adjacent).

list_directory_role_definitionsD–
list_messagesD–
get_messageD–
list_attachmentsD–
download_attachmentA

Get attachment content (returns base64-encoded bytes).

list_mail_foldersD–
list_folder_messagesD–
list_inbox_rulesD–
send_mailC

Send email. to_recipients/cc_recipients: semicolon-separated email addresses.

create_draftA

Create a mail draft for user review (does not send).

send_draftD–
reply_to_messageD–
reply_all_to_messageD–
forward_messageD–
update_messageD–
move_messageD–
delete_messageD–
get_mailbox_settingsD–
update_mailbox_settingsC

Update mailbox settings. automatic_replies_status: 'enabled', 'disabled', or 'scheduled'.

delta_messagesC

Get message changes. For first call, omit delta_token. start_date_time: ISO 8601.

list_notebooksD–
list_sectionsD–
list_notebook_sectionsD–
list_section_pagesD–
list_section_groupsD–
get_page_contentA

Get OneNote page content as HTML.

get_pageD–
create_pageC

Create a OneNote page. html_content: HTML body content.

update_page_contentD–
delete_pageD–
copy_section_to_notebookC

Copy a section to a notebook.

create_online_meetingC

Create a Teams online meeting. participants: semicolon-separated emails (optional).

list_online_meetingsD–
get_online_meetingD–
list_transcriptsD–
get_transcript_contentD–
list_attendance_reportsD–
list_meeting_recordingsD–
list_all_transcriptsC

List all transcripts for a meeting.

people_searchB

Search people using the relevance graph (colleagues ranked by interaction).

list_trendingD–
list_usedD–
list_shared_insightsD–
get_my_rich_profileD–
list_my_planner_plansD–
list_group_plansD–
list_bucketsD–
list_planner_tasksD–
list_my_tasksD–
get_task_detailsD–
create_planner_taskC

Create a planner task. assignments: comma-separated user IDs to assign.

update_planner_taskA

Update a planner task. Requires If-Match header (use etag from the task).

create_planner_planD–
create_planner_bucketD–
delete_planner_taskD–
get_my_presenceD–
get_user_presenceD–
get_presences_by_user_idA

Get presence for multiple users. user_ids: comma-separated GUIDs.

set_user_presenceC

Set presence. availability/activity: e.g. 'Available'/'Available', 'Busy'/'InACall'.

get_active_user_reportC

Get M365 active user detail report. period: 'D7', 'D30', 'D90', 'D180'.

get_teams_user_activityD–
get_mailbox_usageD–
get_onedrive_usageD–
get_sharepoint_usageD–
search_queryB

Unified Microsoft Search (KQL). entity_types: comma-separated (message, driveItem, site, listItem, person, event).

search_externalC

Search a specific Microsoft Graph connector (externalItem).

list_security_alertsC

List Microsoft 365 Defender alerts (v2).

get_security_alertD–
list_security_incidentsD–
get_security_incidentD–
list_secure_scoresD–
list_secure_score_controlsD–
search_sitesA

Search SharePoint sites by name/description.

get_root_siteD–
get_site_by_pathA

Get a site by its full path. hostname: e.g. 'contoso.sharepoint.com'. path: e.g. 'sites/marketing' or '' for root.

get_siteD–
list_sub_sitesD–
list_site_drivesA

List document libraries (drives) on a site.

list_listsD–
get_listD–
list_list_itemsC

List items in a SharePoint list. Use expand_fields=true to get column values.

list_list_items_with_fieldsA

List SharePoint list items with all column values expanded.

get_list_itemD–
create_list_itemB

Create a list item. fields_json: JSON object of {columnName: value}.

update_list_itemB

Update list item fields. fields_json: JSON object of {columnName: value}.

delete_list_itemD–
list_columnsB

List column schema of a SharePoint list.

list_content_typesD–
list_site_pagesD–
list_my_teamsD–
list_all_teamsD–
get_teamD–
list_channelsD–
get_channelD–
list_channel_messagesD–
get_channel_messageD–
list_message_repliesD–
send_channel_messageB

Send message to a Teams channel. content_type: 'text' or 'html'.

list_team_membersD–
create_channelC

Create a channel. membership_type: 'standard' or 'private'.

list_installed_appsD–
list_team_tabsD–
list_todo_listsD–
list_todo_tasksD–
get_todo_taskD–
create_todo_listD–
create_todo_taskB

Create a To Do task. due_date: YYYY-MM-DD. importance: 'low', 'normal', 'high'.

update_todo_taskC

Update a To Do task. status: 'notStarted', 'inProgress', 'completed', 'deferred'.

delete_todo_taskD–
add_checklist_itemD–
list_checklist_itemsD–
get_my_profileD–
get_userD–
list_usersD–
get_user_photoC

Get user profile photo (returns metadata, not bytes).

get_direct_reportsD–
get_user_managerD–
get_transitive_member_ofD–
get_user_licensesD–
check_member_groupsC

Check if user belongs to groups. group_ids: comma-separated GUIDs.

update_userD–
get_my_managerD–
get_my_groupsD–

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

D1.7/5.0

Scored across 219 tools

Disambiguation2/5

While most tools are named for a distinct resource/action, there are multiple near-duplicate or ambiguous tools: list_list_items vs list_list_items_with_fields, list_transcripts vs list_all_transcripts, list_sections vs list_notebook_sections, and delta_messages vs delta_query. With 219 tools, an agent is likely to select the wrong listing or search tool.

Naming Consistency4/5

The overwhelming majority use a consistent lowercase verb_noun pattern such as list_, get_, create_, update_, and delete_. A few tools like batch_request, delta_query, search_query, and people_search break the verb-first convention, so the pattern is not perfectly uniform.

Tool Count1/5

219 tools is an extreme surface area for any agent to evaluate and falls far beyond the well-scoped 3-15 tool range. Even though Microsoft Graph is vast, exposing all these operations as flat MCP tools makes selection and maintenance unwieldy.

Completeness2/5

The server gives solid lifecycle coverage to popular resources like mail, calendar events, files, and SharePoint list items, but many areas are read-only or partial: Teams has no create_team, planner plans/buckets cannot be updated or deleted, security alerts cannot be acted on, and directory/device tools mostly list or get only. batch_request provides a generic escape hatch, but it still requires the agent to know raw Graph API details, so significant gaps remain.

Maintenance

ActivityMaintained
ResponsivenessNo issues