BeeMCP - A Bee MCP Server について
BeeMCP は、Bee ウェアラブルのライフログデータを LLM クライアントやカスタムエージェントに接続する非公式の MCP サーバーです。会話、ファクト、ToDo、位置履歴を AI アシスタントから照会したいユーザー向けです。
主な機能
- 01会話記録と要約の照会
- 02ユーザーファクトの記録・更新・削除
- 03ToDo の作成・一覧表示・完了
- 04時間範囲による位置履歴の照会
活用シーン
- 01先週話した重要な内容の検索
- 02AI アシスタントによるユーザー設定の記憶
- 03チャットを通じたリマインダーの追加や完了
MCP 対応
BeeMCP は MCP サーバーとして、会話・ファクト・ToDo・位置情報のツールとリソースを Claude や Zed などの MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
BeeMCP - Bee MCP サーバー
Bee ウェアラブルのライフログデータを操作するための、非公式な Model Context Protocol(MCP)サーバーです。詳しくはブログをご覧ください。
このサーバーはブリッジとして機能し、Claude などの大規模言語モデル(LLM)やカスタム AI エージェントが、Bee に保存されている会話、事実、ToDo、位置情報の履歴などの個人データにアクセスして操作できるようにします。
免責事項: これは非公式プロジェクトであり、Bee とは無関係です。ご自身の責任でご利用ください。API キーを通じて AI に個人データへのアクセスを許可することのセキュリティ上の影響を理解したうえでご利用ください。
基本コンセプト
Bee.computer は、日々の出来事(会話、訪れた場所、メモなど)の記録に役立ちます。beemcp を使うと、Model Context Protocol を通じてこのデータを AI アシスタントから利用できるようになります。これにより、AI に次のような質問をできます。
- 「先週、どんな大事なことを話し合いましたか?」
- 「Brad の食事の好みを思い出させてください。」
- 「先週の火曜日の午後、私はどこにいましたか?」
- 「リマインダーに『航空券を予約する』を追加してください。」
beemcp を使う AI は、Bee.computer アカウントからこの情報を安全に取得または変更できます。

前提条件
- Python: バージョン 3.10 以上。
- Bee.computer API キー: Bee アカウント設定から取得した API キーが必要です。
インストール
uv(推奨)または pip を使って beemcp をインストールして実行できます。
uv を使用する(推奨)
uv は高速な Python パッケージインストーラー兼リゾルバーです。uv をインストール済みの場合、beemcp を個別にインストールする必要はありません。uvx を使って直接実行できます。
# Example of running directly (requires API key configured, see below)
uvx beemcp
PIP を使用する
または、pip を使って beemcp をインストールできます。
pip install beemcp
インストール後、Python モジュールとして実行できます。
python -m beemcp.beemcp
また、インストール時にエントリーポイントがシステムの PATH に正しく追加されていれば、直接実行できる場合もあります。
beemcp
設定
1. API キーの設定(必須)
beemcp の動作には Bee API キーが必要です。このキーを公開したり、バージョン管理システムにコミットしたりしないでください。
Bee 開発者向けウェブサイトから API キーを取得してください。
Claude または別の MCP クライアントで実行する場合は、クライアントの設定で BEE_API_TOKEN 環境変数を指定してください。
コマンドラインから直接実行する場合は、beemcp サーバーを実行するディレクトリにある .env ファイルでキーを指定してください。
-
beemcpを実行するディレクトリに.envという名前のファイルを作成します。 -
your_actual_bee_api_key_hereを実際のキーに置き換えて、次の行を.envファイルに追加します。BEE_API_TOKEN="your_actual_bee_api_key_here"
または、システムまたはシェルで BEE_API_TOKEN 環境変数を直接設定することもできます。
export BEE_API_TOKEN="your_actual_bee_api_key_here"
# Now run the server in the same shell session
uvx beemcp
BEE_API_TOKEN が見つからない場合、サーバーはエラーで終了します。
2. LLM クライアントへの接続
LLM クライアント(Claude.app や Zed など)に、beemcp サーバーの起動方法と通信方法を設定する必要があります。
Claude.app の設定
次の内容を Claude の設定(settings.json)に追加します。
uvx を使用する場合(推奨):
"mcpServers": {
"beemcp": {
"command": "uvx",
"args": ["beemcp"],
"env": {"BEE_API_TOKEN": "<YOUR API KEY HERE>"}
}
}
pip でインストールする場合
"mcpServers": {
"bee": {
"command": "python",
"args": ["-m", "beemcp.beemcp"],
"env": {"BEE_API_TOKEN": "<YOUR API KEY HERE>"}
}
}
Claude Desktop の Settings ウィンドウで Developer タブを開くと、次のような画面が表示されます。

