⚠️

Foundry LocalのモデルでMCPを使う際の注意点

に公開

Foundry LoaclのモデルでMCPしようとした時に気づいたことをつらつらと書いていきます

Foundry Localのモデルはclient.responsesできない

Foundry Localは、OpenAIのREST API仕様に互換性を持つように設計されています。

これにより、OpenAIのPythonクライアントやJavaScriptクライアントを使って、そのままFoundryLocalのエンドポイントを渡せば、Foundry Local上のローカルモデルにSDKを通じてREST APIでアクセスすることが可能です。

たとえば、以下のようなコードで動作します:

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:5273/v1",  # Foundry Localのエンドポイント
    api_key="not-needed"  # 認証は不要
)

response = client.chat.completions.create(
    model="Phi-3.5-mini-instruct-generic-cpu",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "What is the capital of France?"}
    ]
)
print(response.choices[0].message.content)

REST APIによるモデルとのやり取り自体は問題ないのですが、モデルの出力形式に問題があります。

SDKでレスポンスを取得する際は、上記の通りFoundryLocalのモデルにおいては、チャット補完API(client.chat.completions)を使う必要があります。

しかしながら、チャット補完API(client.chat.completions)は古いAPIであり、MCPをサポートしておりません。

MCPを使うためには、新しいAPIであるレスポンスAPI(client.responses)に準拠したモデルを使う必要があります。

https://gofastmcp.com/integrations/openai

執筆時点(2025/8/29)では、以下がレスポンスAPI(client.responses)に準拠しています。残念ながら、この中にFoundryLocalのモデルは見当たりませんでした。

https://learn.microsoft.com/ja-jp/azure/ai-foundry/openai/how-to/responses?tabs=python-secure

したがって、下記のコードは、FoundryLocalのモデルでは実行できません。

from openai import OpenAI

# Your server URL (replace with your actual URL)
url = 'https://your-server-url.com'

client = OpenAI()

resp = client.responses.create(
    model="gpt-4.1",
    tools=[
        {
            "type": "mcp",
            "server_label": "dice_server",
            "server_url": f"{url}/mcp/",
            "require_approval": "never",
        },
    ],
    input="Roll a few dice!",
)

print(resp.output_text)

FoundryLocalのモデルでMCPを使うためには、一工夫必要そうです。

ヘッドウォータース

Discussion