| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- '''
- Function:
- Implementation of Naive MCP Examples
- Author:
- Zhenchao Jin
- WeChat Official Account (微信公众号):
- Charles的皮卡丘
- '''
- import sys, logging
- from mcp.server.fastmcp import FastMCP
- from imagedl import imagedl as imagedl_pkg
- '''settings'''
- _client = None
- mcp = FastMCP("imagedl")
- logging.basicConfig(stream=sys.stderr, level=logging.INFO)
- def getclient(image_source=None, init_image_client_cfg=None, search_limits=1000, num_threadings=5, request_overrides=None):
- """get image client"""
- global _client
- if _client is None:
- init_image_client_cfg = init_image_client_cfg or {}
- init_image_client_cfg.setdefault("disable_print", True)
- _client = imagedl_pkg.ImageClient(
- image_source=image_source or "BaiduImageClient", init_image_client_cfg=init_image_client_cfg, search_limits=search_limits,
- num_threadings=num_threadings, request_overrides=request_overrides or {},
- )
- return _client
- @mcp.tool()
- def search(keyword: str, image_source: str | None = None, search_limits_overrides: int | None = None, num_threadings_overrides: int | None = None, filters: dict | None = None) -> dict:
- """Search images (metadata only)."""
- client = getclient(image_source=image_source)
- infos = client.search(
- keyword=keyword, search_limits_overrides=search_limits_overrides, num_threadings_overrides=num_threadings_overrides, filters=filters,
- )
- return {"image_infos": infos}
- @mcp.tool()
- def download(image_infos: list) -> dict:
- """Download images described by image_infos."""
- out = getclient().download(image_infos=image_infos)
- return {"ok": True, "downloaded": out}
- '''main'''
- if __name__ == "__main__":
- mcp.run(transport="stdio")
|