Map Traveler MCP

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Enables reading from custom feeds, getting mentions, posting articles, replying to posts, and adding likes to content on Bluesky SNS

  • Provides virtual travel capabilities including location setting, navigation, journey planning, and retrieving information about destinations and nearby facilities

  • Retrieves Street View photos of locations which can be combined with generated avatars to create immersive travel imagery

MCP 的虚拟旅行机器人环境

英语 /日语

这是一个 MCP 服务器,它为虚拟形象在 Google 地图上虚拟旅行创造了一个环境。

从 Claude Desktop 等 MCP 客户端,您可以向头像发出指令并通过照片报告其旅程的进度。

现在支持 librechat https://www.librechat.ai/

功能

MCP 服务器工具功能

以下功能可用作 MCP 服务器。可用的功能根据设置和执行状态而有所不同。

您可以直接指定函数名称,但 Claude LLM 会自动识别它,因此您可以用通用术语指定操作。

例如:“你现在在哪里?”“我们出发去东京站吧。”

  • 获取旅行者视图信息(包括照片:布尔值,包括附近设施:布尔值)
    获取有关当前旅行头像位置的信息。
    • includePhoto:获取附近的谷歌街景照片。如果你设置了图像生成 AI,它会合成头像。
    • includeNearbyFacilities:获取有关附近设施的信息。
  • 获取旅行者位置()
    获取当前旅行头像的地址和附近设施的信息。
  • reach_a_percentage_of_destination() 到达目的地的指定百分比(moveMode=skip only)timeElapsedPercentage:到达目的地的进度百分比(0~100)
  • 设置旅行者位置(地址:字符串)
    设置当前旅行头像的位置。
    • address:地址信息(确切的地址,或者Google Maps或Claude可以识别的通用名称等)
  • 获取旅行者目的地地址
    获取你设置的旅行头像的目的地
  • 设置旅行者目的地地址(地址:字符串)
    设置旅行头像的目的地
    • address:地址信息(确切的地址,或者Google Maps或Claude可以识别的通用名称等)
  • 开始旅行者之旅
    从目的地开始旅程。(仅限 moveMode=realtime)
  • 停止旅行者旅程
    停止旅程。(moveMode=realtime only)
  • 设置旅行者信息(设置:字符串)
    设置旅行者的属性。设置旅行者想要动态更改的个性,例如姓名和性格。但是,如果使用角色脚本,脚本会更稳定。
    • 设置:设置姓名、个性等信息。
  • 获取旅行者信息
    获取旅行者的属性。获取旅行者的个性。
  • 设置头像提示(提示:字符串)
    设置生成旅行头像时的提示。默认为动漫风格女性。强制使用动漫风格,以防止出现虚假图像。
    • 迅速的
  • reset_avatar_prompt
    将头像生成提示重置为默认值。
  • 获取snsfeeds
    获取指定自定义 feed(包含特定标签的 feed)的 Bluesky SNS 文章。
  • 获取sns提及信息
    获取您自己发布的 Bluesky SNS 帖子的最近提及(喜欢、回复)。
  • post_sns_writer(消息:字符串)
    使用指定的自定义 feed 将文章发布到 Bluesky SNS。设置特定标签,以便确定该帖子是由旅行机器人生成的。
    • 消息:文章
  • reply_sns_writer(消息:字符串,id:字符串)
    回复指定 ID 的文章。设置特定标签,以便确定该帖子是由旅行机器人生成的。
    • 消息:回复
    • id:要回复的帖子的ID
  • 添加_like(id:字符串)
    为指定帖子点赞。
    • id:要点赞的帖子的 ID
  • 尖端
    指导您如何设置尚未设置的功能。
  • 获取设置
    获取环境和图像设置。

MCP 资源

包含五个自定义提示示例。使用 Claude Desktop 导入提示时,Claude 将扮演旅行者。SNS 兼容版本可在旅行对话过程中控制 SNS 的输入和输出。

  • 角色.txt
    克劳德将扮演一名旅行者。
  • roleWithSns.txt
    克劳德将扮演旅行者的角色。它还控制着阅读和发布到SNS的内容。
  • 赛车大战.txt
    这是一款关于从横滨运送机密文件到东京的小说小游戏。场景自动生成。设置 moveMode=skip 即可开始游戏。
  • japanMapChallenge.txt,japanMapChallenge2.txt
    两个人工智能通过SNS相互交流,并使用风景图像玩挑战游戏。
    要进行游戏,您需要两个 Bluesky 帐户和两台 Claude Desktop。同时设置 moveMode=skip。(不过,游戏运行可能不太稳定。)
    japanMapChallenge2 有一个挑战反映规则。

