一个命令行界面,用于管理模型上下文接口(MCI)模式和使用定义的MCI工具集动态运行MCP(模型上下文协议)服务器。
{{ props.message }})到if、for及foreach块uvx mcix run命令即时提供统一的STDIO MCP服务器一切都很简单、超级灵活且仍然高性能!
查看MCI文档以了解MCI的一般概念(我们正在努力更新文档,包括
uvx mcix工具的用法)
无需安装!直接使用uvx运行MCI:
# 如果尚未安装,请安装uv
curl -LsSf https://astral.sh/uv/install.sh | sh
初始化新项目:
uvx mcix install
这会创建带有示例工具的mci.json以及包含示例工具集的mci/目录。
列出您的工具:
uvx mcix list
检查所需的环境变量:
uvx mcix envs
# 生成.env模板
uvx mcix envs --format=env
验证您的配置:
uvx mcix validate
运行MCP服务器:
uvx mcix run
就这样!您的MCI工具现在可以通过MCP协议访问了。
如果您希望永久安装MCI:
# 使用uv全局安装
uv tool install mcix
# 然后无需uvx前缀即可使用
mcix install
mcix list
mcix run
或者从源代码安装:
git clone https://github.com/Model-Context-Interface/mci-uvx.git
cd mci-uvx
uv sync --all-extras
uv tool install --editable .
MCI工具是可重复使用的声明性工具定义,可以执行不同类型的操作:
工具集是在mci/目录中存储的相关工具集合。它们可以:
mcix run命令创建一个MCP服务器,该服务器:
mcix install引导一个新的MCI项目,带有初始配置。
# 创建JSON配置(默认)
uvx mcix install
# 创建YAML配置
uvx mcix install --yaml
创建:
mci.json(或mci.yaml)- 主配置文件mci/目录 - 工具集库mci/.gitignore - 排除生成的文件mcix list显示配置中的所有可用工具。
# 列出所有工具(表格格式)
uvx mcix list
# 列出详细信息
uvx mcix list --verbose
# 按标签过滤
uvx mcix list --filter tags:api,database
# 导出为JSON
uvx mcix list --format json
# 导出为YAML
uvx mcix list --format yaml
过滤类型:
tags:tag1,tag2 - 包含具有这些标签之一的工具only:tool1,tool2 - 仅包含特定工具except:tool1,tool2 - 排除特定工具toolsets:ts1,ts2 - 包含来自特定工具集的工具without-tags:tag1,tag2 - 排除具有这些标签的工具mci envs列出在您的MCI配置中引用的所有环境变量。
# 显示表格格式的环境变量
uvx mcix envs
# 生成.env.example.mci文件
uvx mcix envs --format=env
# 检查特定的模式文件
uvx mcix envs --file=custom.mci.json
envs命令扫描您的整个MCI模式,包括:
输出格式:
table(默认)- 在格式化的表格中显示变量及其位置env - 生成包含所有变量的.env.example.mci文件示例表格输出:
┌─────────────────┬──────────────────┐
│ 变量 │ 使用于 │
├─────────────────┼──────────────────┤
│ API_KEY │ 主要,天气 │
│ DB_URL │ 数据库 │
│ GITHUB_TOKEN │ mcp:github │
└─────────────────┴──────────────────┘
示例.env文件输出:
# .env.example.mci
# 在MCI配置中使用的环境变量
#
# 复制此文件到.env.mci并填写您的值
# 使用于:主要,天气
API_KEY=
# 使用于:数据库
DB_URL=
# 使用于:mcp:github
GITHUB_TOKEN=
提示:运行
uvx mcix envs --format=env以生成模板.env.example.mci文件,然后复制它到.env.mci并填写您的值。提交.env.example.mci到您的仓库,以便团队成员知道需要哪些环境变量。
mcix validate验证您的MCI模式是否正确。
# 验证默认配置
uvx mcix validate
# 验证特定文件
uvx mcix validate --file custom.mci.json
检查:
mcix add向您的模式添加工具集引用。
# 添加一个工具集
uvx mcix add weather-tools
# 带过滤添加
uvx mcix add analytics --filter=only:Tool1,Tool2
# 按标签过滤添加
uvx mcix add api-tools --filter=tags:api,database
# 添加到自定义文件
uvx mcix add weather-tools --path=custom.mci.json
自动保留您的文件格式(JSON保持JSON,YAML保持YAML)。
mcix run启动一个MCP服务器,动态提供您的工具。
# 使用默认配置运行
uvx mcix run
# 使用特定文件运行
uvx mcix run --file custom.mci.json
# 使用过滤工具运行
uvx mcix run --filter tags:production
# 排除工具运行
uvx mcix run --filter except:deprecated_tool
服务器:
停止服务器:按Ctrl+C
# 1. 创建一个新项目
uvx mcix install
# 2. 添加工具集
uvx mcix add weather-tools
uvx mcix add api-tools --filter=tags:production
# 3. 预览您的工具
uvx mcix list --verbose
# 4. 检查环境变量并生成.env模板
uvx mcix envs --format=env
# 5. 验证一切
uvx mcix validate
# 6. 使用MCP服务器测试
uvx mcix run --filter tags:development
# 检查所需的环境变量
uvx mcix envs
# 部署前验证
uvx mcix validate
# 仅使用生产工具运行服务器
uvx mcix run --filter tags:production
# 或排除实验特性
uvx mcix run --filter without-tags:experimental,beta
# 创建您的模式
uvx mcix install
# 编辑mci.json以添加您的工具
# (参见生成文件中的示例)
# 验证您的更改
uvx mcix validate
# 测试您的工具
uvx mcix list --verbose
uvx mcix run
MCI工具支持多种执行类型。以下是每种类型的示例:
MCI工具支持可选注释,提供关于工具的元数据和行为提示。当通过MCP服务器提供工具时,这些注释会被保留,并帮助MCP客户端更好地决定如何使用和显示工具。
所有注释字段都是可选的:
title:工具的人类可读标题(机器名的替代)readOnlyHint:如果工具仅读取数据而不修改,则为true,如果修改状态则为falsedestructiveHint:如果工具可能执行破坏性更新(删除、覆盖),则为true,如果仅附加则为falseidempotentHint:如果多次调用工具并使用相同的参数没有额外效果,则为trueopenWorldHint:如果工具与外部实体交互(Web API、数据库),则为true,如果是内部工具则为false带注释的示例:
{
"name": "delete_resource",
"description": "从远程服务器删除资源",
"annotations": {
"title": "删除资源",
"readOnlyHint": false,
"destructiveHint": true,
"idempotentHint": false,
"openWorldHint": true
},
"inputSchema": {
"type": "object",
"properties": {
"id": {"type": "string", "description": "资源ID"}
},
"required": ["id"]
},
"execution": {
"type": "http",
"method": "DELETE",
"url": "{{env.API_URL}}/resources/{{props.id}}"
}
}
部分注释的示例:
{
"name": "read_data",
"description": "从数据库读取数据",
"annotations": {
"title": "读取数据",
"readOnlyHint": true
},
"execution": {
"type": "http",
"method": "GET",
"url": "{{env.API_URL}}/data"
}
}
注意:注释会在通过
uvx mcix run提供工具时自动包含。MCP客户端可以使用这些注释进行过滤、验证和用户界面增强。
使用{{props.field}}和{{env.VAR}}语法返回模板化文本。
示例:
{
"name": "greet_user",
"description": "根据名字问候用户",
"inputSchema": {
"type": "object",
"properties": {
"username": {
"type": "string",
"description": "要问候的用户名"
}
},
"required": ["username"]
},
"execution": {
"type": "text",
"text": "你好 {{props.username}}!欢迎来到MCI。"
}
}
此工具接受用户名作为输入,并返回个性化的问候消息。
读取并返回文件内容,支持可选模板。
示例:
{
"name": "read_config",
"description": "读取应用程序配置文件",
"inputSchema": {
"type": "object",
"properties": {
"config_path": {
"type": "string",
"description": "配置文件路径"
}
},
"required": ["config_path"]
},
"execution": {
"type": "file",
"path": "{{props.config_path}}",
"enableTemplating": false
},
"directoryAllowList": ["./configs", "/etc/myapp"]
}
此工具从允许的目录读取配置文件。directoryAllowList确保只能从安全位置读取文件。
执行命令行程序,带有参数和标志。
示例:
{
"name": "search_files",
"description": "使用grep搜索文件中的文本",
"inputSchema": {
"type": "object",
"properties": {
"pattern": {
"type": "string",
"description": "搜索模式"
},
"directory": {
"type": "string",
"description": "要搜索的目录"
},
"ignore_case": {
"type": "boolean",
"description": "忽略大小写的搜索"
}
},
"required": ["pattern", "directory"]
},
"execution": {
"type": "cli",
"command": "grep",
"args": ["-r", "-n", "{{props.pattern}}"],
"flags": {
"-i": {
"from": "props.ignore_case",
"type": "boolean"
}
},
"cwd": "{{props.directory}}",
"timeout_ms": 8000
}
}
此工具执行grep以搜索文件中的文本。-i标志根据ignore_case属性条件添加。
对外部API进行HTTP请求,支持完整的头部和身份验证。
示例:
{
"name": "get_weather",
"description": "获取某个地点的当前天气",
"inputSchema": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "城市名称或坐标"
}
},
"required": ["location"]
},
"execution": {
"type": "http",
"method": "GET",
"url": "https://api.example.com/weather",
"params": {
"location": "{{props.location}}",
"units": "metric"
},
"headers": {
"Accept": "application/json",
"Authorization": "Bearer {{env.WEATHER_API_KEY}}"
},
"timeout_ms": 5000
}
}
此工具对天气API进行GET请求,使用环境中的API密钥和输入属性中的位置。
调用其他MCP服务器的工具(用于工具组合和链接)。
示例:
{
"name": "analyze_with_ai",
"description": "使用AI MCP服务器分析数据",
"inputSchema": {
"type": "object",
"properties": {
"data": {
"type": "string",
"description": "要分析的数据"
}
},
"required": ["data"]
},
"execution": {
"type": "mcp",
"server": "ai_analysis_server",
"tool": "analyze_text",
"arguments": {
"text": "{{props.data}}",
"model": "gpt-4"
}
}
}
此工具将执行委托给另一个MCP服务器的工具,使复杂的工作流组合成为可能。
所有执行类型都支持:
{{env.VAR}}访问环境变量{{props.field}}访问输入属性mci.json或mci.yaml){
"schemaVersion": "1.0",
"metadata": {
"name": "我的项目",
"description": "我的MCI配置"
},