Yaizu Smart City MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Yaizu Smart City MCP Serversearch for evacuation shelters near the city center"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
焼津市スマートシティ MCP サーバー
焼津市のオープンデータを活用した Model Context Protocol (MCP) サーバー。Claude Desktop / Claude Code から焼津市スマートシティAPIへのアクセスを提供します。
機能一覧
ツール (8個)
ツール名 | 説明 |
| APIカタログから最新ドキュメントをスクレイピング |
| エンティティタイプに対するAPI実行コマンドを生成 |
| 保存済みAPIドキュメントをキーワード検索 |
| 特定APIの詳細情報を取得 |
| FIWARE NGSIv2 APIからエンティティデータを取得 |
| 主要エンドポイント例を表示 |
| 保存済みAPIドキュメント一覧を表示 |
| (非推奨) 汎用エンドポイント実行 |
リソース (4個)
URI | 説明 |
| 全APIドキュメントのサマリー |
| 防災関連APIの一覧 |
| 焼津市・スマートシティの基本情報 |
| サーバーステータスとデータ状態 |
プロンプト (1個)
プロンプト名 | 説明 |
| 防災APIの分析手順ガイド |
クイックスタート
必要要件
Python 3.13 以上
uv 0.8.13 以上
セットアップ
git clone https://github.com/moma1992/smartcity-mcp.git
cd smartcity-mcp
# 依存関係のインストール
uv sync
# 環境変数の設定
cp .env.example .env
# .env ファイルを編集してAPIキーを設定Claude Desktop 設定
設定ファイルを開きます:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
以下の設定を追加:
{
"mcpServers": {
"yaizu-smartcity": {
"command": "/path/to/uv",
"args": [
"--directory",
"/path/to/smartcity-mcp",
"run",
"python",
"-m",
"yaizu_mcp.server"
]
}
}
}開発・デバッグ
# MCP Inspector で開発サーバー起動
uv run mcp dev yaizu_mcp/server.py
# 直接実行(STDIOモード)
uv run python yaizu_mcp/server.py
# テスト実行
uv run python tests/test_mcp_integration.pyデプロイ方式
1. STDIO (Claude Desktop / Claude Code)
ローカル環境で直接実行。Claude DesktopまたはClaude CodeとJSON-RPC over STDIOで通信します。
2. Docker Streamable HTTP (exaBase / コンテナ環境)
Streamable HTTP トランスポートで HTTP サーバーとして起動します
(旧 SSE は 2026-05-19 に廃止、mcp >= 1.27 / fastmcp >= 3.3 推奨)。
# ビルドと起動
docker compose -f deploy/docker/docker-compose.yml up -d
# ログ確認
docker compose -f deploy/docker/docker-compose.yml logs -fエンドポイント:
MCP:
POST http://localhost:8080/mcp
ACR (Azure Container Registry) へのプッシュ:
# ビルド
docker build -t yaizu-mcp -f deploy/docker/Dockerfile .
# タグ付け & プッシュ
docker tag yaizu-mcp <registry>.azurecr.io/yaizu-mcp:latest
docker push <registry>.azurecr.io/yaizu-mcp:latest3. Databricks Apps (Streamable HTTP)
Databricks Apps として Streamable HTTP トランスポートでデプロイします。
リポジトリルートに app.py, app.yaml, requirements.txt を配置しているため、Git Sync でそのまま利用可能です。
前提条件
Azure Databricks ワークスペース
Databricks CLI のインストールと認証設定
# Databricks CLI インストール
brew tap databricks/tap
brew install databricks
# 認証設定
databricks auth login --host <workspace-url>シークレット設定
環境変数は Databricks Secret Scope (yaizu-demo) で管理します:
# シークレットの設定
databricks secrets put-secret yaizu-demo yaizu-api-key
databricks secrets put-secret yaizu-demo yaizu-api-email
databricks secrets put-secret yaizu-demo yaizu-api-passwordapp.yaml の resources セクションでシークレットスコープを参照するため、クレデンシャルのハードコードは不要です。
デプロイ手順
# ワークスペースへファイルをアップロード
databricks workspace import /Workspace/Users/<email>/mcp-yaizu-demo/app.py \
--file app.py --format AUTO --overwrite
databricks workspace import /Workspace/Users/<email>/mcp-yaizu-demo/app.yaml \
--file app.yaml --format AUTO --overwrite
databricks workspace import /Workspace/Users/<email>/mcp-yaizu-demo/requirements.txt \
--file requirements.txt --format AUTO --overwrite
databricks workspace import-dir yaizu_mcp \
/Workspace/Users/<email>/mcp-yaizu-demo/yaizu_mcp --overwrite
# アプリのデプロイ
databricks apps deploy mcp-yaizu-demo \
--source-code-path /Workspace/Users/<email>/mcp-yaizu-demo主要コマンド
databricks apps list # アプリ一覧
databricks apps get mcp-yaizu-demo # 状態確認
databricks apps start mcp-yaizu-demo # 開始
databricks apps stop mcp-yaizu-demo # 停止
databricks apps logs mcp-yaizu-demo # ログ確認プロジェクト構成
smartcity-mcp/ ← Databricks Apps source-code-path
├── app.py - Databricks Apps エントリーポイント
├── app.yaml - Databricks Apps 設定(シークレット参照)
├── requirements.txt - pip依存関係
├── yaizu_mcp/ # MCPサーバー本体
│ ├── server.py # サーバー実装 (FastMCP)
│ └── scraper.py # APIカタログスクレイパー
├── deploy/
│ └── docker/ # Docker / exaBase用
│ ├── Dockerfile
│ ├── docker-compose.yml
│ └── docker-entrypoint.py
├── scripts/ # データ処理スクリプト
├── tests/ # テスト
├── data/ # API仕様・ドキュメント
│ ├── api_specs/ # 48個のJSON API仕様書
│ ├── documentation/ # PDFドキュメント
│ └── openapi/ # OpenAPI仕様書 (YAML)
├── docs/ # ドキュメント
├── config.yaml # API設定
├── pyproject.toml # プロジェクト設定
├── uv.lock # 依存関係ロック
├── .env.example # 環境変数テンプレート
├── CLAUDE.md # Claude Code 開発ガイド
└── README.mdAPI 仕様
焼津市 FIWARE NGSIv2 API
エンドポイント:
https://api.smartcity-yaizu.jp/v2/entities認証: APIキー (
apikeyヘッダー)プロトコル: FIWARE NGSIv2
対応エンティティ
カテゴリ | エンティティタイプ |
防災 | Aed, EvacuationShelter, DisasterMail, WeatherAlert, WeatherForecast |
防災施設 | TsunamiEvacuationBuilding, DisasterPreventionWarehouse, FirePreventionWaterTank |
リスク | FloodRiskAreaMaxScale, LandslideVigilanceArea, DebrisFlowVigilanceArea |
医療 | FirstAidStation, ReliefHospital, HospitalAndClinic |
環境 | PrecipitationGauge, StreamGauge, DrinkingWaterTank |
監視 | CameraInformation |
観光 | Event, EventDetail, SightseeingMapStore, TouristAttraction |
公共施設 | PublicFacility |
交通 | RestrictedTrafficAreaInformation, UnderpassInformation |
技術スタック
フレームワーク: FastMCP (MCP Python SDK)
非同期処理: asyncio / aiohttp
HTTPクライアント: aiohttp, httpx
PDF処理: PyMuPDF, PyPDF2
環境管理: python-dotenv
パッケージ管理: uv
トラブルシューティング
エラー | 対処法 |
"No API key found" |
|
"Server disconnected" | Claude Desktop設定のパスを確認 |
"Module not found" |
|
Docker接続エラー |
|
Databricks認証エラー |
|
関連情報
ライセンス
MIT License
Available Tools
8 toolsexecute_api_endpointA
【非推奨】汎用エンドポイント実行ツール(互換性のために保持) 新しいコードでは execute_yaizu_api() を使用してください。
Args: endpoint_url: APIエンドポイントのURL method: HTTPメソッド(GET, POST, PUT, DELETE) params: クエリパラメータまたはJSONボディ(JSON文字列形式)
Returns: str: APIレスポンス
| Name | Required | Description | Default |
|---|---|---|---|
| endpoint_url | Yes | ||
| method | No | GET | |
| params | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions the tool is deprecated but doesn't disclose critical behavioral traits like authentication requirements, error handling, rate limits, or whether it performs destructive operations (e.g., DELETE method). The description only covers basic input/output, leaving significant gaps for a generic API 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 well-structured and front-loaded with the deprecation warning, followed by clear sections for Args and Returns. Every sentence adds value: the deprecation notice, the alternative recommendation, and parameter explanations. No wasted words, making it efficient for an agent to parse.
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 (generic API execution with 3 parameters), no annotations, and an output schema exists (specifying str return), the description is partially complete. It covers purpose, usage guidelines, and basic parameter semantics but lacks behavioral context (e.g., auth, errors) and detailed parameter guidance, making it adequate but with clear gaps 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?
Schema description coverage is 0%, so the description must compensate. It adds meaning by explaining 'endpoint_url' as the API endpoint URL, 'method' as HTTP methods with examples, and 'params' as query parameters or JSON body in string form. However, it doesn't clarify format details (e.g., URL encoding, JSON structure) or constraints, partially compensating but not fully bridging the coverage gap.
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 this is a 'generic endpoint execution tool' that makes API calls, specifying it takes an endpoint URL, HTTP method, and parameters. It distinguishes itself from siblings by mentioning 'execute_yaizu_api()' as the recommended alternative for new code. However, it doesn't specify what type of API it interacts with (e.g., REST, internal), making it slightly less specific than a perfect 5.
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 explicit guidance: it's deprecated and should not be used for new code, with 'execute_yaizu_api()' named as the alternative. It also implies usage context by stating it's kept for compatibility, helping the agent understand when to avoid this tool versus when it might be necessary for legacy systems.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_yaizu_apiB
焼津市のFIWARE NGSIv2 APIからエンティティデータを取得します。 APIカタログの情報を基に適切なエンドポイント設定を自動で行います。
Args: entity_type: エンティティタイプ(例: Aed, EvacuationShelter, DisasterMail) params: 追加のクエリパラメータ(JSON文字列形式) limit: 取得件数制限(1-1000、デフォルト10)
Returns: str: APIレスポンス
| Name | Required | Description | Default |
|---|---|---|---|
| entity_type | Yes | ||
| params | No | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 retrieves data and automatically configures endpoints, but lacks details on authentication requirements, rate limits, error handling, or whether it's read-only (though implied by '取得します'). For a tool interacting with an external API, 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 appropriately sized and front-loaded, starting with the core purpose. The Args and Returns sections are structured clearly, though the Japanese text might add minor complexity for non-Japanese agents. Every sentence adds value, with no redundant 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's complexity (API interaction with 3 parameters) and no annotations, the description is moderately complete. It covers purpose and parameters well, and an output schema exists (implied by 'Returns: str: APIレスポンス'), so return values needn't be detailed. However, it lacks behavioral context like auth or error handling, which is a gap for an API tool.
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 description adds meaningful semantics beyond the input schema, which has 0% description coverage. It explains 'entity_type' with examples (Aed, EvacuationShelter, DisasterMail), clarifies 'params' as JSON string for additional query parameters, and specifies 'limit' range (1-1000) and default (10). This compensates well for the schema's lack of descriptions, though it doesn't detail the structure of 'params' JSON.
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: '焼津市のFIWARE NGSIv2 APIからエンティティデータを取得します' (retrieves entity data from Yaizu City's FIWARE NGSIv2 API). It specifies the verb '取得します' (retrieves) and resource 'エンティティデータ' (entity data). However, it doesn't explicitly differentiate from sibling tools like 'execute_api_endpoint' or 'get_api_details', which likely serve related but distinct purposes.
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 mentions 'APIカタログの情報を基に適切なエンドポイント設定を自動で行います' (automatically configures appropriate endpoints based on API catalog information), which implies some context, but doesn't specify when to choose this over siblings like 'execute_api_endpoint' or 'search_api_docs'. No explicit when/when-not statements or named alternatives are included.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_api_commandB
指定したエンティティタイプに対するAPI実行コマンドを生成します。 APIカタログの情報を基に適切なパラメータを提案します。
Args: entity_type: エンティティタイプ(例: Aed, EvacuationShelter)
Returns: str: 使用可能なAPIコマンド例
| Name | Required | Description | Default |
|---|---|---|---|
| entity_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 the tool generates API commands but doesn't specify whether this is a read-only operation, whether it requires authentication, what happens if the entity_type is invalid, or any rate limits. The description is functional but lacks important behavioral context.
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 efficiently structured with a clear purpose statement followed by Args and Returns sections. Every sentence earns its place, and the information is front-loaded with no wasted words. The bilingual format (Japanese description with English Args/Returns) is compact.
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?
For a single-parameter tool with an output schema (which handles return value documentation), the description is minimally adequate. However, given the sibling tools and lack of annotations, it should provide more context about when this generation is useful versus directly executing or getting API details.
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?
With only 1 parameter and 0% schema description coverage, the description compensates well by explaining what entity_type represents ('entity type' with examples like 'Aed, EvacuationShelter') and clarifying that it's used to generate appropriate API commands based on API catalog information. This adds meaningful context beyond the bare schema.
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: 'generate API execution commands for specified entity types' and 'proposes appropriate parameters based on API catalog information'. It specifies the verb (generate) and resource (API commands), but doesn't explicitly differentiate from sibling tools like execute_api_endpoint or get_api_details.
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 execute_api_endpoint (which likely executes commands) or get_api_details (which likely provides API information). There's no mention of prerequisites, use cases, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_api_detailsC
特定のAPIの詳細情報を取得します。
Args: api_name: API名またはファイル名(拡張子なし)
Returns: str: API詳細情報
| Name | Required | Description | Default |
|---|---|---|---|
| api_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. The description only states what the tool does functionally ('get detailed information') without any behavioral context about permissions needed, rate limits, what format the details come in, whether this is a read-only operation, or any error conditions. For a tool with no annotation coverage, this is insufficient behavioral 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 appropriately concise with a clear purpose statement followed by Args and Returns sections. The structure is front-loaded with the main functionality first. While efficient, the Args section could be slightly more detailed given the 0% schema coverage, but overall it's well-structured without wasted words.
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 has an output schema (which handles return value documentation) and only 1 parameter with 0% schema coverage, the description provides the minimum viable information about what the tool does and the parameter semantics. However, for a tool with no annotations and multiple sibling tools that seem related, the description should do more to differentiate this tool's specific role and provide behavioral 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?
With 0% schema description coverage and only 1 parameter, the description provides crucial semantic information about the 'api_name' parameter, explaining it accepts 'API名またはファイル名(拡張子なし)' - 'API name or filename (without extension)'. This adds meaningful context beyond the bare schema, though it could be more specific about what constitutes valid API names versus filenames.
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 purpose ('特定のAPIの詳細情報を取得します' - 'Get detailed information for a specific API') which is a clear verb+resource combination. However, it doesn't distinguish this tool from its siblings like 'get_sample_endpoints' or 'search_api_docs' - all of which seem to retrieve API-related information. The purpose is understandable but lacks sibling differentiation.
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 siblings like 'list_saved_apis', 'search_api_docs', and 'get_sample_endpoints', there's no indication of when this specific 'get_api_details' tool is appropriate versus those other information-retrieval tools. The description is purely functional without contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sample_endpointsB
焼津市スマートシティAPIの主要なエンドポイント例を提供します。
Returns: str: エンドポイント例の一覧
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 returns 'a list of endpoint examples' as a string, which is minimal behavioral info. It doesn't describe whether this is a read-only operation, if it requires authentication, rate limits, or what the examples include (e.g., sample URLs, methods). For a tool with zero annotation coverage, this is insufficient.
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 appropriately sized and front-loaded: the first sentence states the purpose clearly, and the second specifies the return type. There's no wasted text, and it's structured efficiently. However, it could be slightly more concise by combining sentences, but it's already minimal.
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 has 0 parameters, 100% schema coverage, and an output schema exists (implied by 'Returns: str'), the description is somewhat complete but lacks depth. It states the purpose and return type, but for a tool with no annotations, it should ideally include more behavioral context (e.g., what the examples look like, if it's a static list). The output schema handles return values, so that's covered, but overall completeness is minimal.
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% (though empty). The description doesn't need to add parameter semantics, so it meets the baseline. It correctly doesn't mention any parameters, which aligns with the schema. No extra value is added, but none is required for a parameterless tool.
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: 'provide examples of major endpoints for the Yaizu City Smart City API.' It specifies the verb ('provide') and resource ('endpoint examples'), though it doesn't explicitly differentiate from siblings like 'get_api_details' or 'list_saved_apis' which might also return endpoint information. The purpose is clear but lacks 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 offers no guidance on when to use this tool versus alternatives. It doesn't mention siblings like 'get_api_details' (which might provide detailed endpoint info) or 'execute_api_endpoint' (which might use endpoints), nor does it specify prerequisites or contexts for usage. There's no explicit or implied usage guidance beyond the basic purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_saved_apisB
保存済みのAPIドキュメント一覧を表示します。
Returns: str: ドキュメント一覧
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 displays a list but doesn't describe format, pagination, sorting, or error conditions. The mention of return type ('str: ドキュメント一覧') is minimal and doesn't clarify what the string contains (e.g., JSON, plain text). For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.
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 purpose in the first sentence. The second sentence about returns is minimal but could be more integrated. There's no wasted text, though the structure could be slightly tighter by combining the two sentences for better flow.
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 simplicity (0 parameters, output schema exists), the description is adequate but not complete. It states what the tool does but lacks context on usage versus siblings and behavioral details. The output schema existence means the description doesn't need to detail return values, but it still misses guidance and transparency elements that would make it more helpful for an 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 tool has 0 parameters, and the input schema has 100% description coverage (though empty). The description doesn't need to explain parameters, so it appropriately avoids this. A baseline of 4 is given since no parameter information is required, and the description doesn't introduce confusion about inputs.
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: '保存済みのAPIドキュメント一覧を表示します' (displays a list of saved API documents). This specifies both the verb (display/list) and resource (saved API documents). However, it doesn't explicitly differentiate from sibling tools like 'search_api_docs' or 'get_api_details', which prevents a perfect score.
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 'search_api_docs' and 'get_api_details' available, there's no indication of when this listing function is preferred over searching or getting details, nor any mention of prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scrape_api_docsB
焼津市APIカタログから最新のAPIドキュメントをスクレイピングして保存します。 認証情報は.envファイルから自動的に読み込まれます。
Returns: str: スクレイピング結果のサマリー
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that authentication is handled via .env files and that it saves the scraped data, which are useful behavioral traits. However, it lacks details on rate limits, error handling, or what 'saves' entails (e.g., file location, overwrite behavior).
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 main action in the first sentence. The second sentence adds useful authentication context, and the 'Returns' section clarifies output. It could be slightly more structured but avoids 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 no annotations, 0 parameters, and an output schema (implied by 'Returns'), the description is minimally adequate. It covers the action and authentication, but lacks context on sibling tool differentiation and detailed behavioral aspects like what 'saves' means, leaving some gaps.
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 parameter documentation is needed. The description appropriately doesn't discuss parameters, earning a baseline score of 4 for not adding unnecessary information.
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 scrapes API documentation from a specific source (Yaizu City API catalog) and saves it, using the verb 'scrape' and resource 'API documentation'. However, it doesn't explicitly differentiate from sibling tools like 'search_api_docs' or 'get_api_details', which might have overlapping functionality.
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 'search_api_docs' or 'get_api_details'. It mentions authentication is handled automatically, but doesn't specify prerequisites, timing, 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.
search_api_docsC
保存済みのAPIドキュメントから特定のキーワードでAPIを検索します。
Args: keyword: 検索キーワード(API名、説明、カテゴリで検索)
Returns: str: 検索結果
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 searches saved API documentation by keyword across API name, description, and category, but doesn't mention critical aspects like whether it's read-only (implied but not explicit), how results are formatted, if there are rate limits, or authentication requirements. For a search tool with zero annotation coverage, this leaves significant gaps.
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 well-structured: a clear purpose statement followed by Args and Returns sections. It avoids unnecessary fluff, and every sentence adds value. However, the Japanese text might be slightly less accessible in some contexts, but it's still efficient.
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 has an output schema (Returns: str), the description doesn't need to explain return values in detail. However, with no annotations and incomplete parameter guidance, it's adequate but has clear gaps. The description covers the basic functionality but lacks depth on usage context and behavioral traits, making it minimally viable.
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 description adds some semantic context: it explains that 'keyword' searches across API name, description, and category. However, with 0% schema description coverage (the schema only provides title and type), the description compensates partially but doesn't detail syntax, format, or examples. Since there's only one parameter, the baseline is higher, but more specifics would improve this.
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: '保存済みのAPIドキュメントから特定のキーワードでAPIを検索します' (Search APIs from saved API documentation using specific keywords). It specifies the verb (search), resource (saved API documentation), and scope (by keyword). However, it doesn't explicitly differentiate from siblings like 'list_saved_apis' or 'get_api_details', which would require a 5.
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 siblings like 'list_saved_apis' (likely lists all APIs) and 'get_api_details' (likely gets details for a specific API), there's no indication of when keyword searching is preferred over other methods. It mentions what the tool does but not when it's appropriate.
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. Dates show when Glama detected each change.
8 tool updates
- First observed
execute_api_endpoint - First observed
execute_yaizu_api - First observed
generate_api_command - First observed
get_api_details - First observed
get_sample_endpoints - First observed
list_saved_apis - First observed
scrape_api_docs - First observed
search_api_docs
TDQS
There is moderate overlap between tools like execute_api_endpoint and execute_yaizu_api, which both execute API calls but with different approaches, potentially causing confusion. However, other tools like scrape_api_docs and search_api_docs have distinct purposes, and descriptions help clarify the differences. Some tools, such as get_api_details and list_saved_apis, serve related but separate functions, reducing ambiguity.
Most tools follow a consistent verb_noun pattern (e.g., execute_api_endpoint, generate_api_command, get_api_details), which is predictable and readable. There is a minor deviation with execute_yaizu_api, which uses a specific name instead of a generic verb, but it still fits the overall style. The naming is largely uniform, aiding in tool identification.
With 8 tools, the count is well-scoped for a smart city API server, covering execution, documentation management, and information retrieval without being overwhelming. Each tool appears to serve a specific purpose in the domain, such as scraping, searching, and executing APIs, making the set appropriately sized for the server's functionality.
The tool set provides good coverage for interacting with Yaizu's FIWARE NGSIv2 API, including execution, documentation scraping, searching, and listing. Minor gaps exist, such as the lack of tools for updating or deleting entities, which might limit full CRUD operations, but core workflows like data retrieval and documentation management are well-supported, allowing agents to work effectively.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Japan data tools for AI agents: calendar (rokuyo), address, name splitting, corporate number lookup
17+ Japan MCP tools (weather/calendar v2/local-pack/enrich). x402 on Base, wallet-free trial.
Provides access to Civic Plus - See Click Fix, allowing you to interact with your data via an LLM.…
Public Data Ukraine Mcp connects AI agents to real public APIs via MCP. Tools include
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/moma1992/smartcity-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server