环境

您需要获取并设置多个 API 的访问密钥,例如访问多个 Google 地图和生成图片。使用这些 API 可能会产生费用。

与 Claude Desktop 一起使用的设置

claude_desktop_config.json

{ "mcpServers": { "traveler": { "command": "npx", "args": ["-y", "@mfukushim/map-traveler-mcp"], "env":{ "MT_GOOGLE_MAP_KEY":"(Google Map API key)", "MT_MAP_API_URL": "(Optional: Map API custom endpoint. Example: direction=https://xxxx,places=https://yyyy )", "MT_TIME_SCALE": "(Optional:Scale of travel time on real roads duration. default 4)", "MT_SQLITE_PATH":"(db save path: e.g. %USERPROFILE%/Desktop/traveler.sqlite ,$HOME/traveler.sqlite )", "MT_REMBG_PATH": "(absolute path of the installed rembg cli)", "MT_REMBG_URL": "(rembg API URL)", "MT_PIXAI_KEY":"(pixAi API key)", "MT_SD_KEY":"(or Stability.ai image generation API key", "MT_PIXAI_MODEL_ID": "(Optional: pixAi ModelId, if not set use default model 1648918127446573124 ", "MT_COMFY_URL": "(Option: Generate image using ComfyUI API at specified URL. Example: http://192.168.1.100:8188)", "MT_COMFY_WORKFLOW_T2I": "(Optional: Path to API workflow file when using text to image with ComfyUI. If not specified: assets/comfy/t2i_sample.json)", "MT_COMFY_WORKFLOW_I2I": "(Optional: Path of API workflow file when image to image in ComfyUI. If not specified: assets/comfy/i2i_sample.json)", "MT_COMFY_PARAMS": "(Optional: Variable values to send to the workflow via comfyUI API)", "MT_FIXED_MODEL_PROMPT": "(Optional: Fixed avatar generation prompt. You will no longer be able to change your avatar during conversations.)", "MT_BODY_AREA_RATIO": "(Optional: Acceptable avatar image area ratio. default 0.042)", "MT_BODY_HW_RATIO": "(Optional: Acceptable avatar image aspect ratios. default 1.5~2.3)", "MT_BODY_WINDOW_RATIO_W": "(Optional: Avatar composite window horizontal ratio. default 0.5)", "MT_BODY_WINDOW_RATIO_H": "(Optional: Avatar composite window aspect ratio. default 0.75)", "MT_BS_ID":"(Bluesky sns registration address)", "MT_BS_PASS":"(bluesky sns password)", "MT_BS_HANDLE":"(bluesky sns handle name: e.g. xxxxxxxx.bsky.social )", "MT_FILTER_TOOLS": "(Optional: Directly filter the tools to be used. All are available if not specified. e.g. tips,set_traveler_location)", "MT_MOVE_MODE": "(Option: Specify whether the movement mode is realtime or skip. default realtime)", "MT_IMAGE_WIDTH": "(Option: Output image width (pixels) Default is 512)", "MT_NO_IMAGE": "(Options: true = do not output image, not specified = output image if possible, default is not specified)", "MT_FEED_TAG": "(Optional: Specify the feed tag when posting to SNS (#required, 15 characters or more) Default is #geo_less_traveler)" } } } }

注意:环境变量已重命名为标准蛇形命名法。添加 MT_ 前缀是因为它们可能与其他环境变量(例如在 librechat 中)一起使用。旧名称仍可用于向后兼容。

请为 Google Map API 设置以下三个凭据。

  • 街景静态 API
  • 地点 API(新)
  • 时区 API
  • 路线 API

https://developers.google.com/maps/documentation/streetview/get-api-key

如需使用图像生成 AI,请设置 pixAi_key 或 sd_key。此外,您的电脑需要安装 python3.7~3.11 版本以及 rembg 命令行工具(建议使用虚拟环境)。

https://platform.pixai.art/docs\ https://platform.stability.ai/docs/api-reference#tag/SDXL-1.0-and-SD1.6/operation/textToImage

Bluesky SNS 地址/密码为可选。建议您创建一个专用帐户,因为它会自动发布帖子。

https://bsky.app/

您还可以在练习模式下运行它,这不需要 API 密钥进行验证。

练习模式设置

claude_desktop_config.json

{ "mcpServers": { "traveler": { "command": "npx", "args": ["-y", "@mfukushim/map-traveler-mcp"] } } }

如何使用

