* Reorganize the examples folder * Add two mcp server examples. A local filesystem server and a simple 'starter' server.
34 lines
892 B
Python
34 lines
892 B
Python
import os
|
|
|
|
from modal import App, Image, asgi_app
|
|
|
|
# Define the FastAPI app
|
|
app = App("arcade-worker")
|
|
|
|
toolkits = ["arcade_gmail", "arcade_slack"]
|
|
|
|
image = (
|
|
Image.debian_slim().pip_install("arcade_tdk").pip_install("arcade_serve").pip_install(toolkits)
|
|
)
|
|
|
|
|
|
@app.function(image=image)
|
|
@asgi_app()
|
|
def fastapi_app():
|
|
from arcade_serve.fastapi.worker import FastAPIWorker
|
|
from arcade_tdk import Toolkit
|
|
from fastapi import FastAPI
|
|
|
|
web_app = FastAPI()
|
|
|
|
# Initialize app and Arcade FastAPIWorker
|
|
worker_secret = os.environ.get("ARCADE_WORKER_SECRET", "dev")
|
|
worker = FastAPIWorker(web_app, secret=worker_secret)
|
|
|
|
# Register toolkits we've installed
|
|
installed_toolkits = Toolkit.find_all_arcade_toolkits()
|
|
for toolkit in installed_toolkits:
|
|
if toolkit.package_name in toolkits:
|
|
worker.register_toolkit(toolkit)
|
|
|
|
return web_app
|