main.py•898 B
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from .tools import TOOLS
from .handlers import add_task, list_tasks, complete_task
app = FastAPI()
METHOD_HANDLERS = {
"addTask": add_task,
"listTasks": list_tasks,
"completeTask": complete_task,
}
@app.get("/")
async def root():
return {"message": "Hello World"}
@app.get("/tools")
def list_tools():
return TOOLS
class RPCRequest(BaseModel):
jsonrpc: str
id: int
method: str
params: dict
@app.post("/rpc")
def rpc_call(req: RPCRequest):
handler = METHOD_HANDLERS.get(req.method)
if not handler:
raise HTTPException(status_code=404, detail="Method not found")
try:
result = handler(**req.params)
return {"jsonrpc": "2.0", "id": req.id, "result": result}
except ValueError as e:
raise HTTPException(status_code=400, detail=str(e))