返回市场
地图旅行者mcp

地图旅行者mcp

作者:mfukushim23 星标更新:2025-10-16

项目介绍

虚拟旅行机器人环境用于MCP

在MseeP验证 smithery徽章

英文 / 日语

这是一个创建虚拟旅行环境的MCP服务器,旅行者可以在Google地图上进行虚拟旅行。

从像Claude Desktop这样的MCP客户端,你可以给旅行者指令,并通过照片报告其旅程的进展。

<img alt="img_5.png" src="https://raw.githubusercontent.com/mfukushim/map-traveler-mcp/for_image/tools/img_5.png" width="400"/>

正在准备MCP注册支持 https://blog.modelcontextprotocol.io/posts/2025-09-08-mcp-registry-preview/

添加了gemini-2.5-flash-image-preview(nano-banana)来生成旅行图像

已添加对nano-banana的支持。Nano-banana的语义掩码允许你在短时间内生成复合旅行图像,而无需设置remBg。 虽然传统的图像合成仍然可能,但我们建议使用Gemini nano-banana。

同时支持Streamable-HTTP和stdio(符合Smithery.ai的配置接口)

它可以作为stdio类型的MCP使用,也可以作为Streamable-HTTP使用。 虽然它支持多用户,但必须通过Smithery.ai的配置接口为每个会话指定数据库API。 由于同时支持Streamable-HTTP和stdio,预计它与之前的MCP客户端兼容,但如果使用之前的stdio版本,请使用v0.0.x(v0.0.81)。 npx -y @mfukushim/map-traveler-mcp@0.0.81

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

现在支持Smithery https://smithery.ai/server/@mfukushim/map-traveler-mcp(因为运行起来很重,所以不包括图片)。

已经验证MseeP https://mseep.ai/app/mfukushim-map-traveler-mcp

功能

MCP服务器工具功能

以下功能可以作为MCP服务器使用。可用的功能取决于设置和执行状态。

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

示例: “你现在在哪里?” “让我们去东京站。”

  • get_traveler_view_info(includePhoto:boolean,includeNearbyFacilities:boolean) 获取当前旅行者的位置信息。
    • includePhoto: 获取附近的Google街景照片。如果你已经设置了图像生成AI,它会合成旅行者。
    • includeNearbyFacilities: 获取附近设施的信息。
  • get_traveler_location() 获取当前旅行者的地址和附近设施信息。
  • reach_a_percentage_of_destination() 达到目的地的指定百分比(仅moveMode=skip) timeElapsedPercentage: 到达目的地的进度百分比(0~100)
  • set_traveler_location(address: string) 设置当前旅行者的地点。
    • address: 地址信息(确切地址或Google地图或Claude可以识别的一般名称等)
  • get_traveler_destination_address 获取你设置的旅行者的目的地
  • set_traveler_destination_address(address: string) 设置旅行者的目的地
    • address: 地址信息(确切地址或Google地图或Claude可以识别的一般名称等)
  • start_traveler_journey 开始前往目的地的旅程。(仅moveMode=realtime)
  • stop_traveler_journey 停止旅程。(仅moveMode=realtime)
  • set_traveler_info(settings:string) 设置旅行者的属性。设置你想动态改变的旅行者个性,如姓名和个性。但是,如果使用角色脚本,脚本更稳定。
    • settings: 设置信息,如姓名和个性。
  • get_traveler_info 获取旅行者的属性。获取旅行者的个性。
  • set_avatar_prompt(prompt:string) 设置生成旅行者图像时的提示。默认是动漫风格的女性。强制执行动漫风格以防止伪造图像。
    • prompt
  • reset_avatar_prompt 将头像生成提示重置为默认值。
  • get_sns_feeds 获取指定自定义订阅的Bluesky SNS文章(包含特定标签的文章)。
  • get_sns_mentions 获取最近提到的Bluesky SNS帖子(你自己发布的帖子的喜欢和回复)。
  • post_sns_writer(message:string) 使用指定的自定义订阅向Bluesky SNS发布文章。设置一个特定的标签,以便确定该帖子是由旅行机器人生成的。
    • message: 文章
  • reply_sns_writer(message:string,id:string) 回复指定id的文章。设置一个特定的标签,以便确定该帖子是由旅行机器人生成的。
    • message: 回复
    • id: 要回复的帖子ID
  • add_like(id:string) 给指定的帖子点赞。
    • id: 要点赞的帖子ID
  • tips 指导如何设置尚未设置的功能。
  • get_setting 获取环境和图像设置。

MCP资源

有五个自定义提示样本。 当你用Claude Desktop导入提示时,Claude将扮演旅行者。 SNS兼容版本在进行旅行对话的同时控制SNS的输入和输出。

  • role.txt Claude将扮演旅行者。

  • roleWithSns.txt Claude将扮演旅行者。它还控制阅读和发布到SNS。

  • carBattle.txt 这是一个关于从横滨运输秘密文件到东京的小型小说游戏。场景会自动生成。设置moveMode=skip以开始游戏。

  • japanMapChallenge.txt,japanMapChallenge2.txt 两个AI通过SNS交流并使用景观图像玩挑战游戏。 要玩游戏,你需要两个Bluesky账户和两个Claude Desktop。还需要设置moveMode=skip。(然而,操作有些不稳定。) japanMapChallenge2有一个挑战反思规则。

