mcpField
F
FelixYifeiWang-felix-mcp-smithery

FelixYifeiWang-felix-mcp-smithery

リモート
github.com/FelixYifeiWang開発ツール056 週間前に更新
リポジトリ

FelixYifeiWang-felix-mcp-smithery について

Felix MCP (Smithery) は、Smithery にデプロイされた小規模な MCP サーバーで、Claude Desktop などのクライアント向けです。Streamable HTTP 経由で、挨拶、乱数、天気の取得、OpenAI によるテキスト要約を提供します。

主な機能

  1. 01名前を指定した挨拶
  2. 02乱数の生成
  3. 03都市ごとの現在の天気取得
  4. 04OpenAI によるテキスト要約

活用シーン

  1. 01MCP クライアントへの挨拶ツールの追加
  2. 02指定した上限までの乱数生成
  3. 03都市の現在の天気の確認
  4. 04OpenAI API キー設定時のテキスト要約

MCP 対応

`/mcp` の Streamable HTTP エンドポイントを通じて、MCP クライアントに4つのツールを提供します。セッション管理に対応し、POST、GET、DELETE リクエストを処理します。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://server.smithery.ai/@FelixYifeiWang/felix-mcp-smithery/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

すべてのエンドポイント
Streamable HTTPhttps://server.smithery.ai/@FelixYifeiWang/felix-mcp-smithery/mcp認証が必要

ツール

詳細

Felix MCP (Smithery)

便利なツールをいくつか備えた小規模な Model Context Protocol サーバーです。Smithery にデプロイされ、Claude Desktop でテストされ、NANDA に登録されています。

含まれるツール

  • hello(name) – 手軽な挨拶
  • randomNumber(max?) – ランダムな整数(デフォルトは 100)
  • weather(city) – wttr.in 経由で現在の天気を取得
  • summarize(text, maxSentences?, model?) – OpenAI を利用した要約(OPENAI_API_KEY が必要です)

公開サーバーページ https://smithery.ai/server/@FelixYifeiWang/felix-mcp-smithery

MCP エンドポイント(ストリーミング可能な HTTP) https://server.smithery.ai/@FelixYifeiWang/felix-mcp-smithery/mcp (Smithery/NANDA では、認証情報はクエリパラメーター api_key と任意の profile を介して付与され、プラットフォームの UI で設定します。ここにシークレットをハードコードしないでください。)


デモ

Claude Desktop での利用(推奨)
  1. Settings → Developer → mcpServers を開き、次を追加します。

    {
      "mcpServers": {
        "felix-mcp-smithery": {
          "command": "npx",
          "args": [
            "-y",
            "@smithery/cli@latest",
            "run",
            "@FelixYifeiWang/felix-mcp-smithery",
            "--key",
            "YOUR_SMITHERY_API_KEY",
            "--profile",
            "YOUR_PROFILE_ID"
          ]
        }
      }
    }
    
  2. 新しいチャットを開始し、次を実行します。

    • 「felix-mcp-smithery のツールを一覧表示して」
    • 「{ "name": "Felix" } を指定して hello を呼び出して」
    • 「このテキストを 2 文で要約して、summarize を呼び出して:…」

機能

  • ストリーミング可能な HTTP MCP – Express と MCP SDK の StreamableHTTPServerTransport を /mcp(POST/GET/DELETE)で使用します。
  • セッション対応 – Mcp-Session-Id を適切に処理します(クローズ時の再帰なし)。
  • OpenAI による要約 – チャット補完を使用して、すっきりとした要約を生成します(デフォルトモデルは gpt-4o-mini)。
  • 手間のかからないホスティング – コンテナとしてパッケージ化し、Smithery にデプロイします。

インストール(ローカル)

Node 18+ が必要です(Node 20 でテスト済み)。

git clone https://github.com/FelixYifeiWang/felix-mcp-smithery
cd felix-mcp-smithery
npm install

環境変数を設定します(ローカルで summarize を呼び出す場合のみ必要です)。

export OPENAI_API_KEY="sk-..."

実行します。

node index.js
# ✅ MCP Streamable HTTP server on 0.0.0.0:8081 (POST/GET/DELETE /mcp)

