旅游服务协议服务器

一个为LLM代理提供旅游服务数据查询和通过STDIO及HTTP/SSE操作的工具和UI资源的服务器实现。

  • by danieldmascaro
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 danieldmascaro/turistik-mcp-server

使用说明

MCP Turistik服务器(服务器/)

概述

该文件夹包含 servidor MCP(模型上下文协议)。您的角色是公开工具和UI资源,以便LLM代理可以查询Turistik服务数据并通过STDIO和HTTP/SSE进行操作。


快速结构

  • src/index.ts:服务器入口点(工具注册、UI资源和SSE端点)。
  • src/services/:整合(WooCommerce,Ozypark)和帮助者。
  • src/services/sqlServices/:SQL连接和实用程序。
  • assets/:作为UI资源注入的小部件包(JS/CSS)。
  • build/:运行时退出TypeScript npm run build.

要求

  • Node.js+npm
  • TypeScript(通过开发依赖关系)
  • 访问外部服务(WooCommerce、Ozypark、SQL)

可用脚本

npm run build      # Compila TypeScript a build/
npm run dev        # Ejecuta con tsx watch
npm run run        # Ejecuta un archivo TS con tsx
npm run test:mcpapi
npm run test:woo
npm run woo
npm run ozyPark

在本地执行

从这个文件夹:

npm install
npm run dev

服务器启动:

  • 用于本地MCP集成的STDIO传输
  • 带有SSE的HTTP http://localhost:8000/mcp
  • 邮件 http://localhost:8000/mcp/message?sessionId=...

用MCP检查员快速测试

  1. 把你放在 server/
  2. 执行:
    npx @modelcontextprotocol/inspector
    
  3. 检查员将启动UI并连接到服务器的STDIO。

上传图像到Docker Hub(快速)

自从 server/:

docker login
docker build -t <usuario>/<imagen>:<tag> .
docker push <usuario>/<imagen>:<tag>

示例:

docker build -t danieldmascaro/mcp:0.0.3 .
docker push danieldmascaro/mcp:0.0.3

如果你建立在苹果硅,力量 linux/amd64:

docker buildx build --platform linux/amd64 -t <usuario>/<imagen>:<tag> --push .

Widget UI(塔旋转木马)

服务器将UI资源注入:

ui://widget/carrusel_tours.html

该资源构建于:

  • server/assets/index.js
  • server/assets/index.css

MCP工具(在服务器上注册)

展出工具的完整列表 src/index.ts:

  • TicketsTeleferico:缆车票(Ozypark)的价格和可用性。
  • CuposTeleferico:按日期/服务/原产地(Ozypark)划分的可用配额。
  • WooPorId:按ID获取WooCommerce产品的基本数据(包括服务ID的示例)。
  • ListarExcursionesWoo:按名称和价格范围过滤WooCommerce短途旅行列表(使用UI小部件)。
  • InfoHopOn:跳上跳下(SQL)总线的站点信息。
  • InfoContacto:索赔、合作、团体、公司、教育访问和生日(SQL)的联系人。
  • InfoAtractivosCerro:圣克里斯托瓦尔山(SQL)的景点。
  • TicketsFunicular:缆车票价和门票信息(SQL)。
  • ListarBusHopOnHopOffWoo:从WooCommerce跳上跳下的门票信息/价格。

环境变量

预期文件 .env 使用这些键(没有硬编码值):

OZY_BASE_URL
OZY_CLIENT_ID
GRANT_TYPE
OZY_CLIENT_SECRET
OZY_SCOPE
SQL_SERVER
SQL_DATABASE
SQL_USER
SQL_SECRET
MCP_API_URL
WC_BASE_URL
WC_CONSUMER_KEY
WC_CONSUMER_SECRET
MCP_CHANNEL_TOKEN
MCP_STDIO_ENABLED
PORT

安全层(承载器令牌)

端点MCP HTTP验证 持有者代币 en-el标题 Authorization. 如果不发送或不匹配 MCP_CHANNEL_TOKEN,服务器响应 401未经授权.

标题示例:

Authorization: Bearer <MCP_CHANNEL_TOKEN>

注释 :

  • 在生产中,定义 MCP_CHANNEL_TOKEN 作为平台上的环境变量(例如,Azure Container应用程序)。
  • 没有令牌,终结点MCP不接受请求。

STDIO的MCP(检查员)

要启用/禁用STDIO传输:

MCP_STDIO_ENABLED=true   # default
MCP_STDIO_ENABLED=false  # deshabilita STDIO

SQL(随上随下)

server/src/services/sqlServices/db_utils.ts 查询表 ia.paradas_hopon:

  • 阅读专栏: id, nombre, descripcion, comuna, direccion
  • 查询主体: SELECT id, nombre, descripcion, comuna, direccion FROM ia.paradas_hopon ORDER BY id ASC;
  • Asociada工具: InfoHopOn 英语 server/src/index.ts

注释

  • MCP生态系统变化频繁;如果存在兼容性错误,请检查SDK更改。