mirror of
https://github.com/latinogino/dolibarr-mcp.git
synced 2026-04-22 18:02:40 +02:00
Merge pull request #13 from latinogino/codex/fix-dolibarr-api-connection-error-1a1iog
Add CORS support for HTTP MCP server
This commit is contained in:
@@ -19,6 +19,7 @@ from .dolibarr_client import DolibarrClient, DolibarrAPIError
|
||||
|
||||
# HTTP transport imports
|
||||
from starlette.applications import Starlette
|
||||
from starlette.middleware.cors import CORSMiddleware
|
||||
from starlette.responses import Response
|
||||
from starlette.routing import Route
|
||||
from starlette.types import Receive, Scope, Send
|
||||
@@ -1462,7 +1463,14 @@ def _build_http_app(session_manager: StreamableHTTPSessionManager) -> Starlette:
|
||||
|
||||
async def options_handler(request):
|
||||
"""Lightweight CORS-friendly response for preflight requests."""
|
||||
return Response(status_code=204)
|
||||
return Response(
|
||||
status_code=204,
|
||||
headers={
|
||||
"Access-Control-Allow-Origin": "*",
|
||||
"Access-Control-Allow-Methods": "GET,POST,DELETE,OPTIONS",
|
||||
"Access-Control-Allow-Headers": "*",
|
||||
},
|
||||
)
|
||||
|
||||
async def lifespan(app):
|
||||
async with session_manager.run():
|
||||
@@ -1474,7 +1482,7 @@ def _build_http_app(session_manager: StreamableHTTPSessionManager) -> Starlette:
|
||||
|
||||
asgi_endpoint = ASGIEndpoint(asgi_handler)
|
||||
|
||||
return Starlette(
|
||||
app = Starlette(
|
||||
routes=[
|
||||
Route("/", asgi_endpoint, methods=["GET", "POST", "DELETE"]),
|
||||
Route("/{path:path}", asgi_endpoint, methods=["GET", "POST", "DELETE"]),
|
||||
@@ -1484,6 +1492,17 @@ def _build_http_app(session_manager: StreamableHTTPSessionManager) -> Starlette:
|
||||
lifespan=lifespan,
|
||||
)
|
||||
|
||||
# Allow cross-origin requests from MCP-enabled web UIs and dashboards.
|
||||
app.add_middleware(
|
||||
CORSMiddleware,
|
||||
allow_origins=["*"],
|
||||
allow_methods=["*"],
|
||||
allow_headers=["*"],
|
||||
allow_credentials=False,
|
||||
)
|
||||
|
||||
return app
|
||||
|
||||
|
||||
async def _run_http_server(config: Config) -> None:
|
||||
"""Run the MCP server over HTTP (StreamableHTTP)."""
|
||||
|
||||
Reference in New Issue
Block a user