[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-knowsuchagency--mcp2cli":3,"tool-knowsuchagency--mcp2cli":64},[4,17,27,35,43,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",138956,2,"2026-04-05T11:33:21",[13,15,26],"语言模型",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":23,"last_commit_at":33,"category_tags":34,"status":16},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[13,14,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":23,"last_commit_at":41,"category_tags":42,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,26],{"id":44,"name":45,"github_repo":46,"description_zh":47,"stars":48,"difficulty_score":23,"last_commit_at":49,"category_tags":50,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[14,51,52,53,15,54,26,13,55],"数据工具","视频","插件","其他","音频",{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[15,14,13,26,54],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":69,"readme_en":70,"readme_zh":71,"quickstart_zh":72,"use_case_zh":73,"hero_image_url":74,"owner_login":75,"owner_name":76,"owner_avatar_url":77,"owner_bio":78,"owner_company":79,"owner_location":80,"owner_email":81,"owner_twitter":82,"owner_website":83,"owner_url":84,"languages":85,"stars":90,"forks":91,"last_commit_at":92,"license":93,"difficulty_score":23,"env_os":94,"env_gpu":95,"env_ram":95,"env_deps":96,"category_tags":106,"github_topics":107,"view_count":23,"oss_zip_url":82,"oss_zip_packed_at":82,"status":16,"created_at":113,"updated_at":114,"faqs":115,"releases":146},1242,"knowsuchagency\u002Fmcp2cli","mcp2cli","Turn any MCP, OpenAPI, or GraphQL server into a CLI — at runtime, with zero codegen","mcp2cli 是一个能够在运行时将任何 MCP 服务器、OpenAPI 接口或 GraphQL 端点转换为命令行工具（CLI）的开源工具，无需任何代码生成。它简化了与各种 API 的交互过程，让用户可以直接通过命令行调用 API 工具，而不需要编写额外的代码或配置复杂的客户端。\n\n它解决了传统 API 调用中常见的繁琐问题，比如手动处理认证、解析文档、编写客户端代码等。通过 mcp2cli，用户可以快速发现并调用 API 提供的功能，同时支持 OAuth 认证和敏感信息的安全管理，如从环境变量或文件中读取密钥，避免在命令行中直接暴露敏感数据。\n\n这个工具非常适合开发者和研究人员使用，尤其是那些需要频繁与不同 API 交互的用户。对于希望提升工作效率、减少重复工作的技术人员来说，mcp2cli 提供了一种简洁高效的解决方案。其独特的亮点在于零代码生成、自动处理认证流程以及对多种 API 类型的支持，使得 API 调用变得更加直观和便捷。","\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fknowsuchagency_mcp2cli_readme_18931afba5b8.png\" alt=\"mcp2cli — one CLI for every API\" width=\"700\">\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">mcp2cli\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n  Turn any MCP server, OpenAPI spec, or GraphQL endpoint into a CLI — at runtime, with zero codegen.\u003Cbr>\n  \u003Cstrong>Save 96–99% of the tokens wasted on tool schemas every turn.\u003C\u002Fstrong>\u003Cbr>\u003Cbr>\n  \u003Ca href=\"https:\u002F\u002Fwww.orangecountyai.com\u002Fblog\u002Fmcp2cli-one-cli-for-every-api-zero-wasted-tokens\">\u003Cstrong>Read the full writeup →\u003C\u002Fstrong>\u003C\u002Fa>\n\u003C\u002Fp>\n\n## Install\n\n```bash\n# Run directly without installing\nuvx mcp2cli --help\n\n# Or install globally\nuv tool install mcp2cli\n```\n\n## AI Agent Skill\n\nmcp2cli ships with an installable [skill](https:\u002F\u002Fskills.sh) that teaches AI coding agents (Claude Code, Cursor, Codex) how to use it. Once installed, your agent can discover and call any MCP server or OpenAPI endpoint — and even generate new skills from APIs.\n\n```bash\nnpx skills add knowsuchagency\u002Fmcp2cli --skill mcp2cli\n```\n\nAfter installing, try prompts like:\n- `mcp2cli --mcp https:\u002F\u002Fmcp.example.com\u002Fsse` — interact with an MCP server\n- `mcp2cli create a skill for https:\u002F\u002Fapi.example.com\u002Fopenapi.json` — generate a skill from an API\n\n## Usage\n\n### MCP HTTP\u002FSSE mode\n\n```bash\n# Connect to an MCP server over HTTP\nmcp2cli --mcp https:\u002F\u002Fmcp.example.com\u002Fsse --list\n\n# Call a tool\nmcp2cli --mcp https:\u002F\u002Fmcp.example.com\u002Fsse search --query \"test\"\n\n# With auth header\nmcp2cli --mcp https:\u002F\u002Fmcp.example.com\u002Fsse --auth-header \"x-api-key:sk-...\" \\\n  query --sql \"SELECT 1\"\n\n# Force a specific transport (skip streamable HTTP fallback dance)\nmcp2cli --mcp https:\u002F\u002Fmcp.example.com\u002Fsse --transport sse --list\n\n# Search tools by name or description (case-insensitive substring match)\nmcp2cli --mcp https:\u002F\u002Fmcp.example.com\u002Fsse --search \"task\"\n```\n\n`--search` implies `--list` and works across all modes (`--mcp`, `--spec`, `--graphql`, `--mcp-stdio`).\n\n### OAuth authentication\n\nAPIs that require OAuth are supported out of the box — across MCP, OpenAPI, and GraphQL modes.\nmcp2cli handles token acquisition, caching, and refresh automatically.\n\n```bash\n# Authorization code + PKCE flow (opens browser for login)\nmcp2cli --mcp https:\u002F\u002Fmcp.example.com\u002Fsse --oauth --list\nmcp2cli --spec https:\u002F\u002Fapi.example.com\u002Fopenapi.json --oauth --list\nmcp2cli --graphql https:\u002F\u002Fapi.example.com\u002Fgraphql --oauth --list\n\n# Client credentials flow (machine-to-machine, no browser)\nmcp2cli --spec https:\u002F\u002Fapi.example.com\u002Fopenapi.json \\\n  --oauth-client-id \"my-client-id\" \\\n  --oauth-client-secret \"my-secret\" \\\n  list-pets\n\n# With specific scopes\nmcp2cli --graphql https:\u002F\u002Fapi.example.com\u002Fgraphql --oauth --oauth-scope \"read write\" users\n\n# Local spec file — use --base-url for OAuth discovery\nmcp2cli --spec .\u002Fopenapi.json --base-url https:\u002F\u002Fapi.example.com --oauth --list\n```\n\nTokens are persisted in `~\u002F.cache\u002Fmcp2cli\u002Foauth\u002F` so subsequent calls reuse existing tokens\nand refresh automatically when they expire.\n\n### Secrets from environment or files\n\nSensitive values (`--auth-header` values, `--oauth-client-id`, `--oauth-client-secret`) support\n`env:` and `file:` prefixes to avoid passing secrets as CLI arguments (which are visible in\nprocess listings):\n\n```bash\n# Read from environment variable\nmcp2cli --mcp https:\u002F\u002Fmcp.example.com\u002Fsse \\\n  --auth-header \"Authorization:env:MY_API_TOKEN\" \\\n  --list\n\n# Read from file\nmcp2cli --mcp https:\u002F\u002Fmcp.example.com\u002Fsse \\\n  --oauth-client-secret \"file:\u002Frun\u002Fsecrets\u002Fclient_secret\" \\\n  --oauth-client-id \"my-client-id\" \\\n  --list\n\n# Works with secret managers that inject env vars\nfnox exec -- mcp2cli --mcp https:\u002F\u002Fmcp.example.com\u002Fsse \\\n  --oauth-client-id \"env:OAUTH_CLIENT_ID\" \\\n  --oauth-client-secret \"env:OAUTH_CLIENT_SECRET\" \\\n  --list\n```\n\n### MCP stdio mode\n\n```bash\n# List tools from an MCP server\nmcp2cli --mcp-stdio \"npx @modelcontextprotocol\u002Fserver-filesystem \u002Ftmp\" --list\n\n# Call a tool\nmcp2cli --mcp-stdio \"npx @modelcontextprotocol\u002Fserver-filesystem \u002Ftmp\" \\\n  read-file --path \u002Ftmp\u002Fhello.txt\n\n# Pass environment variables to the server process\nmcp2cli --mcp-stdio \"node server.js\" --env API_KEY=sk-... --env DEBUG=1 \\\n  search --query \"test\"\n```\n\n### OpenAPI mode\n\n```bash\n# List all commands from a remote spec\nmcp2cli --spec https:\u002F\u002Fpetstore3.swagger.io\u002Fapi\u002Fv3\u002Fopenapi.json --list\n\n# Call an endpoint\nmcp2cli --spec .\u002Fopenapi.json --base-url https:\u002F\u002Fapi.example.com list-pets --status available\n\n# With auth\nmcp2cli --spec .\u002Fspec.json --auth-header \"Authorization:Bearer tok_...\" create-item --name \"Test\"\n\n# POST with JSON body from stdin\necho '{\"name\": \"Fido\", \"tag\": \"dog\"}' | mcp2cli --spec .\u002Fspec.json create-pet --stdin\n\n# Local YAML spec\nmcp2cli --spec .\u002Fapi.yaml --base-url http:\u002F\u002Flocalhost:8000 --list\n```\n\n### GraphQL mode\n\n```bash\n# List all queries and mutations from a GraphQL endpoint\nmcp2cli --graphql https:\u002F\u002Fapi.example.com\u002Fgraphql --list\n\n# Call a query\nmcp2cli --graphql https:\u002F\u002Fapi.example.com\u002Fgraphql users --limit 10\n\n# Call a mutation\nmcp2cli --graphql https:\u002F\u002Fapi.example.com\u002Fgraphql create-user --name \"Alice\" --email \"alice@example.com\"\n\n# Override auto-generated selection set fields\nmcp2cli --graphql https:\u002F\u002Fapi.example.com\u002Fgraphql users --fields \"id name email\"\n\n# With auth\nmcp2cli --graphql https:\u002F\u002Fapi.example.com\u002Fgraphql --auth-header \"Authorization:Bearer tok_...\" users\n```\n\nmcp2cli introspects the endpoint, discovers queries and mutations, auto-generates selection sets, and constructs parameterized queries with proper variable declarations. No SDL parsing, no code generation — just point and run.\n\n### Bake mode — save connection settings\n\nTired of repeating `--spec`\u002F`--mcp`\u002F`--mcp-stdio` plus auth flags on every invocation? Bake them into a named configuration:\n\n```bash\n# Create a baked tool from an OpenAPI spec\nmcp2cli bake create petstore --spec https:\u002F\u002Fapi.example.com\u002Fspec.json \\\n  --exclude \"delete-*,update-*\" --methods GET,POST --cache-ttl 7200\n\n# Create a baked tool from an MCP stdio server\nmcp2cli bake create mygit --mcp-stdio \"npx @mcp\u002Fgithub\" \\\n  --include \"search-*,list-*\" --exclude \"delete-*\"\n\n# Use a baked tool with @ prefix — no connection flags needed\nmcp2cli @petstore --list\nmcp2cli @petstore list-pets --limit 10\nmcp2cli @mygit search-repos --query \"rust\"\n\n# Manage baked tools\nmcp2cli bake list                         # show all baked tools\nmcp2cli bake show petstore                # show config (secrets masked)\nmcp2cli bake update petstore --cache-ttl 3600\nmcp2cli bake remove petstore\nmcp2cli bake install petstore             # creates ~\u002F.local\u002Fbin\u002Fpetstore wrapper\nmcp2cli bake install petstore --dir .\u002Fscripts\u002F  # install wrapper to custom directory\n```\n\nFiltering options:\n- `--include` — comma-separated glob patterns to whitelist tools (e.g. `\"list-*,get-*\"`)\n- `--exclude` — comma-separated glob patterns to blacklist tools (e.g. `\"delete-*\"`)\n- `--methods` — comma-separated HTTP methods to allow (e.g. `\"GET,POST\"`, OpenAPI only)\n\nConfigs are stored in `~\u002F.config\u002Fmcp2cli\u002Fbaked.json`. Override with `MCP2CLI_CONFIG_DIR`.\n\n### Output control\n\n```bash\n# Pretty-print JSON (also auto-enabled for TTY)\nmcp2cli --spec .\u002Fspec.json --pretty list-pets\n\n# Raw response body (no JSON parsing)\nmcp2cli --spec .\u002Fspec.json --raw get-data\n\n# Filter JSON with jq (preferred over Python for JSON processing)\nmcp2cli --spec .\u002Fspec.json list-pets --jq '.[].name'\nmcp2cli --spec .\u002Fspec.json list-pets --jq '[.[] | select(.status == \"available\")] | length'\n\n# Truncate large responses to first N records\nmcp2cli --spec .\u002Fspec.json list-records --head 5\nmcp2cli --spec .\u002Fspec.json list-records --head 3 --jq '.'  # preview then filter\n\n# Pipe-friendly (compact JSON when not a TTY)\nmcp2cli --spec .\u002Fspec.json list-pets | jq '.[] | .name'\n\n# TOON output — token-efficient encoding for LLM consumption\n# Best for large uniform arrays (40-60% fewer tokens than JSON)\nmcp2cli --mcp https:\u002F\u002Fmcp.example.com\u002Fsse --toon list-tags\n```\n\n### Caching\n\nSpecs and MCP tool lists are cached in `~\u002F.cache\u002Fmcp2cli\u002F` with a 1-hour TTL by default.\n\n```bash\n# Force refresh\nmcp2cli --spec https:\u002F\u002Fapi.example.com\u002Fspec.json --refresh --list\n\n# Custom TTL (seconds)\nmcp2cli --spec https:\u002F\u002Fapi.example.com\u002Fspec.json --cache-ttl 86400 --list\n\n# Custom cache key\nmcp2cli --spec https:\u002F\u002Fapi.example.com\u002Fspec.json --cache-key my-api --list\n\n# Override cache directory\nMCP2CLI_CACHE_DIR=\u002Ftmp\u002Fmy-cache mcp2cli --spec .\u002Fspec.json --list\n```\n\nLocal file specs are never cached.\n\n## CLI reference\n\n```\nmcp2cli [global options] \u003Csubcommand> [command options]\n\nSource (mutually exclusive, one required):\n  --spec URL|FILE       OpenAPI spec (JSON or YAML, local or remote)\n  --mcp URL             MCP server URL (HTTP\u002FSSE)\n  --mcp-stdio CMD       MCP server command (stdio transport)\n  --graphql URL         GraphQL endpoint URL\n\nOptions:\n  --auth-header K:V       HTTP header (repeatable, value supports env:\u002Ffile: prefixes)\n  --base-url URL          Override base URL from spec\n  --transport TYPE        MCP HTTP transport: auto|sse|streamable (default: auto)\n  --env KEY=VALUE         Env var for MCP stdio server (repeatable)\n  --oauth                 Enable OAuth (authorization code + PKCE flow)\n  --oauth-client-id ID    OAuth client ID (supports env:\u002Ffile: prefixes)\n  --oauth-client-secret S OAuth client secret (supports env:\u002Ffile: prefixes)\n  --oauth-scope SCOPE     OAuth scope(s) to request\n  --cache-key KEY         Custom cache key\n  --cache-ttl SECONDS     Cache TTL (default: 3600)\n  --refresh               Bypass cache\n  --list                  List available subcommands\n  --search PATTERN        Search tools by name or description (implies --list)\n  --fields FIELDS         Override GraphQL selection set (e.g. \"id name email\")\n  --pretty                Pretty-print JSON output\n  --raw                   Print raw response body\n  --toon                  Encode output as TOON (token-efficient for LLMs)\n  --jq EXPR               Filter JSON output through jq expression\n  --head N                Limit output to first N records (arrays)\n  --version               Show version\n\nBake mode:\n  bake create NAME [opts]   Save connection settings as a named tool\n  bake list                 List all baked tools\n  bake show NAME            Show config (secrets masked)\n  bake update NAME [opts]   Update a baked tool\n  bake remove NAME          Delete a baked tool\n  bake install NAME         Create ~\u002F.local\u002Fbin wrapper script\n  @NAME [args]              Run a baked tool (e.g. mcp2cli @petstore --list)\n```\n\nSubcommands and their flags are generated dynamically from the spec or MCP server tool definitions. Run `\u003Csubcommand> --help` for details.\n\n> For token savings analysis, architecture details, and comparison to Anthropic's Tool Search, see the **[full writeup on the OCAI blog](https:\u002F\u002Fwww.orangecountyai.com\u002Fblog\u002Fmcp2cli-one-cli-for-every-api-zero-wasted-tokens)**.\n\n## Development\n\n```bash\n# Install with test + MCP deps\nuv sync --extra test\n\n# Run tests (96 tests covering OpenAPI, MCP stdio, MCP HTTP, caching, and token savings)\nuv run pytest tests\u002F -v\n\n# Run just the token savings tests\nuv run pytest tests\u002Ftest_token_savings.py -v -s\n```\n\n---\n\n## License\n\n[MIT](LICENSE)\n\n---\n\n\u003Csub>mcp2cli builds on ideas from [CLIHub](https:\u002F\u002Fkanyilmaz.me\u002F2026\u002F02\u002F23\u002Fcli-vs-mcp.html) by Kagan Yilmaz (CLI-based tool access for token efficiency)\u003C\u002Fsub>\n","\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fknowsuchagency_mcp2cli_readme_18931afba5b8.png\" alt=\"mcp2cli — 一个 CLI 适用于所有 API\" width=\"700\">\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">mcp2cli\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n  将任何 MCP 服务器、OpenAPI 规范或 GraphQL 端点在运行时转化为 CLI，无需任何代码生成。\u003Cbr>\n  \u003Cstrong>每次调用可节省 96%–99% 的工具模式中浪费的令牌。\u003C\u002Fstrong>\u003Cbr>\u003Cbr>\n  \u003Ca href=\"https:\u002F\u002Fwww.orangecountyai.com\u002Fblog\u002Fmcp2cli-one-cli-for-every-api-zero-wasted-tokens\">\u003Cstrong>阅读完整文章 →\u003C\u002Fstrong>\u003C\u002Fa>\n\u003C\u002Fp>\n\n## 安装\n\n```bash\n# 无需安装即可直接运行\nuvx mcp2cli --help\n\n# 或全局安装\nuv tool install mcp2cli\n```\n\n## AI 代理技能\n\nmcp2cli 随附一个可安装的 [技能](https:\u002F\u002Fskills.sh)，用于教导 AI 编码代理（Claude Code、Cursor、Codex）如何使用它。安装后，您的代理可以发现并调用任何 MCP 服务器或 OpenAPI 端点——甚至可以从 API 生成新技能。\n\n```bash\nnpx skills add knowsuchagency\u002Fmcp2cli --skill mcp2cli\n```\n\n安装后，您可以尝试以下提示：\n- `mcp2cli --mcp https:\u002F\u002Fmcp.example.com\u002Fsse` — 与 MCP 服务器交互\n- `mcp2cli create a skill for https:\u002F\u002Fapi.example.com\u002Fopenapi.json` — 从 API 生成技能\n\n## 使用方法\n\n### MCP HTTP\u002FSSE 模式\n\n```bash\n# 通过 HTTP 连接到 MCP 服务器\nmcp2cli --mcp https:\u002F\u002Fmcp.example.com\u002Fsse --list\n\n# 调用工具\nmcp2cli --mcp https:\u002F\u002Fmcp.example.com\u002Fsse search --query \"test\"\n\n# 带认证头\nmcp2cli --mcp https:\u002F\u002Fmcp.example.com\u002Fsse --auth-header \"x-api-key:sk-...\" \\\n  query --sql \"SELECT 1\"\n\n# 强制指定特定传输方式（跳过可流式传输的 HTTP 回退流程）\nmcp2cli --mcp https:\u002F\u002Fmcp.example.com\u002Fsse --transport sse --list\n\n# 按名称或描述搜索工具（不区分大小写的子字符串匹配）\nmcp2cli --mcp https:\u002F\u002Fmcp.example.com\u002Fsse --search \"task\"\n```\n\n`--search` 默认包含 `--list`，且适用于所有模式（`--mcp`、`--spec`、`--graphql`、`--mcp-stdio`）。\n\n### OAuth 认证\n\n支持需要 OAuth 的 API——无论是在 MCP、OpenAPI 还是 GraphQL 模式下。\nmcp2cli 会自动处理令牌获取、缓存和刷新。\n\n```bash\n# 授权码 + PKCE 流程（打开浏览器进行登录）\nmcp2cli --mcp https:\u002F\u002Fmcp.example.com\u002Fsse --oauth --list\nmcp2cli --spec https:\u002F\u002Fapi.example.com\u002Fopenapi.json --oauth --list\nmcp2cli --graphql https:\u002F\u002Fapi.example.com\u002Fgraphql --oauth --list\n\n# 客户端凭证流程（机器对机器，无需浏览器）\nmcp2cli --spec https:\u002F\u002Fapi.example.com\u002Fopenapi.json \\\n  --oauth-client-id \"my-client-id\" \\\n  --oauth-client-secret \"my-secret\" \\\n  list-pets\n\n# 指定特定作用域\nmcp2cli --graphql https:\u002F\u002Fapi.example.com\u002Fgraphql --oauth --oauth-scope \"read write\" users\n\n# 本地规范文件——使用 --base-url 进行 OAuth 发现\nmcp2cli --spec .\u002Fopenapi.json --base-url https:\u002F\u002Fapi.example.com --oauth --list\n```\n\n令牌会持久化保存在 `~\u002F.cache\u002Fmcp2cli\u002Foauth\u002F` 中，因此后续调用会复用现有令牌，并在过期时自动刷新。\n\n### 从环境变量或文件中读取密钥\n\n敏感值（如 `--auth-header` 值、`--oauth-client-id`、`--oauth-client-secret`）支持使用 `env:` 和 `file:` 前缀，以避免将密钥作为 CLI 参数传递（这些参数会在进程列表中可见）：\n\n```bash\n# 从环境变量读取\nmcp2cli --mcp https:\u002F\u002Fmcp.example.com\u002Fsse \\\n  --auth-header \"Authorization:env:MY_API_TOKEN\" \\\n  --list\n\n# 从文件读取\nmcp2cli --mcp https:\u002F\u002Fmcp.example.com\u002Fsse \\\n  --oauth-client-secret \"file:\u002Frun\u002Fsecrets\u002Fclient_secret\" \\\n  --oauth-client-id \"my-client-id\" \\\n  --list\n\n# 适用于注入环境变量的密钥管理器\nfnox exec -- mcp2cli --mcp https:\u002F\u002Fmcp.example.com\u002Fsse \\\n  --oauth-client-id \"env:OAUTH_CLIENT_ID\" \\\n  --oauth-client-secret \"env:OAUTH_CLIENT_SECRET\" \\\n  --list\n```\n\n### MCP stdio 模式\n\n```bash\n# 列出 MCP 服务器上的工具\nmcp2cli --mcp-stdio \"npx @modelcontextprotocol\u002Fserver-filesystem \u002Ftmp\" --list\n\n# 调用工具\nmcp2cli --mcp-stdio \"npx @modelcontextprotocol\u002Fserver-filesystem \u002Ftmp\" \\\n  read-file --path \u002Ftmp\u002Fhello.txt\n\n# 向服务器进程传递环境变量\nmcp2cli --mcp-stdio \"node server.js\" --env API_KEY=sk-... --env DEBUG=1 \\\n  search --query \"test\"\n```\n\n### OpenAPI 模式\n\n```bash\n# 列出远程规范中的所有命令\nmcp2cli --spec https:\u002F\u002Fpetstore3.swagger.io\u002Fapi\u002Fv3\u002Fopenapi.json --list\n\n# 调用端点\nmcp2cli --spec .\u002Fopenapi.json --base-url https:\u002F\u002Fapi.example.com list-pets --status available\n\n# 带认证\nmcp2cli --spec .\u002Fspec.json --auth-header \"Authorization:Bearer tok_...\" create-item --name \"Test\"\n\n# 通过标准输入发送 JSON 请求体\necho '{\"name\": \"Fido\", \"tag\": \"dog\"}' | mcp2cli --spec .\u002Fspec.json create-pet --stdin\n\n# 本地 YAML 规范\nmcp2cli --spec .\u002Fapi.yaml --base-url http:\u002F\u002Flocalhost:8000 --list\n```\n\n### GraphQL 模式\n\n```bash\n# 列出 GraphQL 端点上的所有查询和突变\nmcp2cli --graphql https:\u002F\u002Fapi.example.com\u002Fgraphql --list\n\n# 调用查询\nmcp2cli --graphql https:\u002F\u002Fapi.example.com\u002Fgraphql users --limit 10\n\n# 调用突变\nmcp2cli --graphql https:\u002F\u002Fapi.example.com\u002Fgraphql create-user --name \"Alice\" --email \"alice@example.com\"\n\n# 覆盖自动生成的选择集字段\nmcp2cli --graphql https:\u002F\u002Fapi.example.com\u002Fgraphql users --fields \"id name email\"\n\n# 带认证\nmcp2cli --graphql https:\u002F\u002Fapi.example.com\u002Fgraphql --auth-header \"Authorization:Bearer tok_...\" users\n```\n\nmcp2cli 会自动检查端点，发现查询和突变，自动生成选择集，并构建带有正确变量声明的参数化查询。无需解析 SDL，无需代码生成——只需指向并运行即可。\n\n### Bake 模式——保存连接设置\n\n厌倦了每次调用都要重复 `--spec`\u002F`--mcp`\u002F`--mcp-stdio` 以及认证标志？将它们烘焙成一个命名配置：\n\n```bash\n# 从 OpenAPI 规范创建烘焙工具\nmcp2cli bake create petstore --spec https:\u002F\u002Fapi.example.com\u002Fspec.json \\\n  --exclude \"delete-*,update-*\" --methods GET,POST --cache-ttl 7200\n\n# 从 MCP stdio 服务器创建烘焙工具\nmcp2cli bake create mygit --mcp-stdio \"npx @mcp\u002Fgithub\" \\\n  --include \"search-*,list-*\" --exclude \"delete-*\"\n\n# 使用带 @ 前缀的烘焙工具——无需连接标志\nmcp2cli @petstore --list\nmcp2cli @petstore list-pets --limit 10\nmcp2cli @mygit search-repos --query \"rust\"\n\n# 管理已烘焙工具\nmcp2cli bake list                         # 显示所有已烘焙工具\nmcp2cli bake show petstore                # 显示配置（密钥已屏蔽）\nmcp2cli bake update petstore --cache-ttl 3600\nmcp2cli bake remove petstore\nmcp2cli bake install petstore             # 创建 ~\u002F.local\u002Fbin\u002Fpetstore 包装脚本\nmcp2cli bake install petstore --dir .\u002Fscripts\u002F  # 将包装脚本安装到自定义目录\n```\n\n筛选选项：\n- `--include` — 用逗号分隔的 glob 模式，用于白名单工具（例如 `\"list-*,get-*\"`）\n- `--exclude` — 用逗号分隔的 glob 模式，用于黑名单工具（例如 `\"delete-*\"`）\n- `--methods` — 用逗号分隔的 HTTP 方法，用于允许的请求方法（例如 `\"GET,POST\"`，仅适用于 OpenAPI）\n\n配置存储在 `~\u002F.config\u002Fmcp2cli\u002Fbaked.json` 中。可通过 `MCP2CLI_CONFIG_DIR` 进行覆盖。\n\n### 输出控制\n\n```bash\n# 格式化输出 JSON（在终端中也会自动启用）\nmcp2cli --spec .\u002Fspec.json --pretty list-pets\n\n# 原始响应体（不解析 JSON）\nmcp2cli --spec .\u002Fspec.json --raw get-data\n\n# 使用 jq 过滤 JSON（相比 Python 更适合 JSON 处理）\nmcp2cli --spec .\u002Fspec.json list-pets --jq '.[].name'\nmcp2cli --spec .\u002Fspec.json list-pets --jq '[.[] | select(.status == \"available\")] | length'\n\n# 截取大型响应的前 N 条记录\nmcp2cli --spec .\u002Fspec.json list-records --head 5\nmcp2cli --spec .\u002Fspec.json list-records --head 3 --jq '.'  # 先预览再过滤\n\n# 便于管道处理（非终端时使用紧凑 JSON）\nmcp2cli --spec .\u002Fspec.json list-pets | jq '.[] | .name'\n\n# TOON 输出 — 面向大模型消费的省 token 编码\n# 最适合大型均匀数组（比 JSON 少 40%-60% 的 token）\nmcp2cli --mcp https:\u002F\u002Fmcp.example.com\u002Fsse --toon list-tags\n```\n\n### 缓存\n\n规范和 MCP 工具列表默认会缓存在 `~\u002F.cache\u002Fmcp2cli\u002F` 中，TTL 为 1 小时。\n\n```bash\n# 强制刷新\nmcp2cli --spec https:\u002F\u002Fapi.example.com\u002Fspec.json --refresh --list\n\n# 自定义 TTL（秒）\nmcp2cli --spec https:\u002F\u002Fapi.example.com\u002Fspec.json --cache-ttl 86400 --list\n\n# 自定义缓存键\nmcp2cli --spec https:\u002F\u002Fapi.example.com\u002Fspec.json --cache-key my-api --list\n\n# 覆盖缓存目录\nMCP2CLI_CACHE_DIR=\u002Ftmp\u002Fmy-cache mcp2cli --spec .\u002Fspec.json --list\n```\n\n本地文件规范永远不会被缓存。\n\n## CLI 参考\n\n```\nmcp2cli [全局选项] \u003C子命令> [命令选项]\n\n来源（互斥，必选其一）：\n  --spec URL|FILE       OpenAPI 规范（JSON 或 YAML，本地或远程）\n  --mcp URL             MCP 服务器 URL（HTTP\u002FSSE）\n  --mcp-stdio CMD       MCP 服务器命令（标准输入输出传输）\n  --graphql URL         GraphQL 端点 URL\n\n选项：\n  --auth-header K:V       HTTP 头部（可重复，值支持 env:\u002Ffile: 前缀）\n  --base-url URL          覆盖规范中的基础 URL\n  --transport TYPE        MCP HTTP 传输方式：auto|sse|streamable（默认：auto）\n  --env KEY=VALUE         MCP 标准输入输出服务器的环境变量（可重复）\n  --oauth                 启用 OAuth（授权码 + PKCE 流程）\n  --oauth-client-id ID    OAuth 客户端 ID（支持 env:\u002Ffile: 前缀）\n  --oauth-client-secret S OAuth 客户端密钥（支持 env:\u002Ffile: 前缀）\n  --oauth-scope SCOPE     请求的 OAuth 范围\n  --cache-key KEY         自定义缓存键\n  --cache-ttl SECONDS     缓存 TTL（默认：3600）\n  --refresh               绕过缓存\n  --list                  列出可用的子命令\n  --search PATTERN        按名称或描述搜索工具（隐含 --list）\n  --fields FIELDS         覆盖 GraphQL 选择集（例如 \"id name email\"）\n  --pretty                格式化输出 JSON\n  --raw                   打印原始响应体\n  --toon                  将输出编码为 TOON（面向大模型的省 token 格式）\n  --jq EXPR               通过 jq 表达式过滤 JSON 输出\n  --head N                限制输出为前 N 条记录（数组）\n  --version               显示版本\n\n烘焙模式：\n  bake create NAME [opts]   将连接设置保存为命名工具\n  bake list                 列出所有已烘焙工具\n  bake show NAME            显示配置（密钥已屏蔽）\n  bake update NAME [opts]   更新一个已烘焙工具\n  bake remove NAME          删除一个已烘焙工具\n  bake install NAME         创建 ~\u002F.local\u002Fbin 包装脚本\n  @NAME [args]              运行一个已烘焙工具（例如 mcp2cli @petstore --list）\n```\n\n子命令及其标志会根据规范或 MCP 服务器工具定义动态生成。运行 `\u003C子命令> --help` 查看详细信息。\n\n> 关于节省 token 的分析、架构细节以及与 Anthropic 的 Tool Search 的对比，请参阅 **[OCAI 博客上的完整文章](https:\u002F\u002Fwww.orangecountyai.com\u002Fblog\u002Fmcp2cli-one-cli-for-every-api-zero-wasted-tokens)**。\n\n## 开发\n\n```bash\n# 安装并包含测试和 MCP 依赖\nuv sync --extra test\n\n# 运行测试（96 项测试，涵盖 OpenAPI、MCP 标准输入输出、MCP HTTP、缓存及节省 token）\nuv run pytest tests\u002F -v\n\n# 仅运行节省 token 的测试\nuv run pytest tests\u002Ftest_token_savings.py -v -s\n```\n\n---\n\n## 许可证\n\n[MIT](LICENSE)\n\n---\n\n\u003Csub>mcp2cli 基于 Kagan Yilmaz 的 [CLIHub](https:\u002F\u002Fkanyilmaz.me\u002F2026\u002F02\u002F23\u002Fcli-vs-mcp.html) 思想构建（基于 CLI 的工具访问以实现 token 效率）\u003C\u002Fsub>","# mcp2cli 快速上手指南\n\n## 环境准备\n\n- **系统要求**：支持 Linux、macOS 和 Windows（通过 WSL）。\n- **前置依赖**：\n  - Python 3.8 或更高版本\n  - `uv`（推荐使用 [uv](https:\u002F\u002Fgithub.com\u002Fastral-sh\u002Fuv) 包管理器，可加速安装和依赖解析）\n  - 如果使用国内网络，建议配置镜像源以加快下载速度。\n\n---\n\n## 安装步骤\n\n### 方法一：无需安装直接运行（推荐）\n\n```bash\nuvx mcp2cli --help\n```\n\n### 方法二：全局安装（适用于频繁使用）\n\n```bash\nuv tool install mcp2cli\n```\n\n> 💡 提示：如果你在国内，可以使用 `uv` 的镜像源来加速安装。例如：\n> ```bash\n> uvx --index-url https:\u002F\u002Fmirrors.aliyun.com\u002Fpypi\u002Fsimple\u002F mcp2cli --help\n> ```\n\n---\n\n## 基本使用\n\n### 示例 1：连接 MCP 服务器并列出可用命令\n\n```bash\nmcp2cli --mcp https:\u002F\u002Fmcp.example.com\u002Fsse --list\n```\n\n### 示例 2：调用 MCP 服务器的搜索工具\n\n```bash\nmcp2cli --mcp https:\u002F\u002Fmcp.example.com\u002Fsse search --query \"test\"\n```\n\n### 示例 3：从 OpenAPI 规范生成 CLI 工具\n\n```bash\nmcp2cli --spec https:\u002F\u002Fpetstore3.swagger.io\u002Fapi\u002Fv3\u002Fopenapi.json --list\n```\n\n### 示例 4：调用 OpenAPI 接口\n\n```bash\nmcp2cli --spec .\u002Fopenapi.json --base-url https:\u002F\u002Fapi.example.com list-pets --status available\n```\n\n### 示例 5：使用 Bake 模式保存配置（避免重复输入参数）\n\n```bash\nmcp2cli bake create petstore --spec https:\u002F\u002Fapi.example.com\u002Fspec.json --methods GET,POST\nmcp2cli @petstore list-pets --limit 10\n```\n\n---\n\n以上是 mcp2cli 的快速入门指南，你可以根据实际需求选择不同的模式（MCP、OpenAPI、GraphQL）进行操作。","某电商平台的后端开发团队正在为多个第三方服务集成API接口，包括商品管理、订单处理和用户认证等。这些API分别基于不同的协议（如OpenAPI、GraphQL）并需要OAuth认证，开发人员需要频繁地调用这些接口进行测试和调试。\n\n### 没有 mcp2cli 时\n\n- 开发人员需要为每个API手动编写CLI脚本或使用现成工具，耗时且容易出错。\n- 不同协议之间的切换复杂，每次都需要重新配置工具或学习新的命令格式。\n- OAuth认证流程繁琐，需要手动获取和刷新令牌，影响调试效率。\n- API变更后，CLI工具无法自动适配，需重新生成代码或调整脚本。\n- 调试过程中难以快速发现可用的API方法，依赖文档查找和记忆。\n\n### 使用 mcp2cli 后\n\n- 可以通过单一命令将任意OpenAPI、GraphQL或MCP服务器即时转换为CLI，无需额外开发或配置。\n- 支持多种协议和认证方式（如OAuth），自动处理令牌获取与刷新，简化调试流程。\n- 提供`--search`功能，可直接在命令行中搜索API方法，提升调试效率。\n- API更新后，mcp2cli能实时识别新接口，无需重新生成代码或修改脚本。\n- 集成AI技能后，开发人员可以更高效地与API交互，甚至自动生成新的技能模块。\n\n核心价值：mcp2cli让开发人员能够快速、灵活地与各种API交互，显著减少调试时间并提升工作效率。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fknowsuchagency_mcp2cli_18931afb.png","knowsuchagency","Stephan Fitzpatrick","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fknowsuchagency_7024338e.jpg","“Talk is cheap. Show me the code.”","KNOWSUCHAGENCY CORP","Irvine","stephan@knowsuchagency.com",null,"https:\u002F\u002Fknowsuchagency.com","https:\u002F\u002Fgithub.com\u002Fknowsuchagency",[86],{"name":87,"color":88,"percentage":89},"Python","#3572A5",100,1869,127,"2026-04-05T10:09:45","MIT","Linux, macOS, Windows","未说明",{"notes":97,"python":98,"dependencies":99},"支持通过 CLI 直接运行，无需安装；支持从环境变量或文件读取敏感信息；支持 OAuth 认证和多种传输方式（HTTP\u002FSSE\u002Fstdio）；支持缓存机制以提高性能。","3.8+",[100,101,102,103,104,105],"uv","skills.sh","npx","jq","fnox","pytest",[14,13,15,53],[108,109,110,111,112],"ai","cli","graphql","mcp","openapi","2026-03-27T02:49:30.150509","2026-04-06T06:45:59.890719",[116,121,126,131,136,141],{"id":117,"question_zh":118,"answer_zh":119,"source_url":120},5652,"如何解决工具描述在 `--list` 输出中被截断的问题？","工具描述在 `--list` 输出中默认被限制为 70 个字符，导致信息丢失。可以通过将硬性截断替换为基于单词边界截断并添加 `...` 的方式来修复此问题。此外，可以添加 `--verbose` 标志以显示完整描述，并使用 `textwrap` 进行换行处理。","https:\u002F\u002Fgithub.com\u002Fknowsuchagency\u002Fmcp2cli\u002Fissues\u002F32",{"id":122,"question_zh":123,"answer_zh":124,"source_url":125},5653,"当 MCP 工具描述中包含 `%` 符号时，`--help` 命令会崩溃吗？如何解决？","是的，如果工具描述中包含 `%` 符号，`mcp2cli` 在生成帮助信息时会因 `argparse` 的格式化处理而崩溃。解决方案是避免将原始描述直接传递给 `argparse`，或者对描述内容进行转义处理。","https:\u002F\u002Fgithub.com\u002Fknowsuchagency\u002Fmcp2cli\u002Fissues\u002F23",{"id":127,"question_zh":128,"answer_zh":129,"source_url":130},5654,"如何解决与 Brevo MCP 服务器连接时工具调用超时或挂起的问题？","由于 Brevo 的 HTTP MCP 服务器工具数量较多（如 142 个），每次调用都会重新建立连接并下载所有工具的 schema，这会导致性能问题。建议使用 `--transport sse` 参数尝试 SSE 协议，但需注意 Brevo 服务器可能在初始化前关闭连接。可考虑优化网络设置或联系服务器管理员以改善性能。","https:\u002F\u002Fgithub.com\u002Fknowsuchagency\u002Fmcp2cli\u002Fissues\u002F1",{"id":132,"question_zh":133,"answer_zh":134,"source_url":135},5655,"是否支持通过 `--search` 功能搜索工具？","是的，`--search` 功能已被实现，允许用户通过关键词搜索工具，从而减少上下文负载并提高查找效率。","https:\u002F\u002Fgithub.com\u002Fknowsuchagency\u002Fmcp2cli\u002Fissues\u002F14",{"id":137,"question_zh":138,"answer_zh":139,"source_url":140},5656,"是否支持 GraphQL 协议？","是的，GraphQL 支持已在最新主要版本中实现，现在可以同时支持 OpenAPI、MCP 和 GraphQL 协议。","https:\u002F\u002Fgithub.com\u002Fknowsuchagency\u002Fmcp2cli\u002Fissues\u002F12",{"id":142,"question_zh":143,"answer_zh":144,"source_url":145},5657,"如何解决技能（skills）中的安全警告问题？","安全警告问题已得到解决，维护者确认已更新相关技能以消除警告，确保其可以正常作为技能使用。","https:\u002F\u002Fgithub.com\u002Fknowsuchagency\u002Fmcp2cli\u002Fissues\u002F25",[]]