设置

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

使用Claude Desktop的设置

  • claude_desktop_config.json (stdio类型)
{
  "mcpServers": {
    "traveler": {
      "command": "npx",
      "args": ["-y", "@mfukushim/map-traveler-mcp"],
      "env":{
        "MT_GOOGLE_MAP_KEY":"(Google Map API key)",
        "MT_GEMINI_IMAGE_KEY": "(Gemini Image Api key)",
        "MT_MAX_RETRY_GEMINI": "(生成Gemini图像时的重试次数 默认: 0)",
        "MT_AVATAR_IMAGE_URI": "(生成Gemini图像时的字符参考图像uri (file:// 或 https://)。可以通过'|'分隔多个设置。当有多个设置时,它们会被随机选择。)",
        "MT_MAP_API_URL": "(可选: 自定义地图API端点。示例: direction=https://xxxx,places=https://yyyy )",
        "MT_TIME_SCALE": "(可选: 实际道路上行驶时间的比例。默认 4)",
        "MT_SQLITE_PATH":"(数据库保存路径: 例如 %USERPROFILE%/Desktop/traveler.sqlite ,$HOME/traveler.sqlite )",
        "MT_TURSO_URL":"(Turso sqlite API URL)",
        "MT_TURSO_TOKEN":"(Turso sqlite API 访问令牌)",
        "MT_REMBG_PATH": "(安装的rembg cli的绝对路径)",
        "MT_REMBG_URL": "(rembg API URL)",
        "MT_REMBG_WO_KEY": "(withoutbg.com rembg API key)",
        "MT_PIXAI_KEY":"(pixAi API key)",
        "MT_SD_KEY":"(或Stability.ai图像生成API key",
        "MT_PIXAI_MODEL_ID": "(可选: pixAi ModelId,如果没有设置则使用默认模型 1648918127446573124 ",
        "MT_COMFY_URL": "(可选: 在指定URL处使用ComfyUI API生成图像。示例: http://192.168.1.100:8188)",
        "MT_COMFY_WORKFLOW_T2I": "(可选: 使用ComfyUI进行文本到图像时的API工作流文件路径。如果没有指定: assets/comfy/t2i_sample.json)",
        "MT_COMFY_WORKFLOW_I2I": "(可选: 使用ComfyUI进行图像到图像时的API工作流文件路径。如果没有指定: assets/comfy/i2i_sample.json)",
        "MT_COMFY_PARAMS": "(可选: 通过comfyUI API发送到工作流的变量值)",
        "MT_FIXED_MODEL_PROMPT": "(可选: 固定的头像生成提示。你将无法在对话中更改头像。)",
        "MT_BODY_AREA_RATIO": "(可选: 可接受的头像图像区域比例。默认 0.042)",
        "MT_BODY_HW_RATIO": "(可选: 可接受的头像图像纵横比。默认 1.5~2.3)",
        "MT_BODY_WINDOW_RATIO_W": "(可选: 头像合成窗口水平比例。默认 0.5)",
        "MT_BODY_WINDOW_RATIO_H": "(可选: 头像合成窗口纵横比。默认 0.75)",
        "MT_BS_ID":"(Bluesky sns注册地址)",
        "MT_BS_PASS":"(bluesky sns密码)",
        "MT_BS_HANDLE":"(bluesky sns用户名: 例如 xxxxxxxx.bsky.social )",
        "MT_FILTER_TOOLS": "(可选: 直接过滤要使用的工具。如果没有指定,则所有工具都可用。例如: tips,set_traveler_location)",
        "MT_MOVE_MODE": "(可选: 指定移动模式是否为实时或跳过。默认实时)",
        "MT_IMAGE_WIDTH": "(可选: 输出图像宽度(像素)。默认是512)",
        "MT_NO_IMAGE": "(可选: true = 不输出图像,未指定 = 如果可能则输出图像,默认是未指定)",
        "MT_NO_AVATAR": "(可选: true = 不叠加头像直接输出StreetView图像。未指定 = 叠加头像图像。默认是未指定。)",
        "MT_FEED_TAG": "(可选: 发布到SNS时指定的feed标签(#必需,至少15个字符) 默认是#geo_less_traveler)",
        "MT_MAX_SESSIONS": "(使用Streamable-http时的最大会话数)",
        "MT_SESSION_TTL_MS": "(使用Streamable-http时的会话TTL)",
        "MT_SERVICE_TTL_MS": "(使用Streamable-http时的服务TTL)"
      }
    }
  }
}
  • claude_desktop_config.json (streamable-http类型) 上述MT_环境变量应设置为运行map-traveler-mcp Web服务的服务器上的环境变量。
{
  "mcpServers": {
    "traveler": {
      "type": "streamable-http",
      "url": "https://(mcp服务器地址)/mcp?config=(base64 config json)"
    }
  }
}

