parent
c16448f0c1
commit
fd723e712d
@ -1,30 +1,33 @@
|
|||||||
|
|
||||||
from fastmcp import FastMCP
|
from fastmcp import Server
|
||||||
import time
|
from fastmcp.messages import Request, Response
|
||||||
|
|
||||||
# Initialize MCP server
|
# Create MCP server
|
||||||
mcp = FastMCP("Stock-Mock-Server")
|
mcp = Server("Stock-Mock-Server")
|
||||||
|
|
||||||
@mcp.tool()
|
# Define stock price lookup handler
|
||||||
def calculate_simple_moving_average(prices: list[float], period: int) -> float:
|
@mcp.handler("get_stock_price")
|
||||||
"""Calculate Simple Moving Average"""
|
async def get_stock_price(request: Request) -> Response:
|
||||||
try:
|
# Mock stock price data
|
||||||
time.sleep(0.1) # Simulate processing time
|
stock_prices = {
|
||||||
if len(prices) < period:
|
"AAPL": 150.0,
|
||||||
return {"error": "Not enough data points"}
|
"GOOGL": 2800.0,
|
||||||
return sum(prices[-period:]) / period
|
"MSFT": 300.0
|
||||||
except Exception as e:
|
}
|
||||||
return {"error": f"Error calculating SMA: {str(e)}"}
|
|
||||||
|
|
||||||
@mcp.tool()
|
symbol = request.data.get("symbol")
|
||||||
def calculate_percentage_change(old_value: float, new_value: float) -> float:
|
if symbol in stock_prices:
|
||||||
"""Calculate percentage change between two values"""
|
return Response(data={"price": stock_prices[symbol]})
|
||||||
try:
|
else:
|
||||||
time.sleep(0.1) # Simulate processing time
|
return Response(error=f"Stock {symbol} not found")
|
||||||
return ((new_value - old_value) / old_value) * 100
|
|
||||||
except Exception as e:
|
|
||||||
return {"error": f"Error calculating percentage change: {str(e)}"}
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
print("Starting Mock Stock Server on port 8001...")
|
print("Starting Mock Stock Server on port 8001...")
|
||||||
mcp.run(transport="sse", port=8001)
|
# Run server with SSE transport on specified host/port
|
||||||
|
mcp.run(
|
||||||
|
transport="sse",
|
||||||
|
transport_kwargs={
|
||||||
|
"host": "0.0.0.0",
|
||||||
|
"port": 8001
|
||||||
|
}
|
||||||
|
)
|
||||||
|
Loading…
Reference in new issue