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_ticket_mcp_server():
|
||
# 创建FastMCP实例
|
||
ticket_mcp = FastMCP(name="TicketTools",
|
||
instructions="票务查询工具,基于 train_tickets, flight_tickets, concert_tickets 表。只支持查询。",
|
||
log_level="ERROR",
|
||
host="127.0.0.1", port=8001)
|
||
|
||
# 实例化票务服务对象
|
||
service = SqlService("票务查询")
|
||
|
||
@ticket_mcp.tool(
|
||
name="query_tickets",
|
||
description="查询票务数据,输入 SQL,如 'SELECT * FROM train_tickets WHERE departure_city = \"北京\" AND arrival_city = \"上海\"'"
|
||
)
|
||
def query_tickets(sql: str) -> str:
|
||
logger.info(f"执行票务查询: {sql}")
|
||
return service.execute_query(sql)
|
||
|
||
# 打印服务器信息
|
||
logger.info("=== 票务MCP服务器信息 ===")
|
||
logger.info(f"名称: {ticket_mcp.name}")
|
||
logger.info(f"描述: {ticket_mcp.instructions}")
|
||
|
||
# 运行服务器
|
||
try:
|
||
print("服务器已启动,请访问 http://127.0.0.1:8001/mcp")
|
||
ticket_mcp.run(transport="streamable-http") # 使用 streamable-http 传输方式
|
||
except Exception as e:
|
||
print(f"服务器启动失败: {e}")
|
||
|
||
|
||
if __name__ == "__main__":
|
||
create_ticket_mcp_server() |