Skip to content

Commit 9cbd8aa

Browse files
authored
feat(transport): drop streamable_http_path override + bump to 1.0.108 (#124)
The override pinned the mount to /mcp/ to match the (incorrect) assumption that prod forwarded /mcp/. Verified via internal-nginx upstream access log that prod META_MCP_BACKEND_URLS is /mcp (no trailing slash), so the SDK default streamable_http_path = /mcp matches prod and the override is unnecessary. Removing it avoids the 307 redirect under prod traffic that detached the undici ArrayBuffer on the Next.js proxy retry path (1.0.106 regression). Keeps transport_security.enable_dns_rebinding_protection = False (required when internal nginx strips the port from the Host header, so the SDKs loopback allowlist 127.0.0.1:* never matches). Keeps mcp[cli]==1.23.0 pin.
1 parent ef45fe1 commit 9cbd8aa

3 files changed

Lines changed: 3 additions & 7 deletions

File tree

‎meta_ads_mcp/core/server.py‎

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -337,10 +337,6 @@ def main():
337337
mcp_server.settings.port = args.port
338338
mcp_server.settings.stateless_http = True
339339
mcp_server.settings.json_response = not args.sse_response
340-
# Mount streamable HTTP at /mcp/ (with trailing slash) so requests
341-
# forwarded by an upstream proxy at .../mcp/ are served directly
342-
# instead of receiving a 307 redirect to /mcp (the SDK default).
343-
mcp_server.settings.streamable_http_path = "/mcp/"
344340
# Disable DNS rebinding protection. The SDK auto-enables it when the
345341
# server binds to a loopback host (127.0.0.1 / localhost / ::1) and
346342
# ships a port-wildcard allowlist (127.0.0.1:*). An upstream nginx
@@ -385,7 +381,7 @@ def main():
385381
try:
386382
logger.info("Starting FastMCP server with Streamable HTTP transport")
387383
print(f"✅ Server configured successfully")
388-
print(f" URL: http://{args.host}:{args.port}{mcp_server.settings.streamable_http_path}/")
384+
print(f" URL: http://{args.host}:{args.port}{mcp_server.settings.streamable_http_path}")
389385
print(f" Mode: {'Stateless' if mcp_server.settings.stateless_http else 'Stateful'}")
390386
print(f" Format: {'JSON' if mcp_server.settings.json_response else 'SSE'}")
391387
mcp_server.run(transport="streamable-http")

‎pyproject.toml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
44

55
[project]
66
name = "meta-ads-mcp"
7-
version = "1.0.107"
7+
version = "1.0.108"
88
description = "Model Context Protocol (MCP) server for Meta Ads - Use Remote MCP at pipeboard.co for easiest setup"
99
readme = "README.md"
1010
requires-python = ">=3.10"

‎server.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
33
"name": "co.pipeboard/meta-ads-mcp",
44
"description": "Facebook / Meta Ads automation with AI: analyze performance, test creatives, optimize spend.",
5-
"version": "1.0.107",
5+
"version": "1.0.108",
66
"remotes": [
77
{
88
"type": "streamable-http",

0 commit comments

Comments
 (0)