使用说明
isthereanydeal-mcp
基于 IsThereAnyDeal API 的 MCP(Model Context Protocol)服务。
设计原则
- 不提供任何“通用 API 调用”工具
- 每个 ITAD API operation 对应一个独立 MCP tool
- 当前对官方 OpenAPI 的 53 个 operation 全量覆盖
apikey通过环境变量传入
功能
输入结构(所有 tool 统一)
每个 tool 都使用以下输入字段(按接口需要填写):
pathParams: 路径参数对象(例如{ "shopId": 61 })query: query 参数对象(例如{ "id": "uuid", "country": "US" })headers: 请求头对象(例如{ "ITAD-Profile": "xxx" })body: 请求体(对象或数组)oauthToken: OAuth token(仅 oauth 接口可用,可选)
每个 tool 会按对应 endpoint 自动校验必填参数。
调用说明
已补充完整调用文档(含鉴权、返回格式、示例、每个 tool 的必填参数):
另外,为了让“只看 MCP 能力而看不到仓库文件”的 Agent 也能获取说明,服务额外暴露了两个 MCP Resource:
itad://guide/calling:Markdown 调用说明(人类可读)itad://endpoints/index.json:53 个 tool 的机器可读元数据
环境要求
- Node.js 18+
- IsThereAnyDeal API Key(在 https://isthereanydeal.com/apps/my/ 申请)
安装
npm install
配置 API Key(环境变量)
Key 鉴权接口需要设置以下任意一个环境变量:
ITAD_API_KEY(推荐)ISTHEREANYDEAL_API_KEYAPIKEYapikey
例如:
export ITAD_API_KEY="你的_isthereanydeal_api_key"
OAuth 接口可使用:
export ITAD_OAUTH_TOKEN="你的_oauth_token"
启动
npm start
服务使用 stdio 方式与 MCP Client 通信。
在 MCP Client 中配置示例
{
"mcpServers": {
"isthereanydeal": {
"command": "node",
"args": ["/path/to/isthereanydeal-mcp/src/index.js"],
"env": {
"ITAD_API_KEY": "your_api_key"
}
}
}
}
全量工具清单(53 个)
collection_copies_v1_delete-> DELETE /collection/copies/v1collection_copies_v1_get-> GET /collection/copies/v1collection_copies_v1_patch-> PATCH /collection/copies/v1collection_copies_v1_post-> POST /collection/copies/v1collection_games_v1_delete-> DELETE /collection/games/v1collection_games_v1_get-> GET /collection/games/v1collection_games_v1_put-> PUT /collection/games/v1collection_groups_v1_delete-> DELETE /collection/groups/v1collection_groups_v1_get-> GET /collection/groups/v1collection_groups_v1_patch-> PATCH /collection/groups/v1collection_groups_v1_post-> POST /collection/groups/v1deals_v2-> GET /deals/v2games_bundles_v2-> GET /games/bundles/v2games_history_v2-> GET /games/history/v2games_historylow_v1-> POST /games/historylow/v1games_info_v2-> GET /games/info/v2games_lookup_v1-> GET /games/lookup/v1games_overview_v2-> POST /games/overview/v2games_prices_v3-> POST /games/prices/v3games_search_v1-> GET /games/search/v1games_storelow_v2-> POST /games/storelow/v2games_subscriptions_v1-> POST /games/subs/v1internal_earlyaccess_v1-> GET /internal/early-access/v1internal_exfgls_v1-> GET /internal/exfgls/v1internal_hltb_v1-> GET /internal/hltb/v1internal_players_v1-> GET /internal/players/v1internal_rates_v1-> GET /internal/rates/v1internal_reviews_v1-> GET /internal/reviews/v1internal_twitchstream_v1-> GET /internal/twitch/stream/v1internal_wsgf_v1-> GET /internal/wsgf/v1lookup_gid_shopid_v1-> POST /lookup/id/shop/{shopId}/v1lookup_gid_title_v1-> POST /lookup/id/title/v1lookup_shopid_gid_v1-> POST /lookup/shop/{shopId}/id/v1notifications_list_v1_get-> GET /notifications/v1notifications_read_all_v1_put-> PUT /notifications/read/all/v1notifications_read_v1_put-> PUT /notifications/read/v1notifications_waitlist_v1_get-> GET /notifications/waitlist/v1profiles_link_v1_delete-> DELETE /profiles/link/v1profiles_link_v1_put-> PUT /profiles/link/v1profiles_sync_collection_v1_put-> PUT /profiles/sync/collection/v1profiles_sync_waitlist_v1_put-> PUT /profiles/sync/waitlist/v1service_shops_v1-> GET /service/shops/v1stats_most_collected_v1-> GET /stats/most-collected/v1stats_most_popular_v1-> GET /stats/most-popular/v1stats_most_waitlisted_v1-> GET /stats/most-waitlisted/v1stats_waitlist_v1-> GET /stats/waitlist/v1user_info_v2-> GET /user/info/v2user_notes_v1_delete-> DELETE /user/notes/v1user_notes_v1_get-> GET /user/notes/v1user_notes_v1_put-> PUT /user/notes/v1waitlist_games_v1_delete-> DELETE /waitlist/games/v1waitlist_games_v1_get-> GET /waitlist/games/v1waitlist_games_v1_put-> PUT /waitlist/games/v1