Zed の設定
以下を Zed の settings.json に追加してください。
uvx を使用する場合(推奨)
"context_servers": [
{
"name": "beemcp",
"command": "uvx",
"args": ["beemcp"],
"env": {"BEE_API_TOKEN": "<YOUR API KEY HERE>"}
}
],
pip でインストールする場合
"context_servers": [
{
"name": "beemcp",
"command": "python",
"args": ["-m", "beemcp.beemcp"],
"env": {"BEE_API_TOKEN": "<YOUR API KEY HERE>"}
}
],
利用可能なツール
LLM が beemcp に要求できるアクションです。
会話
list-all-conversations- 説明: ユーザーが行ったすべての会話を、簡単な要約とともに一覧表示します。これを使って、ユーザーの会話履歴の概要を把握し、回答の文脈として利用できます。その後、会話取得ツールを使って、特定の会話の詳細を取得できます。
get-conversation- 説明: ID で指定した会話の詳細をすべて取得します。ユーザーが特定の会話について尋ねたときに、その詳細を取得するために使用します。会話一覧表示ツールを使って、検索する会話の ID を確認できます。
- 引数:
id(整数):会話の ID。
ファクト
list-all-user-facts- 説明: ユーザーが記録したすべてのファクトを一覧表示します。これを使って、ユーザーが記録したファクトの概要を把握し、回答の文脈として利用できます。その後、ファクト取得ツールを使って、特定のファクトの詳細を取得できます。
get-user-fact- 説明: ID で指定したファクトの詳細をすべて取得します。ユーザーが特定のファクトについて尋ねたときに、その詳細を取得するために使用します。ファクト一覧表示ツールを使って、検索するファクトの ID を確認できます。
- 引数:
id(整数):ファクトの ID。
record-user-fact- 説明: 新しいファクトを作成します。ユーザーに関する新しい情報、ユーザーの好み、ほかの質問への回答に関連する可能性のある詳細を記録するために使用します。
- 引数:
text(文字列):ファクトの内容。
update-user-fact- 説明: 既存のファクトを更新します。ユーザーに関する情報、ユーザーの好み、ほかの質問への回答に関連する可能性のある詳細を更新するために使用します。ユーザーが明示的に確認したファクトの場合は
confirmedを true に設定してください。文脈から推測したファクトにすぎない場合は、confirmedを false に設定してください。 - 引数:
id(整数):更新するファクトの ID。text(文字列):ファクトの新しい内容。confirmed(ブール値):ユーザーがこのファクトを確認したかどうか。
- 説明: 既存のファクトを更新します。ユーザーに関する情報、ユーザーの好み、ほかの質問への回答に関連する可能性のある詳細を更新するために使用します。ユーザーが明示的に確認したファクトの場合は
confirm-user-fact- 説明: ファクトを確認済みとしてマークします。ユーザーからのフィードバックに基づいて、ファクトの確認状態を更新するために使用します。ユーザーが明示的に確認したファクトの場合は
confirmedを true に設定してください。文脈から推測したファクトにすぎない場合は、confirmedを false に設定してください。 - 引数:
id(整数):確認または未確認にするファクトの ID。confirmed(ブール値):新しい確認状態。
- 説明: ファクトを確認済みとしてマークします。ユーザーからのフィードバックに基づいて、ファクトの確認状態を更新するために使用します。ユーザーが明示的に確認したファクトの場合は
delete-user-fact- 説明: 既存のファクトを削除します。ユーザーに関する情報、ユーザーの好み、その他の詳細を忘れるために使用します。ユーザーが明示的に指示した場合にのみ呼び出してください。
- 引数:
id(整数):削除するファクトの ID。
Todos(リマインダー)
list-all-todos- 説明: ユーザーが作成したすべてのTodo(リマインダー)を一覧表示します。完了済みと未完了の両方を含む、ユーザーのタスク全体を把握するために使用します。
list-incomplete-todos- 説明: ユーザーがまだ完了していないTodo(リマインダー)をすべて一覧表示します。未完了のタスクを確認するため、積極的に使用してください。
create-todo- 説明: ユーザーの新しいTodoを作成します。Todoに特定の期限やリマインダー時刻がある場合は、
alarm_atにISO 8601形式の日付時刻文字列を設定します。 - 引数:
text(string):Todoの内容。alarm_at(string, optional):ISO 8601形式の日付時刻文字列(例:"2024-12-31T23:59:00Z")。
- 説明: ユーザーの新しいTodoを作成します。Todoに特定の期限やリマインダー時刻がある場合は、
update-todo- 説明: 既存のTodoを更新します。テキスト、完了状態、またはアラーム時刻を変更できます。変更するパラメーターのみを指定してください。
- 引数:
id(integer):更新するTodoのID。text(string, optional):Todoの新しいテキスト。completed(boolean, optional):新しい完了状態。alarm_at(string, optional):新しいISO 8601形式のアラーム時刻。
delete-todo- 説明: 既存のTodoを削除します。ユーザーがTodoの削除を明示的に指示した場合にのみ呼び出してください。
- 引数:
id(integer):削除するTodoのID。
mark-todo-completed- 説明: Todoを完了済みにします。ユーザーがタスクを完了したと明示的に伝えた場合に呼び出してください。
- 引数:
id(integer):完了済みとしてマークするTodoのID。
場所
これらの便利な関数の一部は重複していますが、現在のLLMでより実用的に利用できるよう追加されています。
list-all-locations- 説明: ユーザーが記録したすべての場所を一覧表示します。ユーザーの位置情報履歴全体を把握するために使用します。
get-locations-today- 説明: 過去24時間にユーザーが訪れた場所を取得します。今日または直近1日にどこにいたかをユーザーが尋ねた場合に使用します。
get-locations-week- 説明: 過去7日間にユーザーが訪れた場所を取得します。今週または直近数日間にどこにいたかをユーザーが尋ねた場合に使用します。
get-locations-month- 説明: 過去30日間にユーザーが訪れた場所を取得します。今月または直近数週間にどこにいたかをユーザーが尋ねた場合に使用します。
get-locations-by-time- 説明: 指定した時間範囲内の場所を取得します。特定の期間にどこにいたかをユーザーが尋ねた場合に使用します。
start_timeとend_timeは、次の形式のISO 8601形式の日付時刻文字列にしてください:2025-12-31T00:00:00Z - 引数:
start_time(string, optional):ISO 8601形式の開始時刻。end_time(string, optional):ISO 8601形式の終了時刻。
- 説明: 指定した時間範囲内の場所を取得します。特定の期間にどこにいたかをユーザーが尋ねた場合に使用します。
利用可能なリソース
MCP リソースはデータに直接アクセスでき、LLM クライアントによるコンテキスト取得やキャッシュに使用されることがよくあります。多くのLLMクライアントはリソースをあまり適切にサポートしていないため、重複する場合でも上記の「ツール」を提供しています。
bee://conversations:すべての会話の概要を一覧表示します。bee://conversations/{id}:特定の会話の詳細を取得します。bee://facts:確認済みの事実の概要を一覧表示します。bee://facts/{id}:特定の事実の詳細を取得します。bee://todos:すべてのTodoの概要を一覧表示します。bee://todos/incomplete:未完了のTodoの概要を一覧表示します。bee://todos/{id}:特定のTodoの詳細を取得します。bee://locations:記録されたすべての場所の概要を順番にまとめて一覧表示します。bee://locations/today:過去24時間の場所を一覧表示します。bee://locations/week:過去7日間の場所を一覧表示します。bee://locations/month:過去30日間の場所を一覧表示します。
使用例


