]> apps.delaporte.us Git - matrix-shop-bot.git/commitdiff
Add CORS support
authorEdward Delaporte <edward@delaporte.us>
Mon, 27 Jul 2026 00:37:06 +0000 (19:37 -0500)
committerEdward Delaporte <edward@delaporte.us>
Mon, 27 Jul 2026 00:37:06 +0000 (19:37 -0500)
Makefile
pyproject.toml
skill.py

index c8e3458f3d9964cae348cd12885ee7894460d361..d531e259181b70480d33fe2e8d0d23ca1cb3a2d6 100644 (file)
--- 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
 
index 68e0183fbb50c269c9e32dce4058b6ab05c742d9..a370bc60347676019ff9baf0cc4426a2f826b75b 100644 (file)
@@ -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*"]
index 82540b01157a7cf0886a78406cff6bdeec056cb3..355b9b210006db56a81967ecb8524bd6c7d9cc59 100644 (file)
--- 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)