MCI CLI工具
一个命令行界面,用于管理模型上下文接口(MCI)模式,并使用定义的MCI工具集动态运行MCP(模型上下文协议)服务器。
特性
- 连接现有 MCP服务器 自动 缓存 而且容易 过滤 创建您独特工具集的选项
- 使用清晰、可审查的MCI模式以JSON或YAML定义您的自定义工具
- API - 将n8n、Make和其他工作流构建器连接为工具 - 使用LLM在几分钟内将任何REST API文档转换为AI工具 - 使用AWS Lambda、judge0等运行远程代码。 - 身份验证、标头、正文。..支持全套API功能 - CLI: - 将基于服务器的CLI命令作为工具运行,从简单的“ls”到您可以使用apt-get安装的任何其他命令! - 编写单独的python脚本,并在30秒内在工具中转换! - 构建超快速的GoLang二进制文件,并作为AI工具运行 - 文件: - 轻松管理提示、生成报告并提供上下文 - 任何文件都会成为模板:从打印简单变量开始({{ props.message }})像if、for&foreach这样的块 - 创建真实、动态和可用模板所需的一切 - 文本: - 从工具返回动态或静态文本的最简单方法 - 支持文件类型的完整模板,但在.mci.json中定义 - 非常适合提供动态资产(每个用户的图像URL、PDF等) - 以及用于生成简单消息
- 制造 工具集 从您的自定义工具:组织、管理和共享工具的最简单方法!
- 上面提到的所有内容都可以通过编程方式使用 MCI适配器 为了你的语言
- 或者。立即为他们提供统一的服务 STDIO MCP服务器 通过
uvx mcix run命令。 - 还有。..创建单独的.mci.json文件,作为不同代理的不同MCP服务器!通过为每个代理提供定制的小型特定上下文文件来减少令牌和运行时开销。
一切都很简单,超级灵活,而且性能很高!
看看 文档 为了全面了解MCI(我们正在努力更新文档 uvx mcix 工具使用)快速开始
无需安装!直接使用以下命令运行MCI uvx:
# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh你的第一个MCI项目
- 初始化新项目:
uvx mcix install这创造了 mci.json 使用示例工具和 mci/ 包含示例工具集的目录。
- 列出您的工具:
uvx mcix list- 检查所需的环境变量:
uvx mcix envs
# Generate .env template
uvx mcix envs --format=env- 验证您的配置:
uvx mcix validate- 运行MCP服务器:
uvx mcix run就是这样!您的MCI工具现在可以通过MCP协议使用。
可选:全局安装MCI
如果您希望永久安装MCI:
# Install globally with uv
uv tool install mcix
# Then use without uvx prefix
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工具是可重用的、声明性的工具定义,可以执行不同类型的操作:
- 文本工具:返回模板文本响应
- 文件工具:读取并返回文件内容
- CLI工具:执行命令行程序
- HTTP工具:发出API请求
- MCP工具:调用其他MCP服务器
工具集
工具集是存储在 mci/ 目录。它们可以是:
- 跨项目共享
- 按标签或名称筛选
- 参考您的主配置
MCP服务器集成
这 mcix run 命令创建一个MCP服务器,该服务器:
- 从MCI模式动态加载工具
- 通过模型上下文协议为它们提供服务
- 可与MCP兼容的客户端(如Claude Desktop)一起使用
- 支持过滤,仅显示特定工具
可用命令
mcix install
使用启动器配置启动一个新的MCI项目。
# Create JSON configuration (default)
uvx mcix install
# Create YAML configuration
uvx mcix install --yaml创建:
mci.json(或mci.yaml)-主配置文件mci/directory-工具集库mci/.gitignore-排除生成的文件
mcix list
显示配置中的所有可用工具。
# List all tools (table format)
uvx mcix list
# List with verbose details
uvx mcix list --verbose
# Filter by tags
uvx mcix list --filter tags:api,database
# Export to JSON
uvx mcix list --format json
# Export to 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配置中引用的所有环境变量。
# Show environment variables in table format
uvx mcix envs
# Generate .env.example.mci file
uvx mcix envs --format=env
# Check specific schema file
uvx mcix envs --file=custom.mci.json这 envs 命令扫描整个MCI架构,包括:
- 主要模式文件工具和配置
- 所有引用的工具集
- MCP服务器配置
输出格式:
table(默认)-在带位置的格式化表中显示变量env-生成.env.example.mci包含所有变量的文件
示例表输出:
┌─────────────────┬──────────────────┐
│ Variable │ Used In │
├─────────────────┼──────────────────┤
│ API_KEY │ main, weather │
│ DB_URL │ database │
│ GITHUB_TOKEN │ mcp:github │
└─────────────────┴──────────────────┘.env文件输出示例:
# .env.example.mci
# Environment variables used in MCI configuration
#
# Copy this file to .env.mci and fill in your values
# Used in: main, weather
API_KEY=
# Used in: database
DB_URL=
# Used in: mcp:github
GITHUB_TOKEN=小贴士:运行uvx mcix envs --format=env生成模板.env.example.mci文件,然后将其复制到.env.mci并填写你的价值观。提交.env.example.mci这样团队成员就知道需要哪些环境变量。
mcix validate
验证MCI模式的正确性。
# Validate default configuration
uvx mcix validate
# Validate specific file
uvx mcix validate --file custom.mci.json检查:
- 模式结构和语法
- 必填字段
- 数据类型
- 工具定义
- 工具集参考
- MCP命令可用性(警告)
mcix add
将工具集引用添加到您的模式中。
# Add a toolset
uvx mcix add weather-tools
# Add with filter
uvx mcix add analytics --filter=only:Tool1,Tool2
# Add with tag filter
uvx mcix add api-tools --filter=tags:api,database
# Add to custom file
uvx mcix add weather-tools --path=custom.mci.json自动保留您的文件格式(JSON保持JSON,YAML保持YAML)。
mcix run
启动一个动态为您的工具提供服务的MCP服务器。
# Run with default configuration
uvx mcix run
# Run with specific file
uvx mcix run --file custom.mci.json
# Run with filtered tools
uvx mcix run --filter tags:production
# Run excluding tools
uvx mcix run --filter except:deprecated_tool服务器:
- 从MCI架构加载工具
- 将它们转换为MCP格式
- 在STDIO上监听MCP请求
- 将执行委托回MCIClient
停止服务器:新闻 Ctrl+C
示例工作流程
开发工作流程
# 1. Create a new project
uvx mcix install
# 2. Add toolsets
uvx mcix add weather-tools
uvx mcix add api-tools --filter=tags:production
# 3. Preview your tools
uvx mcix list --verbose
# 4. Check environment variables and generate .env template
uvx mcix envs --format=env
# 5. Validate everything
uvx mcix validate
# 6. Test with MCP server
uvx mcix run --filter tags:development生产部署
# Check required environment variables
uvx mcix envs
# Validate before deployment
uvx mcix validate
# Run server with only production tools
uvx mcix run --filter tags:production
# Or exclude experimental features
uvx mcix run --filter without-tags:experimental,beta工具开发
# Create your schema
uvx mcix install
# Edit mci.json to add your tool
# (see examples in the generated file)
# Validate your changes
uvx mcix validate
# Test your tool
uvx mcix list --verbose
uvx mcix run支持的执行类型
MCI工具支持多种执行类型。以下是每种类型的示例:
工具注释
MCI工具支持可选注释,这些注释提供有关工具的元数据和行为提示。当通过MCP服务器提供工具时,这些注释会被保留下来,并帮助MCP客户端更好地决定工具的使用和显示。
支持的注释字段
所有注释字段都是可选的:
title:工具的人类可读标题(机器名称的替代品)readOnlyHint:true如果工具仅读取数据而不进行修改,false如果它修改了状态destructiveHint:true如果该工具可能执行破坏性更新(删除、覆盖),false如果只是添加剂idempotentHint:true如果使用相同的参数重复调用该工具没有额外效果openWorldHint:true如果该工具与外部实体(web API、数据库)交互,false用于内部工具
带注释的示例:
{
"name": "delete_resource",
"description": "Delete a resource from the remote server",
"annotations": {
"title": "Delete Resource",
"readOnlyHint": false,
"destructiveHint": true,
"idempotentHint": false,
"openWorldHint": true
},
"inputSchema": {
"type": "object",
"properties": {
"id": {"type": "string", "description": "Resource ID"}
},
"required": ["id"]
},
"execution": {
"type": "http",
"method": "DELETE",
"url": "{{env.API_URL}}/resources/{{props.id}}"
}
}带有部分注释的示例:
{
"name": "read_data",
"description": "Read data from the database",
"annotations": {
"title": "Read Data",
"readOnlyHint": true
},
"execution": {
"type": "http",
"method": "GET",
"url": "{{env.API_URL}}/data"
}
}备注:通过以下方式提供工具时,会自动包含注释 uvx mcix run.MCP客户端可以使用这些注释进行过滤、验证和用户界面增强。文本执行
使用返回模板文本 {{props.field}} 和 {{env.VAR}} 语法。
例子:
{
"name": "greet_user",
"description": "Greet a user by name",
"inputSchema": {
"type": "object",
"properties": {
"username": {
"type": "string",
"description": "Name of the user to greet"
}
},
"required": ["username"]
},
"execution": {
"type": "text",
"text": "Hello {{props.username}}! Welcome to MCI."
}
}此工具接受用户名作为输入,并返回个性化的问候消息。
文件执行
读取和返回文件内容,并提供可选的模板支持。
例子:
{
"name": "read_config",
"description": "Read application configuration file",
"inputSchema": {
"type": "object",
"properties": {
"config_path": {
"type": "string",
"description": "Path to configuration file"
}
},
"required": ["config_path"]
},
"execution": {
"type": "file",
"path": "{{props.config_path}}",
"enableTemplating": false
},
"directoryAllowList": ["./configs", "/etc/myapp"]
}此工具从允许的目录读取配置文件。这 directoryAllowList 确保文件只能从安全位置读取。
CLI执行
使用参数和标志执行命令行程序。
例子:
{
"name": "search_files",
"description": "Search for text in files using grep",
"inputSchema": {
"type": "object",
"properties": {
"pattern": {
"type": "string",
"description": "Search pattern"
},
"directory": {
"type": "string",
"description": "Directory to search in"
},
"ignore_case": {
"type": "boolean",
"description": "Ignore case in search"
}
},
"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 财产。
HTTP执行
向具有完整标头和身份验证支持的外部API发出HTTP请求。
例子:
{
"name": "get_weather",
"description": "Get current weather for a location",
"inputSchema": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "City name or coordinates"
}
},
"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键和输入属性中的位置,向天气API发出GET请求。
MCP执行
从其他MCP服务器调用工具(用于工具组合和链接)。
例子:
{
"name": "analyze_with_ai",
"description": "Analyze data using AI MCP server",
"inputSchema": {
"type": "object",
"properties": {
"data": {
"type": "string",
"description": "Data to analyze"
}
},
"required": ["data"]
},
"execution": {
"type": "mcp",
"server": "ai_analysis_server",
"tool": "analyze_text",
"arguments": {
"text": "{{props.data}}",
"model": "gpt-4"
}
}
}此工具将执行委托给另一个MCP服务器的工具,从而能够组合复杂的工作流。
公共特性
所有执行类型都支持:
- 环境变量模板:使用
{{env.VAR}}访问环境变量 - 物业模板:使用
{{props.field}}访问输入属性 - 输入验证:使用JSON Schema定义模式以实现类型安全
配置文件
主要配置(mci.json 或 mci.yaml)
{
"schemaVersion": "1.0",
"metadata": {
"name": "My Project",
"description": "My MCI configuration"
},
"tools": [
{
"name": "example_tool",
"description": "Example tool",
"inputSchema": {
"type": "object",
"properties": {
"message": {"type": "string"}
}
},
"execution": {
"type": "text",
"text": "Echo: {{props.message}}"
}
}
],
"toolsets": ["my-toolset"],
"mcp_servers": {}
}工具集文件(mci/*.mci.json)
工具集文件遵循相同的模式,但通常包含相关工具的集中集合。
环境变量
MCI支持在工具定义中使用环境变量模板:
{
"execution": {
"type": "http",
"url": "{{env.BASE_URL}}/api/endpoint",
"headers": {
"Authorization": "Bearer {{env.API_KEY}}"
}
}
}自动加载.env文件
MCI自动从以下位置加载环境变量 .env 和 .env.mci 加载MCI架构时的文件。这提供了一种方便的方法来管理特定于环境的配置,而无需手动设置变量。
自动检测:
- 当您运行任何MCI命令时(
run,list,validate等),MCI在以下位置查找环境文件:
1. 项目根目录(与您的 mci.json 或 mci.yaml) 1. 这 ./mci 目录
文件优先级:
- MCI优先级
.env.mci文件(MCI特定配置).env文件(常规配置) - 重要提示: 当
.env.mci文件存在,.env文件是 未加载 根本 - 这允许您将MCI特定的环境变量与一般项目变量分开
加载行为:
- 如果
.env.mci文件存在: 仅.env.mci文件已加载
1. ./mci/.env.mci -库MCI特定配置 1. 项目根 .env.mci -MCI项目特定配置(更高优先级)
- 如果不
.env.mci文件存在:.env文件已加载
1. ./mci/.env -库常规默认值 1. 项目根 .env -项目级配置(优先级较高)
- 然后: 系统环境变量和显式env_vars覆盖所有基于文件的配置
完全优先顺序(从低到高):
- 基于文件的配置(
.env.mci文件(如果存在),否则.env文件)
- 自 ./mci/ 目录优先 - 然后从项目根
- 系统环境变量(通过设置
export或shell配置) - 通过CLI或代码传递的环境变量(最高优先级)
示例.env文件:
# .env or .env.mci file in project root
API_KEY=your-api-key-here
BASE_URL=https://api.example.com
DEBUG=false
# Comments are supported
# Blank lines are ignored
# Export keyword is optional (automatically stripped)
export OPTIONAL_VAR=value目录结构示例:
my-project/
├── .env.mci # MCI-specific variables (if present, .env ignored)
├── .env # General project variables (only if .env.mci absent)
├── mci.json # Your MCI schema
└── mci/
├── .env.mci # Library MCI-specific (if present, ./mci/.env ignored)
├── .env # Library defaults (only if ./mci/.env.mci absent)
└── weather.mci.json # Your toolsets示例:使用.env.mci文件
# Scenario 1: Only .env.mci files present
# ./mci/.env.mci
API_KEY=mci-library-key
LIBRARY_VAR=lib-value
# .env.mci (project root)
API_KEY=mci-project-key # Overrides ./mci/.env.mci
MCI_SPECIFIC=mci-value
# Result: MCI will use:
# API_KEY=mci-project-key (from root .env.mci)
# LIBRARY_VAR=lib-value (from ./mci/.env.mci)
# MCI_SPECIFIC=mci-value (from root .env.mci)示例:使用.env文件(没有.env.mci)
# Scenario 2: Only .env files present
# ./mci/.env
API_KEY=default-key
LIBRARY_VAR=lib-value
# .env (project root)
API_KEY=project-key # Overrides ./mci/.env
PROJECT_VAR=proj-value
# Result: MCI will use:
# API_KEY=project-key (from root .env)
# LIBRARY_VAR=lib-value (from ./mci/.env)
# PROJECT_VAR=proj-value (from root .env)笔记:
- .env文件是完全可选的-没有它们,MCI可以正常工作
- 如果缺少.env文件,则不会出错
- 使用
.env.mci用于MCI特定配置,使其与一般项目配置完全分开 - 当
.env.mci存在,.env被忽略(未合并) - 您可以通过设置禁用自动加载
auto_load_dotenv=False以编程方式使用MCI库时 - .env文件如果包含机密,则不应提交版本控制
为MCP客户端设置环境变量
当从Claude Desktop或VS Code等客户端将MCI作为MCP服务器运行时,您有两个环境变量选项:
- 使用.env文件 (推荐):创建一个
.env文件位于项目根目录中,MCI将自动加载它 - 在客户端设置中配置:在MCP客户端配置中明确设置环境变量
选项1:使用.env文件(推荐)
创建一个 .env 项目根目录中的文件:
# .env
API_KEY=your-api-key
BASE_URL=https://api.example.com然后使用最小设置配置MCP客户端:
{
"mcpServers": {
"mci-tools": {
"command": "uvx",
"args": ["mcix", "run"],
"cwd": "/path/to/your/project"
}
}
}MCI将自动加载 .env 文件启动时。
选项2:在客户端设置中配置
Claude桌面示例 (claude_desktop_config.json):
{
"mcpServers": {
"mci-tools": {
"command": "uvx",
"args": ["mcix", "run"],
"cwd": "/path/to/your/project",
"env": {
"API_KEY": "your-api-key",
"BASE_URL": "https://api.example.com",
"PROJECT_ROOT": "/path/to/your/project"
}
}
}
}VS代码示例 (.vscode/settings.json):
{
"mcp.servers": {
"mci-tools": {
"command": "uvx",
"args": ["mcix", "run"],
"cwd": "${workspaceFolder}",
"env": {
"API_KEY": "your-api-key",
"BASE_URL": "https://api.example.com",
"PROJECT_ROOT": "${workspaceFolder}"
}
}
}
}独立运行 (无MCP客户端):
MCI自动加载 .env 从项目根目录和 ./mci 目录:
# Create .env file
echo "API_KEY=your-api-key" > .env
echo "BASE_URL=https://api.example.com" >> .env
# Run MCI - it will automatically load .env
uvx mcix run如果需要,您还可以手动设置环境变量:
export API_KEY=your-api-key
export BASE_URL=https://api.example.com
uvx mcix run与MCP客户端集成
这 mcix run 命令创建一个符合MCP的服务器,该服务器可用于:
- 克劳德桌面:在设置中配置为MCP服务器
- MCP CLI工具:通过STDIO传输连接
- 自定义集成:使用MCP Python SDK
Claude桌面配置示例:
{
"mcpServers": {
"mci-tools": {
"command": "uvx",
"args": ["mcix", "run"],
"cwd": "/path/to/your/project"
}
}
}文档
主要特点
✨ 声明性工具定义 -定义工具一次,随处使用
🔌 多种执行类型 -文本、文件、CLI、HTTP和MCP支持
🎯 灵活过滤 -按标签、名称或工具集筛选
📦 工具集管理 -组织和重用工具集合
🔄 动态MCP服务器 -立即将MCI模式转换为MCP服务器
🌍 环境模板 -在工具定义中使用环境变量
✅ 内置验证 -全面的模式验证
📊 多种输出格式 -JSON、YAML和表格显示
贡献
欢迎投稿!请看 发展.md 用于:
- 设置您的开发环境
- 运行测试和过梁
- 建设项目
- 提交拉取请求
许可证
MIT许可证-有关详细信息,请参阅许可证文件
______________________________________________________________________
*这个项目是从 简单现代紫外线.*
