0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MCP Reference Serversの機能一覧についてまとめる

Posted at

はじめに

Model Context Protocol (MCP) は、大規模言語モデル(LLM)が外部ツールやデータソースにアクセスするための統一的なプロトコルです。その中でも「Reference Servers」は、MCPの機能を示すデモンストレーション用サーバーとして重要な役割を果たしています。この記事では、開発者が実際のプロジェクトで活用できる「Reference Servers」に関して、自分の実装上調べたことを記事に残しています。

Reference Serversとは

Reference Serversは、LLMが様々なツールやデータソースにアクセスする方法を示すためのデモンストレーション・リファレンス実装です。これらは開発者が独自のMCPサーバーを実装する際の参考となるだけでなく、すぐに利用できる実用的なツールとしても機能します。

カテゴリー別Reference Servers

データストレージと検索

1. PostgreSQL

PostgreSQLサーバーは、リレーショナルデータベースへのアクセスを提供します。

【主な機能】
- スキーマ検査機能を持つ読み取り専用データベースアクセス
- SQLクエリの実行とデータ取得
- テーブル間の関係性分析
- セキュリティを考慮した読み取り専用操作

2. Redis

高速なキー値ストアであるRedisとの連携を可能にします。

【主な機能】
- キーと値の保存・取得
- リスト、セット、ハッシュなどの複合データ型操作
- 有効期限設定と管理
- パブサブ機能とトランザクション処理

3. SQLite

軽量データベースであるSQLiteを操作するためのインターフェースを提供します。

【主な機能】
- データベース接続と基本操作
- クエリ実行とデータ取得
- スキーマ情報の参照
- データ分析とビジネスインテリジェンスレポート生成

4. Memory

長期記憶を管理するためのナレッジグラフベースのメモリシステムを提供します。

【主な機能】
- エンティティ(名前・タイプ・情報を持つノード)の管理
- エンティティ間の関係定義と検索
- ナレッジグラフの操作と複雑なパターン検出
- 永続的なメモリストレージ

Web検索とコンテンツ取得

5. Brave Search

Braveの検索エンジンAPIを活用した検索機能を提供します。

【主な機能】
- Web Search: 一般クエリ、ニュース、記事の検索(最大20結果/リクエスト)
- Local Search: ビジネス、場所、サービスの検索と詳細情報
- フィルタリングとページネーション機能
- 結果がない場合の自動フォールバック

6. Fetch

ウェブコンテンツを取得し、LLMが処理しやすい形式に変換します。

【主な機能】
- ウェブページコンテンツの取得
- HTML/テキストのクリーニングと整形
- メタデータ抽出
- LLM向け最適化フォーマット変換

7. EverArt

AIを使った画像生成サービスとの連携を提供します。

【主な機能】
- テキストプロンプトからの画像生成
- 複数AIモデルのサポート
- 生成パラメータのカスタマイズ
- 画像の管理と取得

8. Puppeteer

ブラウザ操作の自動化とウェブスクレイピングを可能にします。

【主な機能】
- ウェブページのレンダリングと操作
- フォーム入力と送信の自動化
- JavaScriptの実行とDOM操作
- コンテンツ抽出とスクリーンショット取得

リポジトリとコード管理

9. Git

Gitリポジトリの操作と管理のためのインターフェースを提供します。

【主な機能】
- リポジトリのクローンと更新
- ブランチの管理
- コミット履歴の表示と検索
- ファイルの変更履歴追跡

10. GitHub

GitHub特有のリポジトリ管理と連携機能を提供します。

【主な機能】
- ファイル操作(作成・更新・読み取り)
- リポジトリの検索と作成
- イシューとプルリクエストの管理
- コード検索とメタデータ取得

11. GitLab

GitLabプラットフォームとの連携機能を提供します。

【主な機能】
- プロジェクト管理
- イシューとマージリクエスト処理
- CIパイプライン監視
- ファイル操作と設定管理

クラウドサービスと生産性ツール

12. Google Drive

Google Driveとの連携によるファイル管理機能を提供します。

【主な機能】
- ファイルとフォルダの検索
- メタデータ取得とファイル内容の読み取り
- ファイル作成と更新
- 共有設定の管理

13. Google Maps

位置情報サービスと地図関連機能を提供します。

【主な機能】
- 場所の検索と詳細情報取得
- 経路計算と移動時間推定
- 座標⇔住所変換
- 周辺施設検索

14. Slack

Slackとの連携によるコミュニケーション機能を提供します。

【主な機能】
- メッセージの送受信
- チャンネル管理と検索
- ユーザー情報取得
- スレッド処理とリアクション管理

ユーティリティと特殊機能

15. Filesystem

ファイルシステム操作のためのセキュアなインターフェースを提供します。

【主な機能】
- ファイルの読み書き
- ディレクトリ管理
- ファイル検索
- アクセス制御と安全な操作

16. Time

時間関連の操作と変換機能を提供します。

【主な機能】
- 現在時刻の取得
- タイムゾーン変換
- 日付計算と比較
- 時間フォーマット変換

17. Sentry

エラー監視プラットフォームSentryとの連携機能を提供します。

【主な機能】
- エラーと例外の取得
- イシュー管理
- パフォーマンス分析
- 問題の優先順位付け

18. Sequential Thinking

複雑な問題解決のための思考プロセス管理を提供します。

【主な機能】
- 段階的な問題解決アプローチ
- 中間思考過程の記録
- フィードバックループによる改善
- 複数アプローチの並行検討

19. AWS KB Retrieval

AWSのナレッジベースから情報を検索する機能を提供します。

