Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
OUTLOOK_READONLYNoSet to 'true' to enable read-only mode, which disables all write tools.
OUTLOOK_CLIENT_IDYesThe application (client) ID from the Azure app registration, required for authentication with Microsoft Graph.
OUTLOOK_TOKEN_CACHENoPath to the token cache file. In Docker, set this to a path in a mounted volume to persist login across restarts.

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
check_configA

このサーバの設定・認証・接続状態を診断する。

他のツールがエラーを返したとき、または利用者が「つながってる?」と 尋ねたときに呼ぶ。

list_foldersA

メールボックスのフォルダ一覧を、件数・未読数つきで返す。

メールをどこかへ移動する前や、利用者がフォルダ名をあいまいに言ったときに呼ぶ。

Args: only_nonempty: True なら空のフォルダを省く。

search_messagesA

メールを新しい順に検索する。各行の先頭 #N が整理系ツールに渡す短縮ID。

Args: query: 件名・本文へのフリーテキスト検索。省略すると条件だけで絞り込む。 folder: 検索対象フォルダ名(例「受信トレイ」)。省略すると全体。 from_address: 差出人アドレスの部分一致(例 "amazon.co.jp")。 unread_only: True なら未読だけ。 since: この日以降 YYYY-MM-DD。 until: この日まで(その日を含む) YYYY-MM-DD。 limit: 返す最大件数。既定20、上限50。 include_preview: True なら本文冒頭も添える(件数が多いと長くなる)。

get_messageA

1通のメールの本文と宛先を読む。

Args: message_id: search_messages が返した短縮ID(例 "#3")、または生のID。

move_messagesA

メールを指定フォルダへ移動する。

移動先が存在しないとエラーになる。必要なら先に create_folder を呼ぶこと。 まとめて動かす前に、対象と件数を利用者に確認すること。 移動すると渡した短縮IDは失効する。続けて操作するなら search_messages を引き直すこと。

Args: message_ids: 短縮IDをカンマ区切りで(例 "#1,#2,#5")。一度に25件まで。 folder: 移動先フォルダ名(例「領収書」「受信トレイ/請求」)。

mark_messages_readA

メールを既読(または未読)にする。

Args: message_ids: 短縮IDをカンマ区切りで(例 "#1,#2")。一度に25件まで。 read: True で既読、False で未読に戻す。

archive_messagesA

メールをアーカイブ(Archiveフォルダへ移動)する。

移動すると渡した短縮IDは失効する。続けて操作するなら search_messages を引き直すこと。

Args: message_ids: 短縮IDをカンマ区切りで。一度に25件まで。

move_to_trashA

メールをゴミ箱(削除済みアイテム)へ移動する。完全削除ではなく、元に戻せる。

このサーバに完全削除の手段は無い。実行前に必ず利用者の確認を取ること。 移動すると渡した短縮IDは失効する。続けて操作するなら search_messages を引き直すこと。

Args: message_ids: 短縮IDをカンマ区切りで。一度に25件まで。

create_draftA

メールの下書きを作る。送信はしない。

このサーバに送信手段は無い。下書きは Outlook の「下書き」フォルダに 置かれるだけで、利用者が自分で開いて送信するまでどこへも出ない。 「送っておいて」と頼まれても、できるのはここまでだと伝えること。

Args: to: 宛先アドレス。カンマ区切りで複数可。 subject: 件名。 body: 本文(平文)。 cc: Cc のアドレス。カンマ区切りで複数可。

draft_replyA

受け取ったメールへの返信の下書きを作る。送信はしない。

元のメールの引用と宛先は Graph 側で組み立てられる。本文はその先頭に入る。

Args: message_id: 返信先の短縮ID(例 "#3")、または生のID。 body: 返信の本文(平文)。 reply_all: True なら全員に返信の下書きにする。

create_folderA

空のフォルダを1つ作る。メールは移動しない。

メールの移動先が必要なときに先に呼ぶ。move_messages / move_by_search は 存在しないフォルダへは移動できないため、その前段として使う。 既にあるフォルダを動かしたい・名前を変えたいだけなら、こちらではなく move_folder / rename_folder を使うこと。

挙動(いずれも実機で確認済み):

  • 同じ親の下に同名のフォルダがあると Graph が 409 を返して失敗する。 重複したフォルダが二重にできることはない。作成前の存在確認は不要で、 失敗した場合は「既にある」と判断してよい。

  • parent は既に存在している必要がある。中間のフォルダは自動で作られない。 深い階層を作るなら、上から順に1階層ずつ呼ぶこと。

  • 作れるのは空のフォルダだけで、中身は増えない。既存のメールには影響しない。

