getMe MCP Server について
getMe MCP Serverは、永続化Go製キーバリューストアをMCPツールとしてLLMクライアントに公開します。追記型ログとメモリ内ハッシュインデックスを備え、Unix Domain Socketでローカル通信します。
主な機能
- 01永続化キーバリューストア
- 02追記型ログとメモリ内インデックス
- 03容量を回収するバックグラウンド圧縮
- 04Unix Domain Socket通信
- 05CLI、HTTPプロキシ、多言語SDK
活用シーン
- 01LLMクライアントによるキー値データの読み書き
- 02CLIを使ったローカルストアのデバッグ
- 03HTTPルート経由でのストレージエンジン利用
MCP 対応
MCPサーバーはgetMeのデータベース操作をツールとして公開し、LLMクライアントから呼び出せます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx getme-mcp-serverGETME_SOCKET_PATHPath to the UNIX socket for getMe core serverGETME_READ_ONLYIf true, only get and get_json tools are registeredGETME_ALLOW_CLEARIf true, enables the dangerous clear toolGETME_KEY_PREFIXシークレットString prefix prepended to all keys (e.g. agent1:)ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
📑 目次
📖 概要
getMe は、Go で書かれた永続的で組み込み可能なキー・バリューストアです。Bitcask の設計に着想を得ており、高い書き込みスループットと低レイテンシの読み取りに最適化されています。
ログ構造型のストレージ方式を採用し、すべてのデータを順次追記することで、データの整合性を確保します。非常に高速なローカルプロセス間通信には Unix ドメインソケット(UDS)を使用し、HTTP プロキシ、CLI、LLM 向けの Model Context Protocol(MCP)サーバーなど、複数のインターフェースも提供しています。
🏗 プロジェクト構成
このプロジェクトは、コアストレージサーバー、複数のクライアントインターフェース、各種ツールを含むモノレポです。
server/:コアストレージデーモンとエンジンです。永続ストレージ用のログ構造型ハッシュテーブルを実装しています。アーキテクチャの詳細については、server/README.mdを参照してください。cli/:テストやデバッグに使用する、getMeサーバーとやり取りするためのコマンドラインインターフェースです。sdks/:アプリケーションにgetMeを統合するためのクライアントライブラリ(goSdk、javaSdk、jsSdk、pythonSdk)です。http-proxy-go/:goSdkを使用して構築された HTTP サーバーです。コアエンジンの Unix ドメインソケット接続を標準の HTTP ルート経由で公開します。mcp-server/:getMeデータベースを LLM(Claude や Cursor など)向けのツールとして公開する Model Context Protocol(MCP)サーバーです。commons/:モノレポ全体で使用する共有コード、ソケットパス、型、定数です。一貫性を保つために使用されます。utils/:ログスタックの構成(Loki + Alloy + Grafana)などを含む、共有ユーティリティパッケージです。
注目ポイント: 厳選された各モジュールのドキュメントは、システム全体を理解するための最短ルートです。まず
server/README.mdでアーキテクチャの基礎を確認し、次に統合についてcliとmcp-serverの各モジュールを参照してください。
🧠 コアアーキテクチャ
ストレージエンジンは、いくつかの基本原則に基づいています。
- ログ構造化ストレージ:すべてのデータは追記専用のログファイルに書き込まれます。遅いランダムディスク I/O を避けるため、書き込みが非常に高速です。
- メモリ内ハッシュインデックス:ハッシュテーブルをメモリ内に保持し、各キーとディスク上の値の正確な位置を対応付けます。これにより、読み取り処理を非常に高速に行えます(通常、ディスクシークは 1 回です)。
- コンパクション:ログファイル内の古くなったデータを定期的に整理し、ディスク容量を再利用するバックグラウンドプロセスです。
- 高速なローカルトランスポート:通信の大部分に Unix ドメインソケットを使用することで、ローカル環境で標準的な TCP のオーバーヘッドを回避します。
🚀 はじめに
サーバーの実行
このリポジトリには、環境をセットアップするためのヘルパースクリプトが含まれています。
オプション A:ローカルバイナリ+ロギングスタック
サーバーモジュールに移動し、ローカル初期化スクリプトを実行します。
cd server
./init-server-local.sh
このスクリプトは、Go バイナリを server/dist/ にビルドし、データ、ログ、ソケット用のディレクトリを準備します。また、Docker Compose で Loki + Alloy + Grafana のロギングスタックを起動してから、サーバーをフォアグラウンドで起動します。
警告: このスクリプトに
sudoを付けて実行しないでください。必要な場合は、スクリプト内で昇格した権限を使用します。先頭にsudoを付けると、ローカル開発で権限エラーが発生します。
オプション B:Docker Compose のフルスタック
同じ server ディレクトリから、次を実行します。
cd server
./init-server-docker.sh
これにより、ホスト側のディレクトリが存在することを確認し、UID/GID をエクスポートして、docker compose up --build を実行し、すべてをコンテナ内で起動します。
CLI の使用
ローカルサーバーを直接操作します。
cd cli
go run . put mykey "hello world"
go run . get mykey
go run . delete mykey
HTTP プロキシ
Unix ソケットではなく、標準的な HTTP REST エンドポイントを使用する場合は、Go HTTP プロキシを実行します。
cd http-proxy-go
go run main.go -port 8080
これにより、curl http://localhost:8080/get?key=mykey を実行できるようになります。
MCP サーバー
getMe は、Model Context Protocol を通じて LLM クライアント(Claude Desktop など)から利用できます。
cd mcp-server
uv run getme-mcp-server
(設定および統合の手順については、mcp-server/README.md を参照してください。)
📊 ベンチマークとテストの実行
パフォーマンスの低下がないことを確認したり、データベースに負荷をかけてテストしたりするには:
- 対象のモジュール(例:
server)に移動します。 - 標準テストを実行します。
go test ./... - ベンチマークを実行します。
(注:より負荷の高いストレステストや正確性テストについては、go test -bench . ./...server/tests/を確認してください。)
📦 SDK
複数の言語向け SDK を利用できます。sdks/ ディレクトリにあります。
すべての SDK は Unix ドメインソケットと直接やり取りし、最適なレイテンシを実現します。
⚠️ SDK のリリースに関する注意: SDK のバージョン管理と公開は、一時的なリリース構造を通じて自動的に管理されます。CI/CD パイプラインは、切り離されたコミットの作成とタグ付けから、変更履歴の生成、公開レジストリへのビルドのプッシュまで、リリースのライフサイクル全体を単一のバンプ種別のトリガーから自動的に調整します。これにより、main ブランチに意味のないバージョン更新コミットが一切含まれない状態を保ちます。
コードを確認したり、コントリビュートしたりする場合は、PR で バージョンを手動で更新しないでください。この高度なアーキテクチャの詳細については、SDK の README をご覧ください。
📄 ライセンス
このプロジェクトは GNU Affero General Public License v3.0(AGPLv3)の下でライセンスされています。詳細については、LICENSE ファイルをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。