MCP配置转换器

用于Model Context Protocol (MCP)的配置转换工具,支持多种LLM提供商和开发环境的配置格式转换。

  • by jr2804
  • Python
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 jr2804/mcp-config-converter

使用说明

MCP配置转换器

具有增强CLI体验的模型上下文协议(MCP)配置转换器。

背景

模型上下文协议(MCP)是LLM应用程序和外部上下文提供者之间通信的标准化协议。 随着MCP在不同LLM提供商和开发环境中的采用率不断增长,每个平台都开发了自己的配置格式和约定 定义MCP服务器。

动机

创建此项目是为了解决开发人员在跨多个平台使用MCP配置时面临的挑战:

问题

  • 支离破碎的生态系统:不同的法学硕士提供者(Claude、Gemini等) 开发环境(VS Code、OpenCode)为MCP服务器使用不同的配置格式

  • 手动转换:在平台之间切换或共享MCP服务器设置时,开发人员通常需要手动重写配置

  • 配置复杂性:MCP服务器配置可以包括需要小心的命令、参数、环境变量和元数据 转换期间保存

  • 缺乏标准化:虽然MCP本身是标准化的,但配置格式不是,导致兼容性问题

  • 主观工具偏好:开发人员和团队对编码助理和CLI的偏好各不相同。这个工具是故意的 工具无关 并且可以在所有主要的LLM平台和编码环境中无缝工作,包括通过不同的CLI访问时。

此工具支持什么

mcp-config-converter 提供了一个统一的工具来:

核心能力:

  1. 解析多种格式:从JSON、YAML和TOML文件读取MCP配置

  2. 在提供商之间转换:在不同LLM提供程序格式(Claude、Gemini、VS Code、OpenCode)之间转换配置

  3. 保留语义:维护所有配置详细信息,包括命令、参数、环境变量和元数据

  4. 验证配置:确保MCP配置格式良好且完整

  5. 简化工作流程:实现跨不同平台的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 命令显示一个表,其中显示:

  • 每个提供程序的默认输出路径
  • 用于覆盖的环境变量名称
  • 当前覆盖值(如果设置)
  • 提供者是否是另一个提供者的别名

优先顺序

  1. 提供商特定的环境变量(例如。, MCP_CONFIG_CONV_VSCODE_DEFAULT_OUTPUT)
  2. 通用环境变量(MCP_CONFIG_CONV_DEFAULT_OUTPUT)
  3. 内置默认路径

磁盘缓存

该工具包括用于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提供商提供了出色的统一界面。