From c459b163b40e843daf86a6257c0c28026c4c126b Mon Sep 17 00:00:00 2001 From: Edward Delaporte Date: Sun, 26 Jul 2026 19:37:06 -0500 Subject: [PATCH] Add CORS support --- Makefile | 12 +++++++++--- pyproject.toml | 2 +- skill.py | 27 +++++++++++++++++++++++---- 3 files changed, 33 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index c8e3458..d531e25 100644 --- a/Makefile +++ b/Makefile @@ -6,9 +6,9 @@ MODULE=matrix_shop_bot python -m venv .venv .venv/bin/pip install . -.venv-llm: - python -m venv .venv - .venv/bin/pip install -e ".[llm]" +.mcp: + python -m venv .mcp + .mcp/bin/pip install -e ".[llm]" serve: .venv .venv/bin/python app.py @@ -26,4 +26,10 @@ test: .venv strict: .venv .venv/bin/mypy --strict -m $(MODULE) + +clean-mcp: + rm -rf .mcp + +mcp: .mcp + .mcp/bin/python skill.py diff --git a/pyproject.toml b/pyproject.toml index 68e0183..a370bc6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,7 +14,7 @@ dependencies = [ [project.optional-dependencies] test = ['mypy'] -llm = ['fastmcp'] # pip install -e ".[llm]" +llm = ['fastmcp', 'uvicorn'] # pip install -e ".[llm]" [tool.setuptools.packages.find] exclude = ["service*", "store*", "backups*"] diff --git a/skill.py b/skill.py index 82540b0..355b9b2 100644 --- a/skill.py +++ b/skill.py @@ -1,13 +1,32 @@ from fastmcp import FastMCP from matrix_shop_bot.db import Data import os +import uvicorn + +from starlette.middleware import Middleware +from starlette.middleware.cors import CORSMiddleware +import uvicorn + MY_IP=os.environ.get('MY_IP') mcp = FastMCP("Shop Bot") @mcp.tool -def add_item(name: str) -> 'list[str]': - return Data().add_item(name) +def add_item(name: str) -> str: + return '\n'.join(Data().add_item(name)) + +# Define custom middleware +custom_middleware = [ + Middleware(CORSMiddleware, allow_origins=["*"], + allow_methods=["*"], + allow_headers=["*"],), +] + +if __name__ == "__main__": + http_app = mcp.http_app(transport="streamable-http",path="/",middleware=custom_middleware) + uvicorn.run(http_app, host=MY_IP, port=9000) + + #@mcp.tool #def buy(items:str) -> 'list[str]': @@ -43,5 +62,5 @@ def add_item(name: str) -> 'list[str]': #def list_purchases(store: str) -> 'list[str]': # return Data().list_purchases(store) -if __name__ == "__main__": - mcp.run(transport="http", host=MY_IP, port=9000) +# if __name__ == "__main__": +# mcp.run(transport="http", host=MY_IP, port=9000) -- 2.47.3