使用练习模式

  1. 安装 nodejs 22。
  2. 设置 Claude Desktop 以供使用。
  3. 在 claude_desktop_config.json 中反映上述设置之一。
  4. 重启 Claude Desktop。设置可能需要一些时间(如果出现错误,请尝试再次重启 Claude Desktop。如果仍然无效,请参阅以下说明)。确保屏幕右下角出现以下标记。
  5. 询问“你现在在哪里?”和“去旅行吧”。对话将开始。使用 API 时,将出现确认屏幕,因此请选择“允许”。
  6. 选择从 MCP 附加并选择 role.txt。
  7. 已内置旅行提示,请随意与其交谈。

使用完整功能

  1. 获取 Google 地图 API 访问密钥,并设置街景静态 API、地点 API(新)、时区 API 和路线 API 的权限。在 claude_desktop_config.json 的环境中设置这些权限,然后重启。此时,行程日志将基于真实地图。行程图像(如果未叠加)也会输出。
  2. 确定一个不会干扰磁盘的路径,并将其设置在 claude_desktop_config.json 的 env 文件的 sqlite_path 中。(例如:%USERPROFILE%/Desktop/traveler.sqlite 或 $HOME/Documents/traveler.sqlite 等)此时,您的旅行日志将被保存,即使您关闭 Claude Desktop,也可以继续您的旅程。
  3. 安装 Python 3.7 到 3.11,并使用 cli 安装 rembg。建议使用 venv 等虚拟环境。
python3 -m venv venv . venv/bin/activate or .\venv\Scripts\activate pip install "rembg[cpu,cli]"

使用示例图像文件检查 rembg cli 是否正常工作。输入一张包含人物的图像,如果输出文件中人物被裁剪掉,则表示正常。

rembg i source_image_file dest_image_file
  1. rembg cli 将安装在 python exe 位置,因此请获取路径。文件位置因操作系统和 python 安装状态而异,但对于 venv,它位于您设置的目录上方的(虚拟环境名称)\Scripts\rembg.exe 或(虚拟环境名称)/bin/rembg。如果找不到,请使用文件搜索软件搜索路径。将该路径设置为 claude_desktop_config.json 中 env 的 rembg_path。(例如:“rembg_path”:“C:\Users\xxxx\Documents\rembg_venv\venv\Scripts\rembg.exe”)
  2. 从 pixAI 或 Stability.ai 网站获取图像生成 API 密钥。在 claude_desktop_config.json 的 env 文件中,将密钥设置为 pixAi_key 或 sd_key。现在,头像将叠加在旅行图片上。
  3. 获取 Bluesky 的 SNS 地址/密码以及句柄名称。分别在 claude_desktop_config.json 的 env 文件中的 bs_id、bs_pass 和 bs_handle 中设置这些值。导入旅行知识提示 roleWithSns.txt 文件,将旅行活动报告给 SNS(它会以机器人身份自动发布,因此我们建议分配一个专用帐户)

我们添加了一个设置,允许您将 rembg 作为服务 API 来处理,而不是使用 cli 来准备 rembg。
如果配置了如下的rembg服务,则可以通过设置remBgUrl中的URL来使用rembg。

https://github.com/danielgatis/rembg?tab=readme-ov-file#rembg-s

如果您使用 Docker 版本启动容器并访问它,则设置很简单。

https://github.com/danielgatis/rembg?tab=readme-ov-file#usage-as-a-docker

使用外部 ComfyUI 时(适用于更高级的用户)

您也可以使用本地的 ComfyUI 作为图片生成服务器,并可自行详细配置图片生成特性,降低 API 成本。

但是,配置会相当复杂,并且图像生成可能需要更长的时间。

  1. 配置 ComfyUI 以 API 模式运行。
  2. 在 env 中将服务器 URL 设置为 comfy_url。
  3. 以json字符串的形式设置env中要使用的模型等详细的配置值。示例。
{ "env": { "comfy_url": "http://192.168.1.100:8188", "comfy_workflow_t2i": "C:\\Documents\\t2itest.json", "comfy_workflow_i2i":"C:\\Documents\\i2itest.json", "comfy_params":"ckpt_name='animagineXL40_v40.safetensors',denoise=0.65" } }
  1. 默认工作流可以使用包中的 assets/comfy/t2i_sample.json 和 assets/comfy/i2i_sample.json 文件。您可以使用 % 指定变量,并在 comfy_params 中指定变量。

使用 libreChat

它已适配 libreChat。这使其更易于使用,但需要进行一些额外的设置。
此外,除非您使用的 PC 具有相当好的性能,例如可以稳定运行 Docker 的 PC,否则它似乎不会稳定。

