Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
auth_statusA

Report whether stored credentials are valid and loaded.

Returns dict with keys: valid (bool), expired (bool), scopes (list of granted OAuth scope URLs), and — only on failure — error (string describing the auth or config problem).

mail_list_pendingA

List unread forwarded emails in Hermes's inbox, newest first.

Returns a list of dicts, each with keys: id, thread_id, sender, subject, date, snippet.

mail_searchA

Search emails in Hermes's Gmail using Gmail search syntax.

Supports the same operators as the Gmail search bar (e.g., from:alice, subject:invoice, after:2026/04/01).

Returns a list of dicts, each with keys: id, thread_id, sender, subject, date, snippet.

mail_getA

Fetch a single email by ID. Unwraps forwarded messages to extract the original.

Returns dict with keys: id, thread_id, original_sender, original_subject, original_body (plain text), in_reply_to (Message-ID header for threading), attachment_paths (list of local file paths in ~/.cache/hermes-google/).

mail_send_draftA

Send a draft email from Hermes's account to the user's own inbox.

The destination is restricted to the configured user email; any other to value is rejected by the server. To reply to a thread, pass the in_reply_to value from mail_get.

Returns dict with key: id (sent message ID).

mail_mark_readA

Mark a message as read in Hermes's inbox (removes the UNREAD label).

Returns dict with key: id (the message ID that was marked).

mail_archiveA

Archive a message in Hermes's inbox (removes the INBOX label).

Never call without user confirmation. Returns dict with key: id (the message ID that was archived).

cal_list_calendarsA

List all calendars visible to Hermes (own calendar + any shared with Hermes).

Returns a list of dicts, each with keys: id (calendar ID), summary (display name), access_role (e.g., 'owner', 'writer', 'reader').

cal_list_eventsA

List events in a calendar within a time range, sorted chronologically.

calendar accepts 'user' (your personal calendar), 'hermes' (Hermes's primary calendar), or a full Google Calendar ID.

start and end must be RFC 3339 datetimes with timezone offset (e.g., '2026-04-24T00:00:00+08:00'). Bare dates are rejected by the API.

Returns a list of dicts, each with keys: id, title, start, end, attendees (list of email strings).

cal_create_eventA

Create a calendar event. Requires user confirmation before calling.

calendar accepts 'user', 'hermes', or a full Google Calendar ID. start and end must be RFC 3339 datetimes with timezone offset.

Returns dict with key: id (created event ID).

cal_update_eventA

Patch specific fields of a calendar event. Requires user confirmation before calling.

calendar accepts 'user', 'hermes', or a full Google Calendar ID. fields is a dict of Google Calendar event fields to update (e.g., {"summary": "New title", "location": "Room 3"}).

Returns dict with key: id (updated event ID).

cal_delete_eventA

Delete a calendar event. Requires user confirmation before calling.

calendar accepts 'user', 'hermes', or a full Google Calendar ID.

Returns dict with key: id (deleted event ID).

drive_searchA

Search Drive files visible to Hermes by filename.

Optionally filter by MIME type (e.g., 'application/pdf', 'application/vnd.google-apps.spreadsheet').

Returns a list of dicts, each with keys: id, name, mime_type.

drive_listA

List children of a Drive folder by folder ID.

Returns a list of dicts, each with keys: id, name, mime_type.

drive_getA

Download a Drive file to the local cache directory.

The file is saved to ~/.cache/hermes-google/drive/<file_id>/. Use Claude Code's Read tool on the returned path to view the contents.

Returns dict with key: path (absolute local file path).

drive_uploadA

Upload a local file to Drive. Requires user confirmation before calling.

If folder_id is omitted, uploads to the configured default parent folder.

Returns dict with key: id (created Drive file ID).

drive_updateA

Replace a Drive file's contents with a local file. Requires user confirmation before calling.

Returns dict with key: id (updated Drive file ID).

drive_moveA

Move a Drive file into a different parent folder. Requires user confirmation before calling.

Returns dict with key: id (moved Drive file ID).

drive_deleteA

Delete a Drive file. Requires user to have used an explicit 'delete' verb.

Returns dict with key: id (deleted Drive file ID).

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/jimmy-larsson/hermes-google'

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