38 lines
1.4 KiB
Python
38 lines
1.4 KiB
Python
|
|
from services.sql_service import SqlService
|
|||
|
|
from mcp.server.fastmcp import FastMCP
|
|||
|
|
from create_logger import logger
|
|||
|
|
|
|||
|
|
# 创建天气MCP服务器
|
|||
|
|
def create_weather_mcp_server():
|
|||
|
|
# 创建FastMCP实例
|
|||
|
|
weather_mcp = FastMCP(name="WeatherTools",
|
|||
|
|
instructions="天气查询工具,基于 weather_data 表。",
|
|||
|
|
log_level="ERROR",
|
|||
|
|
host="127.0.0.1", port=8002)
|
|||
|
|
|
|||
|
|
# 实例化sql查询服务
|
|||
|
|
service = SqlService("天气查询")
|
|||
|
|
|
|||
|
|
@weather_mcp.tool(
|
|||
|
|
name="query_weather",
|
|||
|
|
description="查询天气数据,输入 SQL,如 'SELECT * FROM weather_data WHERE city = \"北京\" AND fx_date = \"2025-07-30\"'"
|
|||
|
|
)
|
|||
|
|
def query_weather(sql: str) -> str:
|
|||
|
|
logger.info(f"执行天气查询: {sql}")
|
|||
|
|
return service.execute_query(sql)
|
|||
|
|
|
|||
|
|
# 打印服务器信息
|
|||
|
|
logger.info("=== 天气MCP服务器信息 ===")
|
|||
|
|
logger.info(f"名称: {weather_mcp.name}")
|
|||
|
|
logger.info(f"描述: {weather_mcp.instructions}")
|
|||
|
|
|
|||
|
|
# 运行服务器
|
|||
|
|
try:
|
|||
|
|
print("服务器已启动,请访问 http://127.0.0.1:8002/mcp")
|
|||
|
|
weather_mcp.run(transport="streamable-http") # 使用 streamable-http 传输方式
|
|||
|
|
except Exception as e:
|
|||
|
|
print(f"服务器启动失败: {e}")# 创建天气MCP服务器
|
|||
|
|
|
|||
|
|
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
create_weather_mcp_server()
|