base64 config json (Smithery.ai扩展) 通过将以下格式的json合并成单行字符串,转换为base64,并将其设置为(base64设置json),可以为每个用户会话覆盖不同的API和设置。 如果数据库没有设置base64 config json,它将在整个服务范围内共享(旅行者的位置将在数据库中共享并计为一个人)。 我们计划在MCP认证机制变得清晰一些后重新考虑为每个会话分配单独UserId的操作。

{
  "MT_GOOGLE_MAP_KEY": "xxxyyyzzz",
  "MT_GEMINI_IMAGE_KEY": "xxyyzz",
  "MT_MAX_RETRY_GEMINI": "1",
  "MT_AVATAR_IMAGE_URI": "file:///C:/Users/xxxx/Desktop/avatar.png",
  "MT_TURSO_URL": "libsql://xxxyyyzzz",
  "MT_TURSO_TOKEN": "abcdabcd",
  "MT_BS_ID": "xyxyxyxyx",
  "MT_BS_PASS": "1234xyz",
  "MT_BS_HANDLE": "aabbccdd",
  "MT_FILTER_TOOLS": "tips,set_traveler_location",
  "MT_MOVE_MODE": "direct",
  "MT_FEED_TAG": "#abcdefgabcdefgabcdefg"
}

(所有json值都可以省略) ↓ (json文本合并)

{"MT_GOOGLE_MAP_KEY": "xxxyyyzzz", "MT_GEMINI_IMAGE_KEY": "xxyyzz", "MT_MAX_RETRY_GEMINI": "1", "MT_AVATAR_IMAGE_URI": "file:///C:/Users/xxxx/Desktop/avatar.png", "MT_TURSO_URL": "libsql://xxxyyyzzz", "MT_TURSO_TOKEN": "abcdabcd", "MT_BS_ID": "xyxyxyxyx", "MT_BS_PASS": "1234xyz", "MT_BS_HANDLE": "aabbccdd", "MT_FILTER_TOOLS": "tips,set_traveler_location", "MT_MOVE_MODE": "direct", "MT_FEED_TAG": "#abcdefgabcdefgabcdefg"}

↓ (将base64版本设置为config=)

eyJNVF9HT09HTEVfTUFQX0tFWSI6ICJ4eHh5eXl6enoiLCAiTVRfR0VNSU5JX0lNQUdFX0tFWSI6ICJ4eHl5enoiLCAiTVRfTUFYX1JFVFJZX0dFTUlOSSI6ICIxIiwgIk1UX1RVUlNPX1VSTCI6ICJsaWJzcWw6Ly94eHh5eXl6enoiLCAiTVRfVFVSU09fVE9LRU4iOiAiYWJjZGFiY2QiLCAiTVRfQlNfSUQiOiAieHl4eXh5eHl4IiwgIk1UX0JTX1BBU1MiOiAiMTIzNHh5eiIsICJNVF9CU19IQU5ETEUiOiAiYWFiYmNjZGQiLCAiTVRfRklMVEVSX1RPT0xTIjogInRpcHMsc2V0X3RyYXZlbGVyX2xvY2F0aW9uIiwgIk1UX01PVkVfTU9ERSI6ICJkaXJlY3QiLCAiTVRfRkVFRF9UQUciOiAiI2FiY2RlZmdhYmNkZWZnYWJjZGVmZyJ9

注意:环境变量已被重命名为标准蛇形命名。MT_前缀是因为它们可能与其他环境变量一起使用,如在librechat中。旧的名字仍然可以使用以保持向后兼容性。

请设置以下三个凭证用于Google地图API。

  • Street View Static API
  • Places API (新)
  • Time Zone API
  • Directions API

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

如果你想使用图像生成AI,请设置pixAi_key或sd_key。你还需要在PC上安装python3.7~3.11并安装rembg cli(推荐使用虚拟环境)。

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。如果不起作用,请参阅下面的注意事项)。确保屏幕右下角出现以下标记。
<img alt="img_1.png" src="https://raw.githubusercontent.com/mfukushim/map-traveler-mcp/for_image/tools/img_1.png" width="150"/>
  1. 询问“你现在在哪里?”和“开始旅行。”对话将开始。使用API时会出现确认屏幕,因此请选择允许。
<img alt="img_4.png" src="https://raw.githubusercontent.com/mfukushim/map-traveler-mcp/for_image/tools/img_4.png" width="200"/>
  1. 从MCP中选择附加项并选择role.txt。
<img alt="img_2.png" src="https://gips3.baidu.com/it/u=1618256827,3277960280&fm=3081&app=3081&f=PNG?w=266&h=152" width="200"/> <img alt="img_3.png" src="https://gips3.baidu.com/it/u=4210929862,4032841799&fm=3081&app=3081&f=PNG?w=462&h=340" width="200"/>
  1. 已内置旅行提示,因此可以自由与其交谈。

使用全部功能

  1. 获取Google地图API访问密钥,并为Street View Static API、Places API(新)、Time Zone API和Directions API设置权限。在claude_desktop_config.json的env中设置此值并重启。 此时,旅行记录将基于实际地图。如果未叠加,也会输出旅行图像。
  2. 决定一个不会干扰磁盘的路径,并在claude_desktop_config.json的env中的sqlite_path