ローカルでの curl:

curl -s -X POST "http://localhost:8081/mcp" \
  -H 'Content-Type: application/json' \
  -H 'Mcp-Protocol-Version: 2025-06-18' \
  --data '{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"protocolVersion":"2025-06-18"}}'

使用方法(ツール)

hello

{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"hello","arguments":{"name":"Felix"}}}

randomNumber

{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"randomNumber","arguments":{"max":10}}}

weather

{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"weather","arguments":{"city":"Boston"}}}

summarize(サーバーに OPENAI_API_KEY を設定する必要があります)

{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"summarize","arguments":{"text":"(paste long text)","maxSentences":2}}}

仕組み

  • サーバーの中核: @modelcontextprotocol/sdk の McpServer を使用し、buildServer() でツールを登録します。 トランスポート:/mcp の StreamableHTTPServerTransport が次を処理します。

    • POST /mcp — JSON-RPC リクエスト(初回の initialize を含む)
    • GET /mcp — サーバーからクライアントへの通知(SSE)
    • DELETE /mcp — セッションを終了
  • CORS: すべてのオリジンを許可し、Mcp-Session-Id ヘッダーを公開します(ホスト型クライアントに適しています)。

  • OpenAI による要約: /v1/chat/completions を呼び出す fetch の薄いラッパーで、短い「明快な要約」システムプロンプトを使用します。


デプロイ(Smithery)

  1. 次を含む GitHub リポジトリを用意します。

    • index.js(Express + MCP)

    • package.json(@modelcontextprotocol/sdk、express、cors、zod)

    • Dockerfile

    • smithery.yaml:

      kind: server
      name: felix-mcp-smithery
      version: 1.0.0
      runtime: container
      
      startCommand:
        type: http
      
      transport: streamable-http
      port: 8081
      path: /mcp
      ssePath: /mcp
      health: /
      
  2. Smithery で次を行います。

    • リポジトリからサーバーを作成します。
    • Environment Variables に OPENAI_API_KEY を追加します(summarize 用。任意)。
    • デプロイし、ログに次の内容が表示されることを確認します。 ✅ MCP Streamable HTTP server on 0.0.0.0:8081 (POST/GET/DELETE /mcp)

NANDA インデックス

  • join39.org → Context Agents → Add に移動します。

    • Agent Name: Felix MCP (Smithery)
    • MCP Endpoint: https://server.smithery.ai/@FelixYifeiWang/felix-mcp-smithery/mcp?api_key=YOUR_KEY&profile=YOUR_PROFILE
    • Description: Smithery でホストされたストリーミング可能な HTTP MCP。ツール:hello、randomNumber、weather、summarize(OpenAI)。
  • NANDA からテストします:initialize → tools/list → hello を呼び出します。


プロジェクト構成

.
├─ index.js            # Express + Streamable HTTP + tools
├─ package.json        # sdk/express/cors/zod
├─ Dockerfile          # container build for Smithery
└─ smithery.yaml       # Smithery project config

課題の評価基準との対応

  • ✅ 発見/構築: 4 つのツールを備えたカスタム MCP サーバー
  • ✅ デプロイ: Smithery でホスト(公開サーバーページへのリンクあり)
  • ✅ ホストでのテスト: Claude Desktop で動作確認済み(スクリーンショット/録画を同梱)
  • ✅ NANDA インデックス: Context Agent として追加(スクリーンショットを同梱)
  • ✅ 成果物: リポジトリへのリンク + 動作するエンドポイント + ホストのスクリーンショット

うまくいったこと

  • クローズループの落とし穴を避ければ、セッション管理を備えた Streamable HTTP トランスポートは安定しています。
  • Smithery により、デプロイと認証キーの配布を簡単に行えます。
  • Claude Desktop は @smithery/cli run … 経由で問題なく接続できます。

AI による支援について

このプロジェクトの一部(ツールのひな形、エラーの修正、ドキュメントの仕上げ)には、AI の支援を活用しました。 最終的なコード、デプロイ、テストの手順は、私自身が実装して検証しました。

コメント

MCP は初めてですか?

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

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