mcpField
W
What is MCP?

What is MCP?

ローカル
github.com/Siratul804開発ツール082 週間前に更新

What is MCP? について

Node.js と TypeScript で作られた MCP サーバーの例です。LLM アプリにデータや操作を提供する方法を学ぶ開発者向けに、リソース、ツール、再利用可能なプロンプトを示します。

主な機能

  1. 01リソースによるデータ公開
  2. 02ツールによる操作の実行
  3. 03再利用可能なプロンプトの定義

活用シーン

  1. 01MCP サーバーの基本パターンを学ぶ
  2. 02リソース、ツール、プロンプトの試作

MCP 対応

MCP クライアントにリソース、ツール、プロンプトを公開する MCP サーバーの例です。

設定

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

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Node.js による MCP TypeScript サーバー

MCP とは?

Model Context Protocol (MCP) を使うと、LLM アプリケーションにデータや機能を安全かつ標準化された方法で公開するサーバーを構築できます。LLM とのやり取りに特化した Web API のようなものと考えてください。MCP サーバーでは、次のことができます。

  • リソースを通じてデータを公開する(GET エンドポイントに似ており、LLM のコンテキストに情報を読み込むために使用されます)
  • ツールを通じて機能を提供する(POST エンドポイントに似ており、コードの実行や、その他の副作用を伴う処理に使用されます)
  • プロンプトを通じてやり取りのパターンを定義する(LLM とのやり取りに使える再利用可能なテンプレートです)
  • そのほかにもさまざまなことができます!

リソース

リソースは、LLM にデータを公開するための仕組みです。REST API の GET エンドポイントに似ており、データを提供しますが、大規模な計算を実行したり、副作用を発生させたりするものではありません。

// Static resource
server.resource(
  "config",
  "config://app",
  async (uri) => ({
    contents: [{
      uri: uri.href,
      text: "App configuration here"
    }]
  })
);

// Dynamic resource with parameters
server.resource(
  "user-profile",
  new ResourceTemplate("users://{userId}/profile", { list: undefined }),
  async (uri, { userId }) => ({
    contents: [{
      uri: uri.href,
      text: `Profile data for user ${userId}`
    }]
  })
);

ツール

ツールを使うと、LLM がサーバーを通じてアクションを実行できます。リソースとは異なり、ツールは計算を実行し、副作用を発生させることが想定されています。

// Simple tool with parameters
server.tool(
  "calculate-bmi",
  {
    weightKg: z.number(),
    heightM: z.number()
  },
  async ({ weightKg, heightM }) => ({
    content: [{
      type: "text",
      text: String(weightKg / (heightM * heightM))
    }]
  })
);

// Async tool with external API call
server.tool(
  "fetch-weather",
  { city: z.string() },
  async ({ city }) => {
    const response = await fetch(`https://api.weather.com/${city}`);
    const data = await response.text();
    return {
      content: [{ type: "text", text: data }]
    };
  }
);

プロンプト

プロンプトは、LLM がサーバーと効果的にやり取りするのに役立つ再利用可能なテンプレートです。

server.prompt(
  "review-code",
  { code: z.string() },
  ({ code }) => ({
    messages: [{
      role: "user",
      content: {
        type: "text",
        text: `Please review this code:\n\n${code}`
      }
    }]
  })
);

貢献

皆さまからの貢献をいつでも歓迎します!

コメント

MCP は初めてですか?

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

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