【主な機能】
- Bedrock Agent Runtimeとの統合
- ナレッジベースへのクエリ実行
- 関連情報の抽出と最適化

20. Everything

MCPプロトコルをテストするための総合的なリファレンス実装です。

【主な機能】
- MCPの機能テスト用ツール集
- 様々なタイプのツール実装例
- 非同期処理のテスト
- LLMサンプリング機能

実装例と活用方法

基本的な使用パターン

MCPのReference Serverを活用する基本的なパターンを示します:

// MCP Reference Serverの利用例
import { MCPClient } from 'mcp-client';

async function main() {
  // クライアントの初期化
  const client = new MCPClient();
  
  // サーバーの登録
  client.registerServer('brave-search', 'https://mcp.brave.com');
  client.registerServer('github', 'https://mcp.github.com');
  client.registerServer('memory', 'https://mcp.memory.com');
  
  // AIエージェントにツールを提供
  const agent = new AIAgent({
    tools: client.getTools(),
    model: 'gpt-4' // または他のLLM
  });
  
  // エージェントの実行
  const result = await agent.run('GitHubからコードを検索し、その情報をメモリに保存した後、関連する技術情報をウェブで調査してください');
  
  console.log(result);
}

main().catch(console.error);

実践的なユースケース

1. 知識ベースと検索連携

Brave SearchとMemoryを組み合わせることで、検索結果を永続的に記憶するエージェントを構築できます:

// 検索結果を永続的に記憶するエージェント
async function researchAgent(query) {
  // 検索の実行
  const searchResults = await braveSearch.search(query);
  
  // 重要な情報を抽出
  const importantInfo = extractKeyInformation(searchResults);
  
  // メモリに保存
  await memory.createEntity({
    name: query,
    type: 'research',
    observations: importantInfo
  });
  
  // 関連エンティティとの関係を作成
  const relatedEntities = findRelatedEntities(query);
  for (const entity of relatedEntities) {
    await memory.createRelation({
      from: query,
      to: entity.name,
      type: 'related-to'
    });
  }
  
  return {
    searchResults,
    savedMemory: true,
    relatedEntities: relatedEntities.map(e => e.name)
  };
}

2. コード分析と開発支援

GitHub、Git、PostgreSQLを組み合わせたコード分析ツール:

// コードベースの分析と提案を行うエージェント
async function codeAnalysisAgent(repoUrl) {
  // リポジトリのクローン
  const repo = await git.clone(repoUrl);
  
  // コードの読み取りと分析
  const files = await github.listFiles(repo.owner, repo.name);
  const codebase = await github.getMultipleFiles(repo.owner, repo.name, files);
  
  // データベースにコード情報を保存
  await postgresql.execute(`
    CREATE TABLE IF NOT EXISTS code_analysis (
      repo TEXT,
      file TEXT,
      complexity INT,
      issues JSONB
    )
  `);
  
  // 各ファイルの分析
  for (const file of codebase) {
    const analysis = analyzeCode(file.content);
    await postgresql.execute(`
      INSERT INTO code_analysis (repo, file, complexity, issues)
      VALUES ($1, $2, $3, $4)
    `, [repoUrl, file.path, analysis.complexity, JSON.stringify(analysis.issues)]);
  }
  
  // 分析結果の取得
  return postgresql.query(`
    SELECT file, complexity, issues 
    FROM code_analysis 
    WHERE repo = $1
    ORDER BY complexity DESC
  `, [repoUrl]);
}

3. マルチモーダルコンテンツ生成

Fetch、EverArt、Filesystemを組み合わせたコンテンツ生成システム:

// ウェブ情報を元に画像とレポートを生成するエージェント
async function contentGenerationAgent(topic) {
  // ウェブからの情報収集
  const webpages = await fetch.getMultiplePages([
    `https://en.wikipedia.org/wiki/${encodeURIComponent(topic)}`,
    `https://news.google.com/search?q=${encodeURIComponent(topic)}`
  ]);
  
  // 情報の抽出と要約
  const summary = summarizeContent(webpages);
  
  // 画像生成
  const image = await everart.generateImage({
    prompt: `${topic} in a detailed and informative style`,
    model: 'stable-diffusion'
  });
  
  // レポート作成
  const report = createReport(topic, summary, image.url);
  
  // ファイルシステムに保存
  await filesystem.writeFile(`reports/${topic}.md`, report);
  await filesystem.writeFile(`reports/images/${topic}.png`, image.data);
  
  return {
    reportPath: `reports/${topic}.md`,
    imagePath: `reports/images/${topic}.png`,
    summary: summary.substring(0, 200) + '...'
  };
}

Reference Serversの拡張と連携

これらのReference Serversは単独でも強力ですが、組み合わせることでさらに高度な機能を実現できます。例えば:

  1. リサーチと知識管理: Brave Search + Fetch + Memory
  2. 開発ワークフロー: GitHub + GitLab + Slack + Sentry
  3. データ分析パイプライン: PostgreSQL + Redis + SQLite
  4. コンテンツ管理: Google Drive + Filesystem + EverArt
  5. 自動化と監視: Puppeteer + Sentry + Time

独自のMCPサーバー開発のヒント

Reference Serversをモデルに独自のMCPサーバーを開発する際のポイント:

  1. 統一インターフェース: MCPの標準に従った一貫したAPIデザイン
  2. エラーハンドリング: 堅牢なエラー処理と適切なフィードバック
  3. 認証とセキュリティ: 適切なアクセス制御と認証メカニズム
  4. ドキュメント: 詳細なAPI仕様と使用例の提供
  5. スケーラビリティ: 負荷に応じた適切なリソース管理

参考リンク


0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?