Skip to main content
Glama
seandkendall

productivity-mcp

by seandkendall

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": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_email_accountsA

List configured email accounts.

Each entry includes:

  • name: the account LABEL used as the account argument in other tools

  • kind: provider class (ImapEmailProvider / GmailProvider)

  • addresses: every email address this mailbox receives mail at — the primary login address PLUS any configured aliases. Use these when answering 'who emailed me at X?' questions; the name is NOT the user's email address.

list_foldersC

List folders/labels for an email account.

list_emailsA

List messages in a folder.

Args: account: Account label (use list_email_accounts to see options). If omitted, the first configured account is used. folder: Folder (IMAP) or label (Gmail). Default INBOX. limit: Max number of messages to return. Default 25. query: Free-text search. For Gmail, pass native Gmail operators (e.g. from:@example.com). For IMAP this becomes a TEXT search. unread_only: If true, only return unread messages. recipients: Filter to messages delivered to (or Cc'd / Bcc'd to) any of these addresses OR domains. Each entry may be a full address (sean@nasource.com) or a bare domain (nasource.com). Use this to answer questions like "who emails me at my alias domains?" — pass e.g. ["nasource.com", "seankendall.com"]. OR-combined. since_days: Only return messages newer than this many days. STRONGLY recommended when using recipients on a large mailbox — a full- mailbox recipient search can take minutes on accounts with tens of thousands of messages. For "last 30 days" questions pass 30.

read_emailA

Fetch a single message with its body.

Args: message_id: Provider message id from list_emails. account: Account label (see list_email_accounts). folder: Folder / label. Default INBOX. format: 'text' (default) renders HTML bodies to plaintext — the LLM-friendly default. 'html' keeps raw HTML. 'both' returns a body_html field alongside plaintext body.

send_emailC

Send an email. Returns the provider message id.

set_email_readC

Mark an email as read (read=True) or unread (read=False).

delete_emailA

Delete an email. IMAP expunges; Gmail moves to Trash (recoverable).

move_emailC

Move an email to another folder/label.

reply_emailC

Reply to an email. Set reply_all=True to include the original Cc list.

forward_emailC

Forward an email to new recipients, optionally prepending a note.

search_emails_by_senderC

List emails from specific senders or sender domains.

Each senders entry may be a full address (alice@example.com) or a bare domain (example.com). OR-combined.

count_unreadB

Count unread messages in a folder (optionally within the last N days).

list_recent_sendersA

Top senders over the last N days, ordered by message count. Useful for "who has been emailing me lately?" style questions.

list_calendar_accountsA

List configured calendar accounts.

list_calendarsC

List calendars on an account.

list_eventsA

List events in a time range (defaults: now → +7 days). ISO 8601 strings.

create_eventC

Create a calendar event. Times are ISO 8601.

delete_eventC

Delete a calendar event by id.

get_eventB

Fetch a single calendar event with full detail.

update_eventB

Update an existing event. Pass only the fields you want to change. Times (start/end) are ISO 8601.

search_threadsA

List conversations (not individual messages) matching the filters.

Returns one entry per thread, with the latest message's metadata plus a message_count field. Gmail uses native threadId; IMAP uses the Message-Id / References chain to group. Use this when the user asks "who has been discussing X?" and you want to avoid seeing 15 near-duplicates of one reply chain.

free_busyA

Return busy time windows between start and end (ISO 8601).

If attendees is provided, queries busy times for those addresses; otherwise returns your own busy times. Native Google freebusy.query is used for Google Calendar; EWS / CalDAV fall back to enumerating events.

resolve_contactA

Look up a contact by name or partial email. Returns up to limit {name, email} matches. Gmail queries the People API; other providers fall back to scanning recent messages. Use before send_email / create_event when the user refers to someone by name ("email Alice").

list_attachmentsC

List attachments on a message. Each entry has {attachment_id, filename, mime_type, size}.

download_attachmentA

Download an attachment. If save_to (directory) is provided, writes the file there and returns its path. Otherwise returns base64-encoded bytes.

summarize_inboxA

One-call inbox overview. Returns counts, top senders, top recipient addresses (useful when multiple aliases hit the same mailbox), and a per-day histogram for the last since_days days.

count_emailsA

Count messages matching filters without fetching full envelopes. General-purpose counter — e.g. 'how many emails from Amazon this month?'

save_draftA

Save an email as a draft instead of sending. Useful when the LLM should let the human review before committing to send. Returns {draft_id}.

list_draftsC

List pending email drafts.

send_draftC

Send an existing draft by id.

list_tasksB

List tasks from the account's task list. Supported on Google Calendar (Google Tasks) and EWS / WorkMail (Tasks folder).

create_taskC

Create a new task. due is ISO 8601 and optional.

search_eventsA

Substring search across calendar events (summary, location, description). Default window: now → +60 days.

respond_eventB

Respond to a meeting invitation. response: accept | decline | tentative.

suggest_meeting_timesA

Find time slots where everyone listed in attendees is free.

Combines each attendee's busy windows (via free_busy) with simple working- hours filtering. If attendees omitted, uses your own busy times.

pingA

Probe every configured account (or just the named one). Returns per- account {name, kind, ok, latency_ms, error?} so the LLM can self-check.

bulk_set_readA

Mark many emails read/unread in one call. Returns counts of successes and failures. Rate-limited.

bulk_delete_emailsA

Delete many emails in one call. IMAP expunges; Gmail moves to Trash. Rate-limited.

bulk_move_emailsC

Move many emails to another folder/label in one call. Rate-limited.

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/seandkendall/productivity-mcp'

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