mcp-server-sample

moriokameda/mcp-server-sample

3.1

If you are the rightful owner of mcp-server-sample and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

This repository demonstrates a weather forecast server implementation using the Model Context Protocol (MCP).

Tools
1
Resources
0
Prompts
0

MCP サーバー

このリポジトリは Model Context Protocol (MCP) を使用した天気予報サーバーの実装例です。

プロジェクト概要

Model Context Protocol (MCP) は、大規模言語モデル (LLM) とツールを接続するためのプロトコルです。このプロジェクトでは、MCP SDK を使用して、National Weather Service (NWS) API に接続する天気予報ツールを提供するサーバーを実装しています。

このサーバーは、緯度と経度を入力として受け取り、その場所の天気予報を返します。

使用技術

  • TypeScript: 静的型付けを提供するJavaScriptのスーパーセット
  • Node.js: JavaScriptランタイム環境
  • MCP SDK: Model Context Protocol の実装を提供するSDK
  • National Weather Service API: 米国の天気予報データを提供するAPI

インストール方法

  1. リポジトリをクローンします:
git clone <repository-url>
cd mcp-server-quickstart
  1. 依存関係をインストールします:
npm install
  1. プロジェクトをビルドします:
npm run build

使い方

サーバーの実行

ビルド後、以下のコマンドでサーバーを実行できます:

./build/index.js

または、パッケージをインストールした場合:

my-mcp-server

MCP クライアントからの接続

このサーバーは標準入出力 (stdio) を使用して MCP クライアントと通信します。MCP 対応のクライアント(例:MCP 対応の LLM)からこのサーバーを呼び出すことができます。

利用可能なツール

このサーバーは以下のツールを提供しています:

  • get_forecast: 指定された緯度と経度の天気予報を取得します
    • 入力パラメータ:
      • latitude: 場所の緯度(数値)
      • longitude: 場所の経度(数値)
    • 出力: 指定された場所の天気予報テキスト

実装の詳細

サーバーの実装は主に以下の3つのステップで構成されています:

  1. サーバーインスタンスの初期化:

    const server = new Server(
        {
            name: "weather",
            version: "1.0.0",
        },
        {
            capabilities: {
                tools: {},
            },
        },
    );
    
  2. 利用可能なツールの一覧を返す:

    server.setRequestHandler(ListToolsRequestSchema, async () => {
        return {
            tools: [
                {
                    name: "get_forecast",
                    description: "Get weather forecast for a location",
                    inputSchema: {
                        // ...
                    },
                },
            ],
        };
    });
    
  3. ツールの実行:

    server.setRequestHandler(CallToolRequestSchema, async (request) => {
        // ツールの実行ロジック
    });
    

注意事項

  • このサーバーは米国の National Weather Service API を使用しているため、米国内の場所の天気予報のみ取得できます。
  • API の利用制限に注意してください。

ライセンス

このプロジェクトのライセンス情報については、LICENSE ファイルを参照してください。