windmill_mcp.py: ホスト設定をコンストラクタで渡すよう修正
- FastMCP("windmill") でデフォルト host=127.0.0.1 だと DNS rebinding 保護が
自動有効化されて外部ホスト名からのアクセスが "Invalid Host header" で拒否される
- MCP_HOST/MCP_PORT 環境変数をコンストラクタ時点で渡すことで
host=0.0.0.0 の場合は保護が無効になり Traefik 経由のアクセスが通る
- ドメイン名を windmill_mcp → windmill-mcp に修正(DNS は hyphen のみ対応)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -10,12 +10,14 @@ from mcp.server.fastmcp import FastMCP
|
||||
WINDMILL_URL = os.environ.get("WINDMILL_URL", "https://windmill.keinafarm.net")
|
||||
WINDMILL_TOKEN = os.environ.get("WINDMILL_TOKEN", "")
|
||||
WINDMILL_WORKSPACE = os.environ.get("WINDMILL_WORKSPACE", "admins")
|
||||
MCP_HOST = os.environ.get("MCP_HOST", "127.0.0.1")
|
||||
MCP_PORT = int(os.environ.get("MCP_PORT", "8001"))
|
||||
|
||||
if not WINDMILL_TOKEN:
|
||||
print("Error: WINDMILL_TOKEN 環境変数が設定されていません", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
mcp = FastMCP("windmill")
|
||||
mcp = FastMCP("windmill", host=MCP_HOST, port=MCP_PORT)
|
||||
|
||||
|
||||
def _headers() -> dict:
|
||||
@@ -338,9 +340,4 @@ def windmill_get_script(path: str) -> str:
|
||||
|
||||
if __name__ == "__main__":
|
||||
transport = os.environ.get("MCP_TRANSPORT", "stdio")
|
||||
if transport == "sse":
|
||||
host = os.environ.get("MCP_HOST", "0.0.0.0")
|
||||
port = int(os.environ.get("MCP_PORT", "8001"))
|
||||
mcp.run(transport="sse", host=host, port=port)
|
||||
else:
|
||||
mcp.run(transport="stdio")
|
||||
mcp.run(transport=transport)
|
||||
|
||||
Reference in New Issue
Block a user