Instagram MCP Server について
Instagram MCP Server は、既存の Chrome ログインセッションを利用して Instagram の投稿を取得する MCP サーバーです。TypeScript で実装され、モジュール構成を採用しているため、プロフィールの投稿を収集してメディアとメタデータをローカルに保存したい開発者に向いています。
主な機能
- 01既存の Chrome ログインセッションの利用
- 02関心の分離を意識したモジュール構成
- 03TypeScript による型安全な実装
- 04環境変数による設定
- 05JSON-RPC 2.0 準拠の通信
- 06メディアの自動ダウンロードとメタデータ生成
活用シーン
- 01ユーザー名を指定して最新の投稿を取得
- 02投稿のメディアとメタデータをローカルディレクトリに保存
- 03ソーシャルコンテンツの分析用データの準備
MCP 対応
本プロジェクトは MCP サーバーであり、ユーザー名・取得件数・保存ディレクトリなどを受け取る get_instagram_posts ツールを MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Instagram MCP Server
Chrome の既存のログインセッションを使用して Instagram の投稿を取得する Model Context Protocol(MCP)サーバーです。
特長
- 関心事を明確に分離したモジュール型アーキテクチャ
- TypeScript による型安全な実装
- エラー処理とログ機能の改善
- 環境変数による設定
- JSON-RPC 2.0 準拠の通信
- メディアの自動ダウンロードとメタデータの生成
- SEO に適した説明文の生成
アーキテクチャ
サーバーは、以下の構成に基づくモジュール型アーキテクチャを採用しています。
src/
├── core/ # Core MCP functionality
│ ├── mcp/ # MCP server implementation
│ │ ├── server.ts # Server class
│ │ ├── stdio.ts # StdioServerTransport
│ │ └── index.ts # Barrel exports
│ ├── types/ # Core type definitions
│ │ └── mcp.ts # MCP types
│ └── utils/ # Utility functions
│ ├── config.ts # Configuration management
│ └── errors.ts # Error handling
├── features/ # Feature modules
│ └── instagram/ # Instagram feature
│ ├── types.ts # Instagram types
│ ├── utils/ # Feature utilities
│ │ ├── media.ts # Media handling
│ │ ├── post.ts # Post processing
│ │ └── seo.ts # SEO generation
│ └── instagram.service.ts # Instagram service
├── services/ # Shared services
│ └── browser/ # Browser service
│ ├── types.ts # Browser types
│ └── browser.service.ts # Browser service
├── index.ts # Entry point
└── server.ts # Main server class
設定
サーバーには次の環境変数が必要です。
CHROME_USER_DATA_DIR:ログインセッションを含む Chrome のユーザーデータディレクトリのパス
設定マネージャーから、次の追加オプションも利用できます。
- ブラウザー設定(ビューポート、タイムアウト)
- Instagram 設定(遅延時間、バッチサイズ)
- 保存ディレクトリとファイルパス
使用方法
-
依存関係をインストールします。
npm install -
サーバーをビルドします。
npm run build -
サーバーを実行します。
CHROME_USER_DATA_DIR=/path/to/chrome/profile npm start
利用可能なツール
get_instagram_posts
Instagram プロフィールから最近の投稿を取得します。
パラメーター:
username(必須):投稿を取得する Instagram のユーザー名limit(任意):取得する投稿数(1~50)または"all"saveDir(任意):メディアファイルとメタデータの保存先ディレクトリdelayBetweenPosts(任意):投稿の処理間に待機する時間(ミリ秒)
例:
{
"jsonrpc": "2.0",
"id": 1,
"method": "call_tool",
"params": {
"name": "get_instagram_posts",
"arguments": {
"username": "example",
"limit": 10
}
}
}
エラー処理
サーバーでは、標準化されたエラーコードとメッセージを使用します。
INVALID_REQUEST:リクエスト形式またはパラメーターが無効ですINVALID_PARAMS:パラメーターがないか、無効ですMETHOD_NOT_FOUND:メソッドまたはツールが見つかりませんINTERNAL_ERROR:サーバー側のエラーです
開発
-
開発モードで起動します。
npm run dev -
リンターを実行します。
npm run lint
オリジナルからの改善点
-
モジュール型アーキテクチャ
- 関心事を明確に分離
- コード構成の改善
- 保守と拡張が容易
-
型安全性
- 包括的な TypeScript 型定義
- エラー検出の改善
- IDE サポートの強化
-
エラー処理
- 標準化されたエラーコード
- エラーメッセージの改善
- 適切なエラー伝播
-
設定
- 設定の一元管理
- 環境変数の検証
- 型安全な設定へのアクセス
-
コード品質
- 一貫したコーディングスタイル
- ドキュメントの改善
- ログ機能の強化
-
テストサポート
- モジュール型設計によりテストが可能
- 依存性注入に対応
- 明確なインターフェース
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。