安装 libreChat

请确保它按照官方网站的描述运行。
在这种情况下,由于需要额外的设置,我们建议使用 Docker 配置。

https://www.librechat.ai/docs/local/docker

使用官方程序配置librechat.yaml。
我认为您需要添加本地或 API LLM 服务。

https://www.librechat.ai/docs/configuration/librechat\_yaml

添加用户进行登录。

https://www.librechat.ai/docs/configuration/authentication#create-user-script

请进行设置以便您可以进行一般聊天对话。

添加具有附加设置的 rembg 容器

要将 rembg 与 Docker 一起使用,请添加拉取并运行 rembg Docker 容器。

docker-compose.override.yml

services: api: volumes: - type: bind source: ./librechat.yaml target: /app/librechat.yaml rembg: image: danielgatis/rembg:latest restart: always command: "s --host 0.0.0.0 --port 7000 --log_level info"

将 map-traveler-mcp 添加到 MCP 服务

添加 librechat.yaml

mcpServers: traveler: type: stdio command: npx args: - -y - "@mfukushim/map-traveler-mcp"

添加 .env(与 claude_desktop_config.json 中的 env 相同)

# map-traveler-mcp GoogleMapApi_key=(Google Map API key) sqlite_path=/home/run_test.sqlite (e.g. librechat in an unobtrusive location inside the container, or in an external directory that you don't want to mount.) remBgUrl=http://rembg:7000 (rembg Service API URL, container URL) (Other settings such as image generation AI settings, PixAI key, stability.ai API key, ComfyUI settings, etc.)

设置完成后重启容器。
在速度较慢的电脑上,mcp 初始化可能会失败。多次重启或许有效,但这可能比较困难……

llibreChat 设置

要在 libreChat 中使用 MCP 功能,请使用代理功能。

  1. 在对话屏幕上,选择“代理”。
  2. 从屏幕右侧的面板中选择 Agent Builder 并配置您的代理。\
  3. 选择添加工具以使用 map-traveler。\
  4. 代理工具屏幕将会出现,因此选择并添加所有 map-traveler-mcp 工具(如果未列出 map-traveler-mcp 工具,则 MCP 初始化失败,因此请重新启动容器或通过检查日志等来检查设置)\ \
  5. 在指令区域输入附加脚本。
    由于 libreChat 没有 MCP 资源功能,因此请将以下 URL 的内容文本输入到说明区域。
    https://github.com/mfukushim/map-traveler-mcp/blob/main/assets/scenario/role.txt\
  6. 单击“创建”按钮保存代理。\
  7. 开始新的聊天。

安装指南(日语,但有很多图片)

  1. 介绍和练习模式
    https://note.com/marble\_walkers/n/n7a8f79e4fb30
  2. 数据库、谷歌地图 API、图像生成 API
    https://note.com/marble\_walkers/n/n765257c27f3b
  3. 头像提示
    https://note.com/marble\_walkers/n/nc7273724faea
  4. SNS 集成
    https://note.com/marble\_walkers/n/na7c956befe7b
  5. 应用 1
    https://note.com/marble\_walkers/n/n3c86edd8e817
  6. ComfyUI API
    https://note.com/marble\_walkers/n/ncefc7c05d102
  7. 应用 2
    https://note.com/marble\_walkers/n/ne7584ed231c8
  8. LibreChat 设置
    https://note.com/marble\_walkers/n/n339bf7905324

关于源代码的补充

我使用 Effect.ts 来简化错误管理和用于我自己的学习。
我们也使用效果服务,但由于 MCP 调用的工作方式,我们认为使用该服务进行整合并不是最佳选择。
我认为直接在 Effect 中处理 MCP 调用会更简单。

最新更新说明

在 env 中添加了 image_width。默认值为 512。将其设置得较小可能会降低 LLM API 的成本。
对于没有图像输入/输出的 MCP 客户端,添加了不输出图像的环境设置。
"MT_NO_IMAGE": true 表示不生成或输出任何图像。其他与图像相关的设置可以省略。

{ "env": { "MT_NO_IMAGE": "true" } } or { "env": { "GoogleMapApi_key": "xxxx", "MT_NO_IMAGE": "true" } }

您现在可以指定在 SNS(Bluesky)上发布时添加的标签名称。#必填,且必须至少包含 15 个字符。如果未指定,则将变为“#geo_less_traveler”。
从SNS获取的信息略有更改。发布到SNS的信息略有更改。
添加了允许多个旅行机器人通过 SNS 进行对话和玩耍的脚本。

ID: fiup8wlcdc