> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sambanova.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# FastMCP

<Note>
  **このガイドで構築するもの:** 最小構成ながら完結した FastMCP セットアップです。ツールを公開する Python サーバーと、モデルによるツールの発見・呼び出しを可能にする SambaCloud ベースのクライアントを構築します。
</Note>

## 概要

[FastMCP](https://gofastmcp.com/getting-started/welcome) は、[Model Context Protocol](https://github.com/modelcontextprotocol/python-sdk) のクライアントおよびサーバーを最小限のボイラープレートで構築できる、ハイレベルな Python フレームワークです。言語モデルと連携するツールの開発でも、外部 API を MCP 経由で統合する場合でも、FastMCP はクリーンな Python 構文と小さく焦点を絞った API により、煩雑な定型処理を削減します。

本ガイドでは、FastMCP と **SambaCloud** を連携させる手順を解説します。連携により、以下が可能になります。

<CardGroup cols={2}>
  <Card title="ツール利用の実現" icon="wrench">
    OpenAI 互換の Function calling インターフェースを通じて、SambaCloud のモデルから Python 関数を呼び出せるようにします。
  </Card>

  <Card title="エージェントのオーケストレーション" icon="diagram-project">
    モデルが適切なタイミングで適切なツールを選択するマルチエージェントシステムを構築します。
  </Card>

  <Card title="外部 API のブリッジ" icon="cloud-arrow-down">
    任意のサードパーティサービスを MCP ツールとしてラップし、モデルから呼び出せるようにします。
  </Card>

  <Card title="カスタムエージェントの提供" icon="bolt">
    フレームワークのオーバーヘッドなしで、デコレーターベースの軽量なハンドラーを提供します。
  </Card>
</CardGroup>

## 前提条件

* [SambaCloud](http://cloud.sambanova.ai?utm_source=fastmcp\&utm_medium=external\&utm_campaign=cloud_signup) アカウントと、[SambaCloud ポータル](https://cloud.sambanova.ai/apis) で取得した API キー
* Python 3.10 以降がインストール済みであること。`python --version` で確認できます。
* Python の仮想環境およびターミナル操作の基本知識

## インストール

<Steps>
  <Step title="仮想環境の作成と有効化">
    <CodeGroup>
      ```bash macOS / Linux theme={}
      python -m venv .venv
      source .venv/bin/activate
      ```

      ```powershell Windows theme={}
      python -m venv .venv
      .venv\Scripts\Activate.ps1
      ```
    </CodeGroup>
  </Step>

  <Step title="必要なパッケージのインストール">
    ```bash theme={}
    pip install mcp openai
    ```

    <Tip>
      `openai` は SambaCloud の OpenAI 互換 API の呼び出しに使用します。`mcp` パッケージには FastMCP のサーバークラスと MCP クライアントユーティリティの両方が含まれており、追加の依存パッケージは不要です。
    </Tip>
  </Step>

  <Step title="SambaCloud API キーのエクスポート">
    ```bash theme={}
    export SAMBANOVA_API_KEY="your-sambacloud-api-key"
    ```

    <Warning>
      API キーは決してソース管理にコミットしないでください。`.env` ファイルやシェルのシークレットマネージャーを使用してください。
    </Warning>
  </Step>
</Steps>

## 利用方法

動作する FastMCP + SambaCloud 構成は、次の 2 つの要素からなります。

<Steps>
  <Step title="MCP サーバー">
    Python 関数をツールとして公開します。
  </Step>

  <Step title="クライアント">
    SambaCloud を呼び出し、どのツールを実行するかをモデルに判断させ、そのツール呼び出しをサーバーに転送します。
  </Step>
</Steps>

### 1. MCP サーバーの定義

以下を `example_server.py` として保存します。`@mcp.tool()` デコレーターが各関数を MCP 経由で公開し、`mcp.run(transport="stdio")` によりサーバーへ stdio 経由でアクセスできるようになります。

```python example_server.py theme={}
from datetime import datetime
from mcp.server.fastmcp import FastMCP

mcp = FastMCP("example-server")

@mcp.tool()
def get_current_time() -> str:
    """Get the current time."""
    return f"current_time: {datetime.now().isoformat()}"

@mcp.tool()
def get_weather(city: str, metric: str = "celsius") -> str:
    """Get weather info for a city."""
    return f"It is 23 {metric} in {city}"

if __name__ == "__main__":
    mcp.run(transport="stdio")
```

<Note>
  `@mcp.tool()` は、関数を MCP 経由で呼び出せるツールとして公開します。複数のツールを登録したり、標準的な Python の型アノテーションで複雑な入力を扱ったりできます。JSON スキーマは FastMCP が自動生成します。
</Note>

### 2. SambaCloud の呼び出しとツール呼び出しのサーバーへの転送

クライアントは OpenAI SDK の接続先を SambaCloud のベース URL に設定し、`example_server.py` を stdio のサブプロセスとして起動して、モデルが返したツール呼び出しをサーバーに転送します。

```python client.py theme={}
import os
from openai import OpenAI
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

client = OpenAI(
    base_url="https://api.sambanova.ai/v1/",
    api_key=os.environ["SAMBANOVA_API_KEY"],
)

server_params = StdioServerParameters(
    command="python", args=["example_server.py"]
)

# Inside an async function:
#   async with stdio_client(server_params) as (read, write):
#       async with ClientSession(read, write) as session:
#           await session.initialize()
#           tools = await session.list_tools()
#           # Convert MCP tool schemas to OpenAI function-calling format,
#           # then call client.chat.completions.create(
#           #     model="Meta-Llama-3.3-70B-Instruct",
#           #     messages=[...],
#           #     tools=tools_schemas,
#           # )
#           # and dispatch tool calls via session.call_tool(...).
```

<Info>
  MCP から OpenAI 形式へのツールスキーマ変換やレスポンス処理ループを含む、実行可能な完全版のブリッジについては、[MCP SambaNova examples ノートブック](https://github.com/sambanova/integrations/blob/main/mcp/mcp_sambanova_examples.ipynb) をご参照ください。
</Info>

## ユースケース

<CardGroup cols={2}>
  <Card title="Function calling" icon="code">
    SambaCloud でホストされている任意のモデルで、ツール利用と Function calling を実現します。
  </Card>

  <Card title="マルチエージェントオーケストレーション" icon="users-gear">
    ツールを組み合わせ、専門エージェントに処理を委譲するエージェントフレームワークを構築します。
  </Card>

  <Card title="外部 API との統合" icon="globe">
    REST、GraphQL、社内サービスをモデルから呼び出せるツールとして公開します。
  </Card>

  <Card title="軽量なカスタムエージェント" icon="feather">
    重量級フレームワークへのロックインなしで、デコレーターベースのハンドラーを提供します。
  </Card>
</CardGroup>

## 参考情報

<CardGroup cols={2}>
  <Card title="MCP SambaNova examples" icon="github" href="https://github.com/sambanova/integrations/blob/main/mcp/mcp_sambanova_examples.ipynb">
    クライアントブリッジの完全版を含むエンドツーエンドのノートブックです。
  </Card>

  <Card title="FastMCP の公式ドキュメント" icon="book" href="https://gofastmcp.com/getting-started/welcome">
    FastMCP フレームワークの公式リファレンスです。
  </Card>

  <Card title="MCP Python SDK" icon="python" href="https://github.com/modelcontextprotocol/python-sdk">
    低レベルの Model Context Protocol SDK です。
  </Card>

  <Card title="対応モデル" icon="layer-group" href="/docs/ja/models/sambacloud-models">
    SambaCloud でツール利用に使えるモデルの一覧です。
  </Card>
</CardGroup>

## トラブルシューティング

<AccordionGroup>
  <Accordion title="ModuleNotFoundError: mcp または mcp.server.fastmcp">
    * `pip install --upgrade mcp` を実行し、新しいバージョンが入っていることを確認します
    * 仮想環境が有効であることを確認します。`which python` が `.venv` 内を指しているはずです
    * FastMCP は公式の `mcp` パッケージに統合されました。別パッケージの `fastmcp` はインストールしないでください
  </Accordion>

  <Accordion title="SAMBANOVA_API_KEY が設定されていない">
    * キーがエクスポートされていることを確認します: `echo $SAMBANOVA_API_KEY`
    * `export SAMBANOVA_API_KEY="your-key"` で再度エクスポートしてから再試行します
    * クライアントは `os.environ["SAMBANOVA_API_KEY"]` でキーを読み取るため、同じシェルセッション内で変数が設定されている必要があります
  </Accordion>

  <Accordion title="サーバーは起動するがモデルがツールを呼び出さない">
    * 各ツール関数に docstring があることを確認します。FastMCP は docstring を使って、モデルに提示する JSON スキーマを生成します
    * クライアント呼び出しで `provider={"only": ["sambanova"]}` または同等のルーティング設定がされていることを確認します
    * [SambaCloud モデルページ](/docs/ja/models/sambacloud-models) で、モデルが Function calling に対応していることを確認します
  </Accordion>

  <Accordion title="インストール時の Python バージョンエラー">
    * `mcp` には Python 3.10 以降が必要です。`python --version` で確認してください
    * 古いバージョンを使用している場合は、Python 3.10 以降で新しい仮想環境を作成してください
  </Accordion>
</AccordionGroup>
