mcpField
M
MsgLens

MsgLens

ローカル
msglens.appコミュニケーション01 週間前に更新

MsgLens について

MsgLensは、`.msg`、`.eml`、`winmail.dat`を扱うローカルメールパーサー兼コマンドラインツールです。コマンドライン利用者やAIアシスタント向けに、ファイルをアップロードせず内容と添付ファイルを抽出し、MCPサーバー経由でローカルファイルの読み取りや変換を可能にします。

主な機能

  1. 01`.msg`、`.eml`、`winmail.dat`の解析
  2. 02ヘッダー・本文・添付ファイルの抽出
  3. 03圧縮RTFとTNEFのデコード
  4. 04メールを`.eml`または`.txt`に変換
  5. 05MCP経由でメールファイルを読み取り

活用シーン

  1. 01コマンドラインでOutlookメールを確認
  2. 02メールファイルから添付を保存
  3. 03複数の`.msg`ファイルを変換
  4. 04AIアシスタントにローカルメールを読ませる

MCP 対応

標準入出力でMCPサーバーを起動し、メールの読み取り、添付ファイルの保存、`.msg`や`winmail.dat`の変換ツールを提供します。ファイルはローカルに留まり、サーバーはネットワークリクエストを行いません。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"andyliu0427-msglens": {
"command": "npx",
"args": [
"-y",
"msglens-cli"
]
}
}
}
起動コマンドnpx -y msglens-cli

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmmsglens-cli0.2.1

ツール

3

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
pathstringはい.msg、.eml、または winmail.dat ファイルの絶対パス。
include_headersbooleanいいえインターネットヘッダーの生データも返します。

詳細

msglens-cli

Outlook の .msg、.eml、winmail.dat ファイルを、コマンドライン、Node、または MCP 経由で AI アシスタントから読み取れます。ヘッダー、メッセージ本文、添付ファイルを扱えます。Outlook は不要で、ファイルがアップロードされることもありません。

これらは、msglens.app のブラウザー版で実行されているものと同じパーサーです。

npx msglens-cli read message.msg

なぜ別の .msg パーサーが必要なのか

実際の Outlook メールの多くは、本文を HTML やプレーンテキストとして保存していません。業務用の .msg ファイルを20件サンプル調査したところ、17件では本文が PidTagRtfCompressed にのみ保存されていました。これは、元の HTML が内部に含まれた圧縮 RTF です(MS-OXRTFCP および MS-OXRTFEX)。PidTagHtml と PidTagBody を読み取るだけで終わるパーサーでは、こうしたメッセージの本文は空になります。このパーサーは RTF を展開して HTML を取り出し、PidTagHtml、PidTagBodyHtml、圧縮 RTF、PidTagBody の順にフォールバックします。

また、次の機能も備えています。

  • バイト列から形式を判定するため、名前を変更したファイルも開けます
  • winmail.dat(TNEF)を展開し、その中に格納された添付ファイルも取り出します
  • メッセージで指定されたコードページを使って、ラテン文字以外の本文をデコードします
  • メールだけでなく、保存された予定や連絡先も読み取ります

CLI

npm install -g msglens-cli でインストールすると、コマンドは msglens です。または、インストールせずに npx msglens-cli で実行できます。

msglens read <file...> [--json]            print headers and the plain-text body
msglens attachments <file...> [-o <dir>]   save every attachment
msglens convert <file...> --to eml|txt [-o <dir>]
msglens mcp                                MCP server on stdio (see below)
  • read --json は、解析したメッセージ全体を出力します(ファイルが1つの場合は1つのオブジェクト、複数の場合は配列)。添付ファイルのバイトデータは含まれませんが、名前、種類、サイズは含まれます。
  • attachments と convert はファイルを上書きしません。2つ目の invoice.pdf は invoice (1).pdf として保存されます。添付ファイル名は通常のファイル名に変換されるため、メッセージから出力フォルダーの外にファイルを書き込むことはできません。
  • 複数のファイルを一度に処理できます。処理に失敗したファイルがあっても、残りの処理は続行され、失敗が報告されます。いずれかのファイルで失敗した場合、終了コードは1です。

フォルダー内の .msg ファイルを .eml に変換します。

npx msglens-cli convert ./mail/*.msg --to eml -o ./eml

AI アシスタント向け MCP サーバー

msglens mcp は標準入出力で Model Context Protocol サーバーを実行するため、Claude、Codex、Cursor などのアシスタントが、ユーザーのマシン上にあるメールファイルを直接開けます。次の3つのツールを備えています。

  • read_email:件名、送信者、宛先、日付、プレーンテキストの本文、添付ファイル一覧(オプションで未加工のヘッダーも取得)
  • save_attachments:すべての添付ファイルをフォルダーに書き込みます
  • convert_email:.msg または winmail.dat を .eml または .txt に変換します

ファイルはユーザーのマシン上にとどまり、サーバーはネットワークリクエストを行いません。

Claude Code

claude mcp add msglens -- npx -y msglens-cli mcp

Codex(~/.codex/config.toml)

[mcp_servers.msglens]
command = "npx"
args = ["-y", "msglens-cli", "mcp"]

Claude Desktop、Cursor、その他の JSON 設定対応クライアント

{
  "mcpServers": {
    "msglens": { "command": "npx", "args": ["-y", "msglens-cli", "mcp"] }
  }
}

次に、たとえば「~/Downloads/invoice-query.msg を要約して、添付ファイルを ~/Desktop/invoice に保存して」と依頼します。

メッセージ本文はメールの送信者が作成したものです。そのため、ツールは本文をデータとして扱い、本文内の指示には従わないようアシスタントに伝えます。

ライブラリ

import { parseFile, parse, toEml, toText } from "msglens-cli";

const email = await parseFile("message.msg");
email.subject;          // string
email.from;             // { name, address } | null
email.date;             // Date | null
email.bodyText;         // plain text, always filled
email.body;             // HTML when email.bodyKind === "html"
email.attachments;      // [{ fileName, mimeType, size, content: Uint8Array, isEmbeddedMessage, ... }]

const again = await parse(bytes, "message.msg"); // from a Uint8Array or ArrayBuffer
const eml = await toEml(email);                   // RFC 822 text

email.body は、送信者が書いたとおりのメッセージの HTML です。信頼できないデータのため、どこかに表示する前に(たとえば DOMPurify を使って)サニタイズしてください。

isEmbeddedMessage: true の添付ファイルは、別のメッセージに添付されたメッセージです。その content を parse() に渡すと読み取れます。

Node 20 以降が必要です。

ファイルを開いて中身を確認するだけなら

msglens.app では、.msg、.eml、winmail.dat をブラウザーで開けます。解析はお使いのデバイス上で行われ、添付ファイルの確認や PDF へのエクスポートもできます。

ライセンス

MIT。Microsoft および Outlook は Microsoft Corporation の商標です。本プロジェクトは Microsoft と提携していません。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。