必要な権限は Mail.ReadWrite で、このサーバが既に持っている。 OUTLOOK_READONLY=true のときは実行できない。

Args: name: 作成するフォルダ名。階層の指定はできないので "/" を含めないこと (親を指定するには parent を使う)。同じ親の下で一意である必要がある。 parent: 親フォルダ名かフルパス(例「01_Crypto」「01_Crypto/取引所」)。 省略すると最上位に作る。既存のフォルダを指す必要がある。

rename_folderA

フォルダの名前を変える。中身のメールは動かない。

システムフォルダ(受信トレイ・迷惑メールなど)は変更できない。

Args: folder: 対象のフォルダ名かフルパス(例「Money/エイク」)。 new_name: 新しい名前。階層は変わらないので "/" は含めないこと。

move_folderA

フォルダを別の親の下へ移す。中身のメールとサブフォルダも一緒に動く。

大量のメールを1件ずつ動かす代わりに、棚ごと移す用。 システムフォルダは移動できない。

Args: folder: 動かすフォルダ名かフルパス(例「Music」)。 parent: 移動先の親フォルダ名。省略すると最上位へ移す。

delete_folderA

フォルダを削除する。

中身が残っているフォルダは既定で拒否する(force=True で強行)。 メールを1通ずつゴミ箱へ移すのと違い、これは元に戻せる保証がない。 残しておきたいなら削除ではなく move_folder で退避すること。 実行前に必ず利用者の確認を取ること。

Args: folder: 削除するフォルダ名かフルパス。 force: 中身が残っていても削除する。

move_by_searchA

条件に一致するメールをまとめて移動する。move_messages の大量版。

既定は dry_run=True で、何件動くかを数えるだけで実際には動かさない。 件数を利用者に見せて同意を得てから dry_run=False で呼び直すこと。 暴走を防ぐため、絞り込み条件を1つも指定しない呼び出しは拒否する。

Args: dest: 移動先フォルダ名(例「99_Archive」「ゴミ箱」)。 folder: 対象を絞る元フォルダ。省略するとメールボックス全体を走査する。 from_address: 差出人の部分一致(アドレスと表示名の両方を見る)。 subject_contains: 件名の部分一致。 since: この日以降 YYYY-MM-DD。 until: この日まで(その日を含む) YYYY-MM-DD。 unread_only: True なら未読だけ。 max_messages: 1回で動かす上限。既定500、上限2000。 dry_run: True(既定)なら件数を数えるだけ。False で実際に動かす。

mark_read_by_searchA

条件に一致するメールをまとめて既読(または未読)にする。

mark_messages_read の大量版。メールは移動しないので、居場所も 短縮IDも変わらない。既定は dry_run=True で件数を数えるだけ。

注意: 既読/未読は「まだ見ていない」という情報そのものなので、 まとめて既読にすると何が未処理だったかは復元できない。 実行前に必ず対象と件数を利用者に示して確認を取ること。

Args: folder: 対象フォルダ。省略するとメールボックス全体。 from_address: 差出人の部分一致(アドレスと表示名の両方を見る)。 subject_contains: 件名の部分一致。 since: この日以降 YYYY-MM-DD。 until: この日まで(その日を含む) YYYY-MM-DD。 read: True(既定)で既読、False で未読に戻す。 max_messages: 1回で処理する上限。既定5000、上限25000。 dry_run: True(既定)なら件数を数えるだけ。False で実際に変更する。

list_rulesA

受信トレイに設定されている自動振分ルールを一覧する。

ルールを作る前に必ず呼んで、既存と衝突しないか・番号(sequence)が 何番まで使われているかを確認すること。

create_ruleA

受信トレイに自動振分ルールを作る。以後に届くメールへ適用される。

Outlook 側に保存されるので、このMCPが起動していなくても24時間効く。 既に届いているメールには遡って適用されない(それは move_by_search の仕事)。 条件は複数指定すると AND になる。カンマ区切りで複数の値を渡せる。

Args: name: ルール名。あとで自分が読んで分かる名前にすること。 move_to: 移動先フォルダ名。 from_contains: 差出人に含まれる文字列。カンマ区切りで複数可。 subject_contains: 件名に含まれる文字列。カンマ区切りで複数可。 body_contains: 本文に含まれる文字列。カンマ区切りで複数可。 mark_read: True なら既読にする。 to_trash: True ならゴミ箱へ入れる(完全削除ではない)。 stop_processing: True(既定)なら、このルールが一致したら後続を評価しない。 sequence: 適用順。省略すると既存の最後に足す。 enabled: False で無効な状態で作る。

delete_ruleA

自動振分ルールを削除する。メールは動かない。

Args: rule: ルール名(list_rules で表示される名前)、または生のルール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/ma2no4413/outlook-mcp'

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