その後、スマートフォンの Bee アプリに次の事実が提案されます。

デバッグ
MCP インスペクターツール(@modelcontextprotocol/inspector)を使用すると、beemcp サーバーを直接操作してデバッグできます。
uv を使ってインストールし、uvx で実行している場合:
npx @modelcontextprotocol/inspector uvx beemcp
pip を使ってインストールした場合:
npx @modelcontextprotocol/inspector python -m beemcp.beemcp
プロジェクトディレクトリ内でローカル開発している場合:
# Assuming you are in the root directory of the beemcp project
npx @modelcontextprotocol/inspector python -m beemcp.beemcp
# Or if using uv for development
npx @modelcontextprotocol/inspector uv run beemcp.beemcp
LLM への質問例
beemcp を活用するには、次のような質問を AI アシスタントにしてみてください。
- 「昨日はどんな会話をしましたか?」
- 「プロジェクトについて John と話した会話を検索してください。」
- 「コーヒーはブラックが好きだと覚えておいてください。」(->
record-user-fact) - 「やっぱり、コーヒーにはミルクを入れます。」(->
update-user-fact) - 「ToDo リストには何がありますか?」
- 「未完了のタスクを表示してください。」
- 「リマインダーに『食料品を買う』を追加してください。」
- 「『レポートを送信』の ToDo を完了済みにしてください。」
- 「先週末はどこに行きましたか?」
- 「今日はどんな場所を訪れましたか?」
ライセンス
beemcp は MIT License のもとでライセンスされています。ライセンスの条件に従って、このソフトウェアを自由に使用、変更、配布できます。詳しくは LICENSE ファイル(または標準の MIT ライセンステキスト)をご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。