使用说明
MCP配置转换器
具有增强CLI体验的模型上下文协议(MCP)配置转换器。
背景
模型上下文协议(MCP)是LLM应用程序和外部上下文提供者之间通信的标准化协议。 随着MCP在不同LLM提供商和开发环境中的采用率不断增长,每个平台都开发了自己的配置格式和约定 定义MCP服务器。
动机
创建此项目是为了解决开发人员在跨多个平台使用MCP配置时面临的挑战:
问题
-
支离破碎的生态系统:不同的法学硕士提供者(Claude、Gemini等) 开发环境(VS Code、OpenCode)为MCP服务器使用不同的配置格式
-
手动转换:在平台之间切换或共享MCP服务器设置时,开发人员通常需要手动重写配置
-
配置复杂性:MCP服务器配置可以包括需要小心的命令、参数、环境变量和元数据 转换期间保存
-
缺乏标准化:虽然MCP本身是标准化的,但配置格式不是,导致兼容性问题
-
主观工具偏好:开发人员和团队对编码助理和CLI的偏好各不相同。这个工具是故意的 工具无关 并且可以在所有主要的LLM平台和编码环境中无缝工作,包括通过不同的CLI访问时。
此工具支持什么
mcp-config-converter 提供了一个统一的工具来:
核心能力:
-
解析多种格式:从JSON、YAML和TOML文件读取MCP配置
-
在提供商之间转换:在不同LLM提供程序格式(Claude、Gemini、VS Code、OpenCode)之间转换配置
-
保留语义:维护所有配置详细信息,包括命令、参数、环境变量和元数据
-
验证配置:确保MCP配置格式良好且完整
-
简化工作流程:实现跨不同平台的MCP服务器配置的轻松共享和重用
实际使用案例:
- 跨平台开发:开发跨多个LLM平台工作的MCP服务器
- 配置共享:使用不同工具与团队共享MCP服务器设置
- 迁移:在LLM提供程序之间切换时移动MCP配置
- 标准化:以您喜欢的格式维护MCP配置的单一真实来源
主要特点
-
🔄 多格式支持:解析并生成JSON、YAML和TOML配置
-
🎯 特定于提供商的格式:针对Claude、Gemini、VS Code、OpenCode和具有多个LLM的AI辅助转换进行了优化的输出配置 提供商(OpenAI、Ollama、DeepSeek、SambaNova、困惑、OpenRouter)
-
🔀 智能文件合并:JSON、YAML和TOML配置的格式无关合并选项(更新、替换、覆盖、跳过)
-
✅ 验证:根据协议架构验证MCP配置
-
🎨 丰富的CLI体验:用户友好的命令行界面,由Rich和Typer提供彩色输出
-
🔧 可扩展架构:易于添加对新格式和提供商的支持
-
🤖 统一的LLM支持:基于 文学硕士,通过具有自动重试逻辑和指数回退的单个统一接口提供对100多个LLM提供商的访问
LLM提供商支持
此项目使用 文学硕士 作为支持100多个LLM提供商的统一接口。LiteLLM集成提供:
-
单一统一API:为所有LLM提供商提供一个一致的接口
-
自动重试逻辑:内置重试机制,对速率限制和服务不可用性进行指数回退
-
智能模型映射:友好的模型名称自动映射到特定于提供商的标识符
-
灵活的配置:通过环境变量或直接参数支持API键
支持的供应商和型号
该工具通过LiteLLM支持所有主要的LLM提供商。当没有指定模型时,该工具使用以下硬编码的默认模型:
| 提供者 | 环境变量 | 默认模型 |
|---|---|---|
| 开放人工智能 | OPENAI_API_KEY |
gpt-4o-mini |
| 人类学(克劳德) | ANTHROPIC_API_KEY |
claude-3-5-sonnet-20241022 |
| 谷歌双子座 | GOOGLE_API_KEY, GEMINI_API_KEY |
gemini-3-flash-preview |
| 顶点AI | GOOGLE_APPLICATION_CREDENTIALS |
gemini-2.0-flash-exp |
| 奥拉玛 | 无(本地) | 第一个可用型号 |
| 米斯特拉尔 | MISTRAL_API_KEY |
mistral-medium-latest |
| 深度求索 | DEEPSEEK_API_KEY |
deepseek-chat |
| 开放路由 | OPENROUTER_API_KEY |
xiaomi/mimo-v2-flash:free |
| 困惑度 | PERPLEXITY_API_KEY |
sonar |
| 坡 | POE_API_KEY |
gemini-2.5-flash-lite |
| SambaNova | SAMBANOVA_API_KEY |
Meta-Llama-3.1-8B-Instruct |
| z.ai | ZAI_API_KEY |
各种型号 |
| 凝聚 | COHERE_API_KEY |
command |
备注:上面列出的供应商是经过测试并与此工具集成的供应商。其他供应商可通过 文学硕士的统一界面。上面列出的默认模型是在没有指定其他模型时使用的硬编码回退。
使用LiteLLM提供程序
该工具支持基于成本自动选择提供商:
# Auto-select cheapest available provider (prefers ollama, then zai, etc.)
uv run mcp-config-converter convert config.yaml --preferred-provider auto --output output.json
# Use specific provider
uv run mcp-config-converter convert config.yaml --preferred-provider openai --output output.json
提供商成本优先级(从最便宜到最昂贵):
| 成本 | 供应商 | 备注 |
|---|---|---|
| 0 | 奥拉玛 | 本地,无API成本 |
| 15 | z.ai | 非常便宜的中国供应商 |
| 20 | 深度求索 | 非常便宜的中国供应商 |
| 25 | 开放路由器 | 免费等级的廉价聚合 |
| 30 | 桑巴诺娃 | 廉价云提供商 |
| 50 | 困惑度 | 成本适中 |
| 55 | 双子座 | 成本适中 |
| 60 | 密史脱拉风 | 中等+成本 |
| 65 | 坡 | 中等+成本 |
| 80 | 凝聚 | 价格昂贵 |
| 90 | 开放人工智能 | 非常昂贵 |
| 95 | 人类 | 非常昂贵 |
| 100 | vertex_ai | 最贵 |
注: 成本是基于每100万代币的典型定价估算的。实际成本因使用模式而异。
首要成本因素:
您可以通过环境变量(不区分大小写)覆盖默认成本因素:
# Example: Override ollama cost to 10 (useful if it's slow)
export MCP_CONVERT_CONF_OLLAMA_COST=10
# Example: Make deepseek more expensive than default
export MCP_CONVERT_CONF_DEEPSEEK_COST=100
# Example: Override multiple providers
export MCP_CONVERT_CONF_OPENAI_COST=95
export MCP_CONVERT_CONF_ANTHROPIC_COST=85
成本覆盖规则:
- 值必须是正整数
- 允许值>100
- 负值将被忽略并发出警告(使用默认值)
- 非整数值将被忽略并发出警告(使用默认值)
安装
此项目使用 uv 用于依赖关系管理,并支持多种安装方法:
安装方法
# Clone repository
git clone https://github.com/yourusername/mcp-config-converter.git
cd mcp-config-converter
# Install using uv (recommended for Python projects)
uv sync
# Or install using pip
pip install mcp-config-converter
# Or use uvx to run directly without installation
uvx --from git+https://github.com/yourusername/mcp-config-converter run mcp-config-converter convert ...
备注:通过统一的LiteLLM实现,所有LLM提供者现在都可以开箱即用,无需额外的可选依赖关系。只需为您选择的提供商设置适当的API关键环境变量。
环境配置
该工具支持从 .env 文件。这允许您安全地管理LLM提供者凭据,而无需对其进行硬编码。
1.复制示例文件:
cp .env.example .env
2.编辑 .env 文件 并添加您的API密钥:
# OpenAI API Key
OPENAI_API_KEY=your_openai_api_key_here
# Anthropic (Claude) API Key
ANTHROPIC_API_KEY=your_anthropic_api_key_here
# Google Gemini API Key
GOOGLE_API_KEY=your_google_api_key_here
# Other providers...
备注:The .env 运行测试或CLI工具时,文件会自动加载**,因此您不需要手动设置环境变量。
备注:永远不要承诺你的 .env 带有真正API密钥的文件!它已经被排除在 .gitignore.
默认输出路径配置
转换后的配置的默认输出路径可以通过环境变量覆盖。这允许您自定义转换文件的保存位置,而无需指定 --output 每次都有选择。
环境变量格式
- 供应商特定:
MCP_CONFIG_CONV_<PROVIDER>_DEFAULT_OUTPUT - 通用回退:
MCP_CONFIG_CONV_DEFAULT_OUTPUT(适用于所有供应商)
支持的提供商包括: VSCODE, GEMINI, CLAUDE, CODEX, OPENCODE, MISTRAL, QWEN, LLXPRT, CRUSH
示例用法
# Override VS Code default output path
export MCP_CONFIG_CONV_VSCODE_DEFAULT_OUTPUT=".vscode/custom-mcp.json"
# Override generic default for all providers
export MCP_CONFIG_CONV_DEFAULT_OUTPUT="custom-output.json"
# View current defaults and overrides
uv run mcp-config-converter show-defaults
这 show-defaults 命令显示一个表,其中显示:
- 每个提供程序的默认输出路径
- 用于覆盖的环境变量名称
- 当前覆盖值(如果设置)
- 提供者是否是另一个提供者的别名
优先顺序
- 提供商特定的环境变量(例如。,
MCP_CONFIG_CONV_VSCODE_DEFAULT_OUTPUT) - 通用环境变量(
MCP_CONFIG_CONV_DEFAULT_OUTPUT) - 内置默认路径
磁盘缓存
该工具包括用于LLM响应的磁盘缓存功能,以减少API调用,并在多次处理同一配置时提高转换速度。
好处
-
降低API成本:缓存响应避免了对相同转换的冗余API调用
-
更快的迭代:相同配置的后续转换几乎是即时的
-
线下开发:当API访问不可用时,使用缓存的响应
启用缓存
环境变量
通过设置启用缓存 MCP_CONFIG_CONF_LLM_CACHE_ENABLED 环境变量:
# Enable caching
export MCP_CONFIG_CONF_LLM_CACHE_ENABLED=true
# Now conversions will use cached responses when available
uv run mcp-config-converter convert config.yaml --provider claude --output output.json
CLI标志
或者,使用以下命令启用每个命令的缓存 --enable-cache 标志:
uv run mcp-config-converter convert config.yaml --provider claude --output output.json --enable-cache
缓存目录
默认情况下,缓存文件存储在 .litellm_cache 在项目根中。您可以使用以下命令指定自定义缓存目录 --cache-dir 选项:
# Use a custom cache directory
uv run mcp-config-converter convert config.yaml --provider claude --output output.json --enable-cache --cache-dir /path/to/custom/cache
# Or set an environment variable
export MCP_CONFIG_CONF_LLM_CACHE_DIR=/path/to/custom/cache
uv run mcp-config-converter convert config.yaml --provider claude --output output.json --enable-cache
示例用法
# Enable cache via environment variable and run conversion
export MCP_CONFIG_CONF_LLM_CACHE_ENABLED=true
uv run mcp-config-converter convert config.yaml --provider vscode --output .vscode/mcp.json
# Enable cache via CLI flag
uv run mcp-config-converter convert config.yaml --provider gemini --output gemini_mcp.json --enable-cache
# Use custom cache directory
uv run mcp-config-converter convert config.yaml --provider claude --output claude_mcp.json --enable-cache --cache-dir ~/.mcp-cache
重要提示
默认值 .litellm_cache 目录包含在 .gitignore 以防止意外将缓存的响应提交到版本控制。如果使用自定义缓存目录,请确保它也被排除在版本控制系统之外。
测试配置
测试套件可以通过环境变量进行配置:
|变量|目的|默认值|示例|
|----------|----------|----------|
| MCP_CONFIG_CONF_MAX_TESTS |每个输出提供程序的最大成功转换数|2| export MCP_CONFIG_CONF_MAX_TESTS=5 |
| MCP_CONFIG_CONF_TEST_LLM_PROVIDERS |要测试的特定LLM提供商|ollama/-1| export MCP_CONFIG_CONF_TEST_LLM_PROVIDERS="deepseek/deepseek-chat,openrouter/model" |
示例用法:
# Test with default (ollama, 2 tests per provider)
uv run pytest tests/test_cli.py
# Test with specific providers (5 tests per provider)
export MCP_CONFIG_CONF_TEST_LLM_PROVIDERS="deepseek/deepseek-chat,openrouter/xiaomi/mimo-v2-flash:free,zai/glm-4.7"
export MCP_CONFIG_CONF_MAX_TESTS=5
uv run pytest tests/test_cli.py
# Single provider test
export MCP_CONFIG_CONF_TEST_LLM_PROVIDERS="openai/gpt-4o-mini"
uv run pytest tests/test_cli.py
提供者/模型格式
- 单人:
provider/model(例如。,openrouter/subprovider/model) - 列表:逗号、分号或冒号分隔(例如。,
ollama/gemma3, deepseek/deepseek-chat; sambanova/model) - 仅提供程序:使用模型索引
-1(最后一个型号)
错误行为
- 解析失败会导致测试套件立即失败
- 缺少API密钥导致测试套件失败
- 无效的提供程序导致客户端实例化失败
快速开始
快速使用
# Convert an MCP configuration file to Claude format using LiteLLM with Ollama (local, no API key)
uv run mcp-config-converter convert config.yaml --provider claude --output claude_config.json --preferred-provider litellm --llm-model ollama/llama2
# Convert using LiteLLM with GPT-4
uv run mcp-config-converter convert config.yaml --provider claude --output output.json --preferred-provider litellm --llm-model gpt-4
# Convert using LiteLLM with Claude (requires ANTHROPIC_API_KEY)
uv run mcp-config-converter convert config.yaml --provider vscode --output output.json --preferred-provider litellm --llm-model claude-3.5-sonnet-20241022
# Use auto provider selection (picks best available provider)
uv run mcp-config-converter convert config.yaml --provider claude --output output.json --preferred-provider auto
# Check LLM provider status
uv run mcp-config-converter llm-check
项目结构
mcp-config-converter/
├── mcp_config_converter/
│ ├── cli/ # Command-line interface modules
│ │ ├── arguments.py # CLI argument parsing
│ │ ├── convert.py # Convert command implementation
│ │ ├── llm_check.py # LLM provider checking
│ │ ├── validate.py # Validation command implementation
│ │ └── ... # Other CLI modules
│ ├── llm/ # LLM provider implementations
│ │ ├── base.py # Base LLM interface
│ │ ├── claude.py # Claude provider
│ │ ├── deepseek.py # DeepSeek provider
│ │ └── ... # Other LLM providers
│ ├── prompts/ # LLM prompt templates
│ ├── specs/ # MCP provider specifications
│ ├── transformers.py # Configuration transformation logic
│ ├── types.py # Type definitions
│ └── utils.py # Utility functions
└── tests/ # Test suite
贡献
欢迎投稿!
该项目旨在通过使配置可移植和跨平台访问来支持不断增长的MCP生态系统。
许可证
MIT许可证-请参阅 许可证 文件以获取详细信息。
致谢
该项目支持模型上下文协议生态系统,旨在提高不同MCP实现之间的互操作性。
该项目建立在 文学硕士为100多个LLM提供商提供了出色的统一界面。