完全指南:按 Provider 查看可用模型、别名与能力)
pal-mcp-server 模型清单工具listmodels完全指南按 Provider 查看可用模型、别名与能力【免费下载链接】pal-mcp-serverThe power of Claude Code / GeminiCLI / CodexCLI [Gemini / OpenAI / OpenRouter / Azure / Grok / Ollama / Custom Model / All Of The Above] working as one.项目地址: https://gitcode.com/GitHub_Trending/ge/pal-mcp-server导读listmodels是 pal-mcp-server 内置的只读查询工具用于一次性展示服务器当前配置了哪些 AI 模型提供商、每个提供商下可用哪些模型、模型别名、上下文窗口大小以及扩展思考、视觉、代码生成等能力。本文结合 docs/tools/listmodels.md 与该工具在 tools/listmodels.py 中的完整实现讲解其用法、输出结构、配置依赖与源码级原理帮助你用它完成模型选型、能力核对、配置验证与上下文规划。工具定位一条命令看清全部模型资产pal-mcp-server 是一个将 Claude Code / GeminiCLI / CodexCLI 与 Gemini、OpenAI、OpenRouter、Azure、GrokX.AI、DIAL、Custom 等模型后端统一接入 MCP 的服务器。当你不确定当前环境里到底有哪些模型可用、它们的别名是什么、上下文窗口有多大时listmodels就是最直接的答案来源。从实现上看ListModelsTool继承自BaseTool但其execute()方法完全绕过了 AI 模型调用直接查询服务器配置并格式化输出因此它属于ToolModelCategory.FAST_RESPONSE类别见 tools/listmodels.py且get_annotations()声明为readOnlyHint只读工具tools/listmodels.py不会产生任何模型调用成本。用法零参数直接调用该工具不需要任何参数其输入 JSON Schema 为{type: object, properties: {}, required: [], additionalProperties: false}tools/listmodels.py。在与 MCP 客户端如 Claude Desktop、Claude Code 等集成的对话中只需向 Agent 发出自然语言指令即可触发Use pal to list available models工具执行后返回一个TextContent其中包裹了ToolOutput的 JSONstatus、content、content_type、metadata字段metadata中记录了tool_name与configured_providers计数tools/listmodels.py。输出信息详解工具的 Markdown 输出按提供商区块 模型明细 汇总组织共分三个层次。Provider Status提供商配置状态哪些提供商已配置并可用API Key 是否存在只显示✅/❌绝不泄露密钥本身提供商优先级顺序仅在模型路由时生效展示在输出中的只是配置状态。源码中以provider_info字典定义了原生提供商的友好名称与对应的环境变量键tools/listmodels.pyProviderType展示名称启用所需环境变量GOOGLEGoogle GeminiGEMINI_API_KEYOPENAIOpenAIOPENAI_API_KEYAZUREAzure OpenAIAZURE_OPENAI_API_KEYXAIX.AI (Grok)XAI_API_KEYDIALAI DIALDIAL_API_KEY另外还有两个独立处理的区块OpenRouter依赖OPENROUTER_API_KEY且要求不等于占位值your_openrouter_api_key_here见 tools/listmodels.py与Custom/Local API依赖CUSTOM_API_URL。Model Details模型明细对每个已配置提供商工具通过provider.get_capabilities_by_rank()按能力排序列出模型tools/listmodels.py每条包含完整模型名与其别名如pro→gemini-3-pro-preview上下文窗口大小token自动格式化为1M/128K等易读单位tools/listmodels.py能力描述模型擅长场景的文字说明特殊能力标记如Supports structured code generation由allow_code_generation标志控制。Capability Summary能力汇总输出末尾的## Summary区块给出三项全局统计tools/listmodels.pyConfigured Providers已配置提供商总数原生 5 家 OpenRouter Custom 各自计入Total Available Models通过ModelProviderRegistry.get_available_models(respect_restrictionsTrue)统计的可用模型总数Usage Tips使用建议包括优先使用别名、auto 模式下 CLI Agent 自动选模型、Custom 模型仅在设置CUSTOM_API_URL后可用、OpenRouter 一个 Key 即可访问多家云模型。示例输出文档给出的典型输出如下模型内容随配置与版本变化此处为示意 Available Models by Provider Google (Gemini) - ✅ Configured • pro (gemini-2.5-pro) - 1M context, thinking modes • flash (gemini-2.0-flash-experimental) - 1M context, ultra-fast OpenAI - ✅ Configured • o3 (o3) - 200K context, strong reasoning • o3-mini (o3-mini) - 200K context, balanced • o4-mini (o4-mini) - 200K context, latest reasoning Custom/Local - ✅ Configured • local-llama (llama3.2) - 128K context, local inference • Available at: http://localhost:11434/v1 OpenRouter - ❌ Not configured Set OPENROUTER_API_KEY to enable access to Claude, GPT-4, and more models实际实现中输出使用##/**结构的 Markdown已配置的提供商显示**Status**: Configured and available未配置的显示**Status**: Not configured (set 环境变量名)tools/listmodels.pyCustom 区块还会额外打印**Endpoint**地址tools/listmodels.py。源码原理输出是如何组装出来的原生提供商分支对 GOOGLE / OPENAI / AZURE / XAI / DIAL 五家工具调用ModelProviderRegistry.get_provider(provider_type)判断是否已配置。若未配置则直接提示设置对应环境变量若已配置则检查是否存在模型限制restriction_service.has_restrictions若有则走**Models (policy restricted)**分支只列出白名单内的模型否则走**Models**分支get_capabilities_by_rank()按能力排名输出全部模型并把所有别名收集到独立的**Aliases**区块tools/listmodels.py。format_model_entry()是核心格式化函数tools/listmodels.py它根据capabilities.model_name与展示名是否一致输出- \model或- alias → canonical 两种形式随后追加上下文窗口、描述与代码生成标记。OpenRouter 分支OpenRouter 是最复杂的区块。配置后工具通过OpenRouterModelRegistry解析每个模型并按config.model_name.split(/)[0]提取上游厂商名如anthropic、deepseek、qwen把模型按厂商分组展示tools/listmodels.py。每条记录会显示别名与真实模型的映射箭头如opus→anthropic/claude-opus-4-20240229scoreget_effective_capability_rank()计算的能力评分上下文窗口与是否支持 thinking如200K context, thinking。该评分由 providers/shared/model_capabilities.py 的get_effective_capability_rank()计算以人工评定的intelligence_score1–20放大 5 倍后为 5–100为基准叠加上下文窗口对数加分、输出 token 容量加分以及扩展思考、函数调用、JSON 模式、图像输入等特性加分最终收敛到 0–100 区间——这正是 OpenRouter 输出中score数字的来历。Custom/Local 分支当设置了CUSTOM_API_URL如 Ollama 的http://localhost:11434时工具通过CustomEndpointModelRegistry.list_aliases()枚举本地模型逐条输出alias → model_name (context)与描述tools/listmodels.py。这与Custom 模型仅在设置CUSTOM_API_URL后可用的提示一致——即使设置了CUSTOM_API_KEY但缺少 URL注册中心也会跳过该提供商providers/registry.py。数据来源JSON 能力注册表模型明细并非硬编码在工具中而是来自 JSON 能力注册表。例如 conf/gemini_models.json 定义了 Gemini 各模型的完整元数据model_name、friendly_name、aliases、intelligence_score、context_window、max_output_tokens、max_thinking_tokens以及supports_extended_thinking、supports_function_calling、supports_images、supports_json_mode、supports_temperature、allow_code_generation等能力开关。以其中的gemini-2.5-flash为例别名flash、flash2.5上下文窗口1048576即 1M支持扩展思考max_thinking_tokens: 24576、函数调用、JSON 模式与图像输入intelligence_score: 10对应输出中的快速分析定位。注册表加载逻辑在 providers/registries/base.py 中实现CustomModelRegistryBase支持从环境变量GEMINI_MODELS_CONFIG_PATH等路径或打包资源读取 JSON构建model_map与alias_map并做重复别名校验同名别名绑定不同模型会抛出ValueError。这也意味着listmodels展示的内容与各提供商实际可路由的模型始终同源。配置依赖一个 Key 解锁一家提供商可用模型完全取决于你的配置。文档列出的核心环境变量如下环境变量作用GEMINI_API_KEY启用 Gemini Pro / Flash 等模型OPENAI_API_KEY启用 OpenAI O3、O4-mini 与 GPT 系列OPENROUTER_API_KEY通过 OpenRouter 一个 Key 访问多家云厂商模型CUSTOM_API_URL启用本地/自托管模型Ollama、vLLM、LM Studio 等AZURE_OPENAI_API_KEYAZURE_OPENAI_ENDPOINTAZURE_OPENAI_API_VERSION启用 Azure OpenAI 部署XAI_API_KEY启用 Grok 模型DIAL_API_KEY启用 AI DIAL 统一 API需要说明的适用前提Azure 除了 Key 还必须配置AZURE_OPENAI_ENDPOINT否则注册中心会跳过该提供商providers/registry.pyCustom 提供商允许CUSTOM_API_KEY为空如 Ollama 无需鉴权但CUSTOM_API_URL是必须的Gemini 可额外通过GEMINI_BASE_URL指向自定义端点providers/registry.py。模型限制Model Restrictions下的输出行为如果你通过*_ALLOWED_MODELS环境变量设置了模型使用白名单listmodels会相应改变展示内容docs/tools/listmodels.md仅列出被允许的模型区块标题变为**Models (policy restricted)**或**Models (policy restricted)** 对应模型条目明确标注哪些模型被允许、哪些被限制OpenRouter 区块会额外打印*OpenRouter models restricted by OPENROUTER_ALLOWED_MODELS: ...*提示当前白名单内容tools/listmodels.py。限制服务的实现位于 utils/model_restrictions.pyModelRestrictionService从环境变量加载逗号分隔的白名单并统一小写化通过is_allowed()判断某个模型是否可用。支持的限制变量为环境变量对应提供商OPENAI_ALLOWED_MODELSOpenAIGOOGLE_ALLOWED_MODELSGeminiXAI_ALLOWED_MODELSX.AI (Grok)OPENROUTER_ALLOWED_MODELSOpenRouterDIAL_ALLOWED_MODELSDIAL例如OPENROUTER_ALLOWED_MODELSopus,sonnet,mistral就只允许这三个别名对应的模型。限制条目同时支持别名与完整模型名服务会通过提供商的_resolve_model_name()把白名单中的别名解析为规范名后再做匹配。相关行为由 tests/test_listmodels_restrictions.py 覆盖在有白名单时listmodels必须只展示白名单内的 4 个模型且不能回退到无限制的完整列表测试断言list_models不被额外调用。ModelProviderRegistry.get_available_models(respect_restrictionsTrue)在汇总Total Available Models时也会尊重限制策略从源码注释可见其还修复了注册中心与提供商双重过滤导致无模型可用的历史缺陷Issue #98见 providers/registry.py。何时使用 ListModels文档明确给出了该工具的典型使用时机模型选型不确定当前有哪些模型可用时先查询再决策能力核对确认每个模型支持哪些特性扩展思考、视觉、代码生成等配置验证确认 API Key 是否生效、提供商是否被正确识别上下文规划根据内容规模选择上下文窗口足够的模型如处理大文件时优先 1M 上下文模型性能优化在速度与质量之间权衡为简单任务选择快速模型。最佳实践规划前先检查开始复杂任务前先用listmodels了解可选模型避免盲目指定不存在的模型名用别名而非全名如flash、pro、gpt5、opus别名不区分大小写且更便于在限制策略中引用验证配置执行完环境变量配置后运行一次listmodels确认✅状态符合预期关注上下文窗口处理大型代码库或长文档时优先选择1M context模型日常快速任务选择轻量模型以降低成本与延迟善用限制策略在团队/组织场景下通过*_ALLOWED_MODELS收紧可用模型集合listmodels会如实反映受限后的真实可用清单。listmodels 与其他工具的边界listmodels了解可用选项与模型能力——只读查询不消耗模型调用chat与 Agent 讨论具体任务该用哪个模型这类需要上下文推理的问题version查询服务器配置与版本信息可用 docs/tools/version.md 对照其他工具analyze、debug、refactor、codereview、planner 等实际的代码分析、调试与开发工作各工具文档见 docs/tools。一句话总结listmodels是 pal-mcp-server 的模型仪表盘把分散在多提供商、多 JSON 注册表中的模型元数据汇总成一份可读清单是任何多模型工作流的第一步。【免费下载链接】pal-mcp-serverThe power of Claude Code / GeminiCLI / CodexCLI [Gemini / OpenAI / OpenRouter / Azure / Grok / Ollama / Custom Model / All Of The Above] working as one.项目地址: https://gitcode.com/GitHub_Trending/ge/pal-mcp-server创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考