Repository navigation
Graph MCP v0.8.1
Ergonomics learned from using 0.7.0 on a real 325-message inbox, plus one outright bug fix. Tool count stays 125; every default request and response is unchanged when the new arguments are omitted.
Fixed. graph_list_mail always sent $orderby receivedDateTime desc, which Graph refuses to combine with a filter on from/, sender/, toRecipients/ or ccRecipients/ — so filtering mail by sender was a guaranteed 400. The sort is now dropped automatically for those filters, in graph_list_events too.
Added, uniformly across every domain.
compacton list and search tools, returning only identifying fields.next_linkandinclude_next_linkon every list tool. This is the only way to page Teams chat and channel messages, which Graph pages with$skiptokenrather than$skip, so anything past the newest 50 messages in a busy chat was previously unreachable.skipwherever Graph supports$skip.folderongraph_search_mail, to scope a search to one folder.body_typeongraph_read_mail,graph_get_eventandgraph_list_events, for plain text instead of large HTML bodies.immutable_idson the mail read, list and search tools, because Graph message IDs change when a message moves.filter_queryongraph_list_events, andcompactongraph_search_all.
Shared behaviour lives in one new module, src/tools/list-options.ts, so paging and projections cannot drift between domains.
Install now uses the GitHub plugin marketplace:
claude plugin marketplace add JustStas/Graph-MCP --scope user
claude plugin install graph-mcp@graph-mcp --scope userVersion 0.8.0 was tagged but never published: the version bump corrupted a transitive dependency range in the lockfile and npm ci failed with ETARGET. 0.8.1 restores it, bumps through targeted JSON edits, and adds validate:lockfile to npm run verify so this fails locally in future. See pull requests #19 and #20.