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
strict: .venv
.venv/bin/mypy --strict -m $(MODULE)
+
+clean-mcp:
+ rm -rf .mcp
+
+mcp: .mcp
+ .mcp/bin/python skill.py
[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*"]
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]':
#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)