Building a Lyzr MCP Server on NANDA
mkdir my-lyzr-mcp-server cd my-lyzr-mcp-server python -m venv venv source venv/bin/activate
pip install mcp uvicorn starlette httpx
from mcp.server.fastmcp import FastMCP from starlette.applications import Starlette from mcp.server.sse import SseServerTransport from starlette.requests import Request from starlette.routing import Mount, Route import uvicorn import requests import json from uuid import uuid4 import os # Initialize FastMCP server mcp = FastMCP("lyzr-mcp-server") LYZR_API_KEY = os.getenv("LYZR_API_KEY") @mcp.tool() async def lyzr_chat_api(agent_id: str, message: str) -> str: url = "https://agent-dev.test.studio.lyzr.ai/v3/inference/chat/" payload = json.dumps({ "user_id": "user@email.com", "agent_id": agent_id, "session_id": str(uuid4().hex), "message": message }) headers = { 'Content-Type': 'application/json', 'x-api-key': LYZR_API_KEY } response = requests.post(url, headers=headers, data=payload) return response.text def create_app(): sse = SseServerTransport("/messages/") async def handle_sse(request: Request): async with sse.connect_sse(request.scope, request.receive, request._send) as (read, write): await mcp._mcp_server.run(read, write, mcp._mcp_server.create_initialization_options()) return Starlette( routes=[ Route("/sse", endpoint=handle_sse), Mount("/messages/", app=sse.handle_post_message), ], ) if __name__ == "__main__": app = create_app() uvicorn.run(app, host="0.0.0.0", port=8080)
export LYZR_API_KEY="your-real-key-here" python server.py