Map Traveler MCP
MCP向け仮想移動ボット環境
英語 /日本語
Google マップ上をアバターが仮想的に移動できる環境を構築する MCP サーバーです。
Claude Desktop などの MCP クライアントから、アバターに指示を与え、その移動の進行状況を写真付きで報告することができます。
librechat https://www.librechat.ai/ をサポートするようになりました。
機能
MCPサーバーツール機能
MCPサーバーとして以下の機能が利用可能です。設定や実行状態によって利用可能な機能が異なります。
関数名を直接指定することもできますが、Claude LLM が自動的に認識するため、一般的な用語で操作を指定できます。
例:「今どこにいるの?」「東京駅へ出発しましょう。」
get_traveler_view_info(写真を含める:boolean、近隣施設を含める:boolean)
現在の旅行アバターの位置に関する情報を取得します。includePhoto: 近くのGoogleストリートビュー写真を取得します。画像生成AIを設定している場合は、アバターが合成されます。
includeNearbyFacilities: 近くの施設に関する情報を取得します。
get_traveler_location()
現在の旅行アバターの住所と近くの施設に関する情報を取得します。reach_a_percentage_of_destination() 目的地の指定された割合に到達する(moveMode=skipのみ) timeElapsedPercentage: 目的地までの進行率(0〜100)
set_traveler_location(アドレス: 文字列)
現在の旅行アバターの位置を設定します。address: 住所情報(正確な住所、または Google マップや Claude が認識できる一般的な名前など)
旅行者の目的地住所を取得する
設定した旅行アバターの目的地を取得しますset_traveler_destination_address(アドレス: 文字列)
旅行アバターの目的地を設定するaddress: 住所情報(正確な住所、または Google マップや Claude が認識できる一般的な名前など)
旅の始まり
目的地から旅を始めます。(moveMode=realtime のみ)旅行者の旅を止める
旅を止めてください。(moveMode=realtime のみ)set_traveler_info(設定:文字列)
旅行者の属性を設定します。名前や性格など、動的に変更したい旅行者の性格を設定します。ただし、ロールスクリプトを使用すると、スクリプトはより安定します。設定:名前や性格などの設定情報。
旅行者情報を取得する
旅行者の属性を把握し、旅行者の性格を把握します。set_avatar_prompt(プロンプト:文字列)
旅行用アバター画像を生成する際のプロンプトを設定します。デフォルトはアニメ風の女性です。偽の画像を防ぐために、アニメ風が強制されます。プロンプト
アバターのリセットプロンプト
アバター生成プロンプトをデフォルトにリセットします。SNSフィードを取得する
指定されたカスタム フィード (特定のタグを含むフィード) の Bluesky SNS 記事を取得します。SNSメンションを取得する
自分が作成した Bluesky SNS 投稿への最近のメンション (いいね、返信) を取得します。post_sns_writer(メッセージ:文字列)
指定されたカスタムフィードを使用して、Bluesky SNSに記事を投稿します。旅行ボットによって生成された投稿であることが判別できるように、特定のタグを設定します。メッセージ: 記事
reply_sns_writer(メッセージ:文字列,ID:文字列)
指定されたIDの記事に返信します。投稿が旅行ボットによって生成されたものであることが判別できるように、特定のタグを設定します。メッセージ: 返信
id: 返信する投稿のID
add_like(id:文字列)
指定された投稿に「いいね!」を追加します。id: いいねする投稿のID
ヒント
まだ設定されていない機能を設定する方法についてガイドします。設定を取得する
環境と画像の設定を取得します。
MCPリソース
5つのカスタムプロンプトサンプルがあります。Claude Desktopでプロンプトをインポートすると、Claudeが旅行者として機能します。SNS対応バージョンでは、旅行中の会話中にSNSの入出力を制御します。
役割.txt
クロードは旅行者として行動します。roleWithSns.txt
クロードは旅行者として機能します。また、SNSの閲覧や投稿も制御します。carBattle.txt
横浜から東京へ秘密文書を輸送する物語を描いた、ちょっとしたノベルゲームです。シーンは自動生成されます。moveMode=skip でプレイできます。japanMapChallenge.txt、japanMapChallenge2.txt
2つのAIがSNSでコミュニケーションを取りながら、風景画像を使ったチャレンジゲームをプレイします。
プレイするには、Blueskyアカウント2つとClaudeデスクトップ2台が必要です。また、moveMode=skipに設定してください。(ただし、動作がやや不安定です。)
japanMapChallenge2にはチャレンジ反映ルールがあります。
Related MCP server: Travel Assistant MCP Server
設定
複数のGoogleマップへのアクセスや画像生成など、複数のAPIごとにアクセスキーを取得して設定する必要があります。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)"
}
}
}
}注:環境変数の名前は標準的なスネークケースに変更されました。librechatなど、他の環境変数と組み合わせて使用される可能性があるため、「MT_」という接頭辞が追加されています。下位互換性のため、以前の名前も引き続き使用できます。
Google Map API の以下の 3 つの認証情報を設定してください。
ストリートビュー静的API
プレイス API(新規)
タイムゾーンAPI
ルート案内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"]
}
}
}使い方
練習モードを使う
nodejs 22 をインストールします。
Claude Desktop を使用できるように設定します。
上記の設定のいずれかを claude_desktop_config.json に反映します。
Claude Desktopを再起動してください。セットアップには時間がかかる場合があります(エラーが発生した場合は、Claude Desktopを再度再起動してください。それでも解決しない場合は、以下の注意事項を参照してください)。画面右下に以下のマークが表示されていることを確認してください。
「今どこにいるの?」「旅に出よう」と話しかけると会話が始まります。API利用時は確認画面が表示されるので、「許可」を選択してください。
MCP から添付を選択し、role.txt を選択します。
旅行プロンプトが組み込まれているので、気軽に話しかけてください。
フル機能を使用する
Google Map APIのアクセスキーを取得し、Street View Static API、Places API(新規)、Time Zone API、Directions APIの権限を設定します。これをclaude_desktop_config.jsonのenvに設定し、再起動してください。この時点で、走行ログは実際の地図に基づいて表示されます。重ね合わせていない場合は、走行画像も出力されます。
ディスクに干渉しないパスを決め、claude_desktop_config.json の env の sqlite_path に設定してください。(例: %USERPROFILE%/Desktop/traveler.sqlite $HOME/Documents/traveler.sqlite など) この時点で、移動ログが保存され、Claude Desktop を閉じても移動を続けることができます。
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_filerembg cli は python exe の場所にインストールされるので、パスを取得してください。ファイルの場所は OS や 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")
pixAIまたはStability.aiのサイトから画像生成APIキーを取得します。claude_desktop_config.jsonのenvファイルで、pixAi_keyまたはsd_keyにキーを設定します。これで、アバターが旅行画像にオーバーレイされます。
BlueskyのSNSアドレス/パスワードとハンドルネームを取得します。claude_desktop_config.jsonのenvファイルにあるbs_id、bs_pass、bs_handleにそれぞれ設定します。旅行に関する行動をSNSに報告するために、旅行情報プロンプトroleWithSns.txtをインポートします(自動的にボットとして投稿されるため、専用のアカウントを用意することをお勧めします)。
rembg を cli で準備する代わりに、rembg をサービス API として処理できるようにする設定を追加しました。
下記の 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コストを削減できます。
ただし、構成が非常に複雑になり、イメージの生成に時間がかかる可能性があります。
ComfyUI を API モードで実行するように構成します。
env でサーバーの URL を comfy_url に設定します。
env で使用するモデルなどの詳細な設定値を json 文字列の形式で設定します。例。
{
"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"
}
}デフォルトのワークフローでは、パッケージ内の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コンテナを追加する
Docker で rembg を使用するには、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"
MCPサービスにmap-traveler-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.)
設定後、コンテナを再起動します。
低速なPCでは、mcpの初期化に失敗する場合があります。複数回の再起動で解決する場合もありますが、実行が困難になる場合があります。
llibreChat設定
libreChat で MCP 機能を使用するには、エージェント機能を使用します。
会話画面で、「エージェント」を選択します。
画面の右側のパネルから Agent Builder を選択し、エージェントを構成します。
map-traveler を使用するには、[ツールの追加] を選択します。
エージェントツール画面が表示されるので、map-traveler-mcpツールをすべて選択して追加します(map-traveler-mcpツールがリストされていない場合は、MCPの初期化に失敗していますので、コンテナを再起動するか、ログなどを確認して設定を見直してください)。
指示領域に追加のスクリプトを入力します。
libreChat には MCP リソース機能がないため、代わりに次の URL の内容テキストを指示エリアに入力します。
https://github.com/mFukushim/map-traveler-mcp/blob/main/assets/scenario/role.txt\エージェントを保存するには、「作成」ボタンをクリックします。
新しいチャットを開始します。
インストールガイド(日本語ですが写真多数)
DB、Google Map API、画像生成API
https://note.com/marble\_walkers/n/n765257c27f3bLibreChatの設定
https://note.com/marble\_walkers/n/n339bf7905324
ソースコードに関する追加情報
エラー管理を簡素化し、自分自身の学習のために Effect.ts を使用しています。
当社ではエフェクト サービスも使用していますが、MCP 呼び出しの仕組み上、このサービスを使用して統合するのは最適ではないと考えています。
MCP 呼び出しをエフェクト内で直接処理する方が簡単だと思います。
最新のアップデートに関するメモ
envにimage_widthを追加しました。デフォルトは512です。これを小さく設定するとLLM APIのコストが削減される可能性があります。
画像入出力を持たない MCP クライアントに対して画像を出力しない env 設定を追加しました。
"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経由で会話して遊ぶことができるスクリプトを追加しました。
Available Tools
8 toolsget_settingGet the current settingDInspect
Get current setting
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. However, it offers no information about traits such as whether this is a read-only operation, if it requires authentication, potential rate limits, or what the return format might be. This is inadequate for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise ('Get current setting'), which could be seen as efficient. However, it's under-specified rather than appropriately sized, failing to provide necessary context. It's front-loaded but lacks substance, making it borderline between conciseness and insufficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what 'setting' refers to, what data is returned, or how this tool fits into the context of sibling tools (e.g., traveler-related operations). For a tool with no structured data support, the description fails to provide essential context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and the schema description coverage is 100%, so there are no parameters to document. The description doesn't need to add parameter semantics, and it doesn't introduce any confusion. A baseline score of 4 is appropriate as the schema fully handles the parameter aspect.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get current setting' is a tautology that merely restates the tool name and title without adding specificity. It doesn't clarify what type of setting (e.g., system, user, application) or which resource it retrieves, nor does it distinguish this tool from its siblings like 'get_traveler_info' or 'get_traveler_location'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any context, prerequisites, or exclusions, leaving the agent with no information to decide between this tool and sibling tools like 'get_traveler_info' or 'set_traveler_info'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_traveler_infoGet the traveler's preferences (optional).CInspect
get a traveler's setting.For example, traveler's name, the language traveler speak, Personality and speaking habits, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| settings | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden but only mentions what data is retrieved without disclosing behavioral traits like permissions needed, rate limits, or response format. It lacks details on whether this is a read-only operation or has other constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded, using a single sentence with examples to convey the purpose efficiently. However, it could be more structured by explicitly stating the tool's scope or limitations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 1 undocumented parameter, no annotations, and no output schema, the description is incomplete. It provides basic purpose but lacks details on parameters, behavior, and output, making it inadequate for effective tool use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 1 parameter with 0% description coverage, and the tool description does not explain the 'settings' parameter at all. It fails to add any meaning beyond the schema, leaving the parameter undocumented and unclear in usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool retrieves a traveler's settings with examples (name, language, personality), which clarifies the purpose beyond the name. However, it doesn't differentiate from sibling tools like 'get_setting' or 'get_traveler_view_info', making it somewhat vague in comparison.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as 'get_setting' or 'get_traveler_view_info'. The description only lists examples of what it retrieves, offering no context for selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_traveler_locationGet the traveler's current locationBInspect
Get the address of the current traveler's location
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states what the tool does but doesn't reveal any behavioral traits such as permissions needed, rate limits, whether the location is real-time or cached, or what happens if no traveler exists. This is inadequate for a tool that likely involves sensitive location data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without any fluff. It's front-loaded and wastes no words, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of location data (potentially sensitive) and the lack of annotations and output schema, the description is incomplete. It doesn't explain what the output looks like (e.g., address format, coordinates), error conditions, or behavioral context, leaving significant gaps for the agent to operate effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description doesn't add parameter details, which is appropriate here, but it could briefly note the lack of inputs for clarity. A baseline of 4 is given as it meets the requirement for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('address of the current traveler's location'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'get_traveler_info' or 'get_traveler_view_info', which might also provide location-related information, so it doesn't achieve full sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'get_traveler_info' or 'get_traveler_view_info'. It lacks context about prerequisites, timing, or exclusions, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_traveler_view_infoGet the current location's viewCInspect
Get the address of the current traveler's location and information on nearby facilities,view snapshot
| Name | Required | Description | Default |
|---|---|---|---|
| includeNearbyFacilities | No | Get information on nearby facilities | |
| includePhoto | No | Get scenery photos of current location |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It describes what information is retrieved but lacks details on permissions, rate limits, data freshness, or error handling. For a tool that accesses location and facility data, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, stating the core purpose in a single sentence. However, the phrase 'view snapshot' is ambiguous and could be clarified, slightly reducing efficiency. Overall, it's appropriately sized with minimal waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (retrieving location and facility data), no annotations, and no output schema, the description is minimally adequate. It covers the basic purpose but lacks details on behavioral aspects and output format, which are important for effective use by an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with clear descriptions for both parameters ('includeNearbyFacilities' and 'includePhoto'). The description mentions 'information on nearby facilities' and 'view snapshot', which align with the parameters but don't add significant meaning beyond what the schema provides. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get the address of the current traveler's location and information on nearby facilities, view snapshot'. This specifies the verb ('Get') and resources (address, nearby facilities, view snapshot). However, it doesn't explicitly distinguish this tool from sibling tools like 'get_traveler_location' or 'get_traveler_info', which appear related to traveler data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools or clarify the context for selecting this specific tool over others like 'get_traveler_location' or 'get_traveler_info', leaving usage ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_traveler_infoSet the traveler's preferences (optional).CInspect
set a traveler's setting.For example, traveler's name, the language traveler speak, Personality and speaking habits, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| settings | Yes | traveler's setting. traveler's name, the language traveler speak, etc. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a mutation operation ('set'), but doesn't specify whether this requires permissions, if changes are reversible, what happens to existing settings, or any rate limits. The description adds minimal context beyond the basic action, failing to address key behavioral traits for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with the core action ('set a traveler's setting'), followed by illustrative examples. It avoids unnecessary elaboration, though the use of 'etc.' and minor grammatical issues ('traveler's name, the language traveler speak') slightly reduce clarity. Overall, it's efficient with minimal waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's mutation nature, lack of annotations, and no output schema, the description is insufficiently complete. It doesn't cover behavioral aspects like permissions, reversibility, or response format, and while the parameter is documented in the schema, the description doesn't compensate for the missing context needed for safe and effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with the parameter 'settings' documented as 'traveler's setting. traveler's name, the language traveler speak, etc.' The description adds examples ('traveler's name, the language traveler speak, Personality and speaking habits, etc.') that align with the schema but don't provide additional syntax, format, or constraints beyond what's already in the schema. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool's purpose ('set a traveler's setting') and provides examples ('traveler's name, the language traveler speak, Personality and speaking habits'), which clarifies the resource and scope. However, it doesn't explicitly differentiate from siblings like 'get_traveler_info' or 'get_setting', and the phrasing is somewhat vague with 'etc.' leaving some ambiguity about the full range of settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives, such as how it differs from sibling tools like 'get_traveler_info' or 'get_setting'. It lacks explicit context, prerequisites, or exclusions, leaving the agent to infer usage based on the tool name and examples alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_traveler_journeyStart the journeyCInspect
Start the traveler's journey to destination
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the action ('Start') but doesn't disclose behavioral traits such as whether this is a mutation, what permissions are needed, if it's idempotent, or what happens if a journey is already in progress. This leaves significant gaps for a tool that likely changes state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that directly states the tool's action. It's appropriately sized for a simple tool with no parameters, though it could be slightly more informative without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete. It doesn't explain what 'destination' means, how it's determined, what the expected outcome is, or any error conditions. For a tool that likely initiates a state change, more context is needed to guide effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameters need documentation. The description doesn't add parameter details, which is acceptable here since there are none to explain, aligning with the baseline for zero parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the action ('Start') and resource ('traveler's journey to destination'), making the purpose understandable. However, it doesn't differentiate from the sibling tool 'stop_traveler_journey' beyond the verb, and 'destination' is vague without specifying what it refers to or how it's determined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'stop_traveler_journey' or other sibling tools. The description implies it's for initiating travel, but it doesn't specify prerequisites, conditions, or exclusions for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_traveler_journeyStop the journeyCInspect
Stop the traveler's journey
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Stop the traveler's journey' implies a mutation or state change, but the description doesn't specify whether this action is reversible, what permissions are required, what side effects occur (e.g., does it cancel ongoing processes?), or what the response looks like. This is inadequate for a tool that likely alters system state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no wasted words, which is efficient. However, it's under-specified rather than appropriately sized—it lacks necessary context for a mutation tool, so its brevity doesn't earn full credit for being 'front-loaded' with helpful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool likely performs a mutation (stopping a journey) with no annotations and no output schema, the description is incomplete. It doesn't explain what 'stopping' entails, what happens post-execution, or any error conditions, leaving significant gaps for an agent to understand the tool's behavior and outcomes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the absence of inputs. The description doesn't need to add parameter details, and it correctly implies no parameters are required by not mentioning any. This meets the baseline for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Stop the traveler's journey' is a tautology that merely restates the tool name 'stop_traveler_journey' and title 'Stop the journey' without adding specificity. It doesn't clarify what 'journey' means in this context or what resources are affected, though it does include the verb 'stop' and resource 'traveler's journey' which provides minimal differentiation from siblings like 'start_traveler_journey'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., that a journey must be active), exclusions, or comparisons to sibling tools like 'start_traveler_journey', leaving the agent with no contextual usage information beyond the tool's name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tipsTips for using this MCP serverCInspect
Inform you of recommended actions for your device
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'Inform you' but doesn't clarify whether this is a read-only operation, if it requires permissions, how recommendations are generated, or what the output format might be. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior and safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It's front-loaded with the core purpose ('Inform you of recommended actions'), making it easy to parse. However, it could be slightly more specific to improve clarity without sacrificing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (simple informational tool with no parameters) and the lack of annotations and output schema, the description is incomplete. It doesn't explain what 'recommended actions' entail, how they're determined, or what the return value looks like. For a tool that might provide actionable advice, more context is needed to guide the agent effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and schema description coverage is 100%, so there are no parameters to document. The description doesn't need to add parameter semantics beyond what the schema provides. A baseline score of 4 is appropriate as the description doesn't contradict the empty schema and the lack of parameters is handled adequately by the structured data.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool's purpose as informing about recommended actions for a device, which is clear but vague. It uses a specific verb ('Inform') and resource ('recommended actions for your device'), but doesn't distinguish this from sibling tools like 'get_setting' or 'get_traveler_info' that might also provide device-related information. The purpose is understandable but lacks specificity about what types of recommendations or actions are involved.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'get_setting' or 'get_traveler_info' that might retrieve device information, there's no indication of when 'tips' is appropriate—e.g., for proactive advice versus status queries. Usage is implied as informational but without explicit context or exclusions, leaving the agent to guess based on the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
8 tool updates
v1.0.0- First observed
get_setting - First observed
get_traveler_info - First observed
get_traveler_location - First observed
get_traveler_view_info - First observed
set_traveler_info - First observed
start_traveler_journey - First observed
stop_traveler_journey - First observed
tips
TDQS
Scored across 8 tools
Most tools have distinct purposes, but there is some overlap between get_traveler_info and get_setting, and get_traveler_location and get_traveler_view_info share similar location-related functions. The descriptions help clarify differences, but an agent might occasionally misselect between these pairs.
The naming follows a consistent verb_noun pattern with snake_case throughout, such as get_traveler_info and set_traveler_info. The only minor deviation is 'tips', which is a noun rather than a verb_noun pattern, but it fits the overall style and does not break consistency severely.
With 8 tools, the count is well-scoped for a travel or mapping server. Each tool appears to serve a specific function in managing traveler settings, location, and journey control, making the set neither too sparse nor overloaded.
The tool set covers core operations like getting/setting traveler info, location, and journey control, but there are notable gaps. For example, there is no tool for updating journey details mid-travel or handling multiple travelers, which could limit agent workflows in a travel domain.
Maintenance
Related MCP Connectors
A MCP server that works with Google Calendar to manage event listing, reading, and updates.
An MCP server that automatically collects feedback on your MCP server.
Geo-based flight search MCP server. Find more flights between any two places on earth
Related MCP Servers
- -licenseNot gradedqualityAmaintenanceMCP Server for the Google Maps API.11,868 npm91,276MIT
- AlicenseNot gradedqualityDmaintenanceA production-ready MCP server for intelligent travel planning that integrates 16 tools, live APIs, and a gamification system to help users plan trips, track expenses, and discover events.5 npmMIT
- AlicenseNot gradedqualityDmaintenanceMCP server for Japanese public transit journey planning with interactive map UI, enabling station search, route planning, and departure lookups via natural language.MIT
- FlicenseNot gradedqualityCmaintenanceMCP server for generating interactive 3D Earth visualizations with annotated news from multiple global sources.-