Skip to main content
Glama
kkawailab

MLIT Data Platform MCP Server

by kkawailab

get_zipfile_download_url

Compress multiple files into a ZIP archive and generate a temporary download URL valid for 60 seconds, enabling bulk file retrieval from the MLIT Data Platform.

Instructions

複数の付属ファイルをZIP形式で圧縮し、圧縮ファイルのダウンロードURLを取得する。URLの有効期限は60秒。

            使い方:
            - まとめて取得したい複数ファイルの `id` と、ZIP内に格納する `original_path`(パス)を指定します。
            - search / data で取得した `files` から必要な id / original_path を選択して投入してください。
            - 本ツールは2通りに対応:
            (A) `files=[{id, original_path}, ...]` を直接渡す
            (B) `dataset_id` と `data_id` を渡す(ツール側で `files` を参照しZIP作成)

            例:
            - IFCを3本まとめてZIPで取得:
            files=[
                { id:"<id1>", original_path:"ICON/.../モデルA.ifc" },
                { id:"<id2>", original_path:"ICON/.../モデルB.ifc" },
                { id:"<id3>", original_path:"ICON/.../モデルC.ifc" },
            ]

            - データIDから付属ファイルをZIP化(簡易):
            dataset_id="cals_construction", data_id="<searchで取得したid>"

            注意:
            - ZIPのダウンロードURLは **60秒間のみ有効** です。取得後すぐにダウンロード処理を開始してください。
            - GraphQLは `zipfileDownloadURL(files:[FileInputClass]): String`。`files` の `id` / `original_path` は `DataClass.files` を用います。
            - 大容量ZIPはクライアント側のタイムアウト設定にも注意してください。

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
filesNoZIP化するファイルの配列
dataset_idNoデータセットID
data_idNoデータID

Implementation Reference

  • Handler in src/server.py for get_zipfile_download_url tool.
    elif name == "get_zipfile_download_url":
        p = ZipfileDownloadURLInput.model_validate(arguments)
        if p.files:
            files = [FileRef(id=f.id, original_path=f.original_path) for f in p.files]
            data = await client.zipfile_download_url(files=files)
        else:
            data = await client.zipfile_download_url_from_data(
                dataset_id=str(p.dataset_id), data_id=str(p.data_id)  # type: ignore
            )
  • Implementation of zipfile_download_url in src/client.py using GraphQL builder.
    async def zipfile_download_url(self, *, files: List[FileRef]) -> Dict[str, Any]:
        if not files:
            return {"zipfileDownloadURL": None}
        q = self.build_zipfile_download_url(files=files)
        return await self.post_query(q)
    
    async def zipfile_download_url_from_data(self, *, dataset_id: str, data_id: str) -> Dict[str, Any]:
        files = await self.get_data_files(dataset_id=dataset_id, data_id=data_id)
        if not files:
            return {"zipfileDownloadURL": None}
        return await self.zipfile_download_url(files=files)
  • GraphQL query builder for zipfileDownloadURL.
    # ----- ZIPFILE DOWNLOAD URL -----
    def build_zipfile_download_url(self, *, files: List[FileRef]) -> str:
        def q(s: str) -> str:
            return '"' + s.replace('"', '\\"') + '"'
        items = ", ".join(
            "{ id: " + q(f.id) + ", original_path: " + q(f.original_path) + " }" for f in files
        )
        return f"""
        query {{
          zipfileDownloadURL(files: [{items}])
        }}
        """.strip()

Latest Blog Posts

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/kkawailab/kklab-mlit-dpf-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server