⚠️
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
)に準拠したモデルを使う必要があります。
執筆時点(2025/8/29)では、以下がレスポンスAPI(client.responses
)に準拠しています。残念ながら、この中にFoundryLocalのモデルは見当たりませんでした。
したがって、下記のコードは、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