英文 / 日语
这是一个创建虚拟旅行环境的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(因为运行起来很重,所以不包括图片)。
以下功能可以作为MCP服务器使用。可用的功能取决于设置和执行状态。
可以直接指定函数名称,但Claude LLM会自动识别它,因此可以用一般术语指定操作。
示例: “你现在在哪里?” “让我们去东京站。”
有五个自定义提示样本。 当你用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可能会产生费用。
{
"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)"
}
}
}
}
{
"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。
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地址/密码是可选的。建议创建一个专用帐户,因为它会自动发布。
你也可以在练习模式下运行,这不需要API密钥进行验证。
claude_desktop_config.json
{
"mcpServers": {
"traveler": {
"command": "npx",
"args": ["-y", "@mfukushim/map-traveler-mcp"]
}
}
}