A host for standalone, stateless MCP servers that extend NextKS Voice with real-world capabilities. Each server is an isolated, credential-free proxy to one external service — enable only the ones you need.
/api/mcp/<server> and is registered separately in NextKS.A stateless Microsoft Graph proxy that lets NextKS Voice read and act on a Microsoft 365 user's mail and calendar, and look up the people they want to reach. It forwards the signed-in user's delegated Graph token verbatim, returns compact results, and is agnostic to which customer or user is calling.
Responses are compact projections, never raw Graph payloads. The two write tools are never retried and are designed to sit behind the connector's “require approval” gate.
Add this server in NextKS as an OAuth (BYOK) MCP connector, using its endpoint:
Under the hood, the NextKS OAuth (BYOK) connector runs the Microsoft sign-in, obtains a
delegated Microsoft Graph token, and attaches it to every request as
Authorization: Bearer …. You never set a token by hand — this server simply
consumes whatever the connector supplies.
The OAuth app your connector uses must consent to these delegated
Microsoft Graph permissions. A missing scope surfaces as a permission error (HTTP 403)
the first time the matching tool is used. The exception is find_contact: with
only one of its two permissions it still answers from the other source and reports what
it skipped.
| Permission | Type | Grants |
|---|---|---|
Mail.Read | Delegated | List, search, and read messages |
Mail.Send | Delegated | Send mail as the user |
Calendars.Read | Delegated | List and read calendar events |
Calendars.ReadWrite | Delegated | Create calendar events |
People.Read | Delegated | Find contacts — people the user works with and emails |
Contacts.Read | Delegated | Find contacts — the user's saved Outlook contacts |
User.Read | Delegated | Baseline sign-in and identity |
offline_access | Delegated | Refresh token (keeps access alive; used connector-side) |
On the Microsoft Entra app registration your connector uses for Microsoft 365:
Upgrading from v0.1: add People.Read and
Contacts.Read as in steps 1–3, grant admin consent (step 4), and only then
have the connector request them (step 5). Keep this order: a connector that asks for
permissions the tenant hasn't consented to can't refresh its token, which disconnects
every tool, not only contact lookup. If your organization uses one app registration per
customer tenant, do this for each one.
All permissions are delegated (the server always acts as the signed-in user), never application permissions. Creating the app registration, obtaining and refreshing tokens, and tenant configuration are connector-side setup — the same for any bring-your-own third-party MCP.
These principles hold for every server hosted here.