返回市场
麦奇紫外光

麦奇紫外光

作者:Model-Context-Interface13 星标更新:2025-11-13

项目介绍

MCI CLI 工具

一个命令行界面,用于管理模型上下文接口(MCI)模式和使用定义的MCI工具集动态运行MCP(模型上下文协议)服务器。

功能

  • 将现有的MCP服务器与自动缓存和易于过滤选项连接起来,以创建您独特的工具集
  • 使用清晰、可审核的MCI模式在JSON或YAML中定义自定义工具
    • API:
      • 将您的n8n、Make和其他工作流构建器作为工具连接
      • 使用LLM将任何REST API文档转换为AI工具
      • 运行远程代码,如AWS Lambda、judge0等
      • 支持身份验证、头部、主体等全套API功能
    • CLI:
      • 从简单的“ls”到任何可以通过apt-get安装的命令,都可以作为工具运行基于服务器的CLI命令
      • 编写独立的Python脚本并在30秒内将其转换为工具
      • 构建快速的GoLang二进制文件并作为AI工具运行
    • 文件:
      • 管理提示、生成报告并轻松提供上下文
      • 任何文件都可以成为模板:从打印简单的变量({{ props.message }})到if、for及foreach块
      • 创建真实、动态且可用的模板所需的一切
    • 文本:
      • 从工具返回动态或静态文本的最简单方式
      • 完全支持文件类型的模板,但定义在.mci.json中
      • 适用于提供动态资产(每个用户的图像URL、PDF等)
      • 同时也适用于生成简单的消息
  • 从自定义工具创建工具集:组织、管理和共享工具的最简单方法!
  • 上述所有内容都可以通过MCI适配器编程使用
  • 或者...通过uvx mcix run命令即时提供统一的STDIO MCP服务器
  • 并且...创建单独的.mci.json文件,为不同的代理提供不同的MCP服务器!通过提供针对每个代理的小而具体的上下文文件来减少令牌和运行时开销。

一切都很简单、超级灵活且仍然高性能!

查看MCI文档以了解MCI的一般概念(我们正在努力更新文档,包括uvx mcix工具的用法)

快速开始

无需安装!直接使用uvx运行MCI:

# 如果尚未安装,请安装uv
curl -LsSf https://astral.sh/uv/install.sh | sh

您的第一个MCI项目

  1. 初始化新项目

    uvx mcix install
    

    这会创建带有示例工具的mci.json以及包含示例工具集的mci/目录。

  2. 列出您的工具

    uvx mcix list
    
  3. 检查所需的环境变量

    uvx mcix envs
    
    # 生成.env模板
    uvx mcix envs --format=env
    
  4. 验证您的配置

    uvx mcix validate
    
  5. 运行MCP服务器

    uvx mcix run
    

就这样!您的MCI工具现在可以通过MCP协议访问了。

可选:全局安装MCI

如果您希望永久安装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工具是可重复使用的声明性工具定义,可以执行不同类型的操作:

  • 文本工具:返回模板化的文本响应
  • 文件工具:读取并返回文件内容
  • CLI工具:执行命令行程序
  • HTTP工具:进行API请求
  • MCP工具:调用其他MCP服务器

工具集

工具集是在mci/目录中存储的相关工具集合。它们可以:

  • 在项目之间共享
  • 按标签或名称过滤
  • 从主配置中引用

MCP服务器集成

mcix run命令创建一个MCP服务器,该服务器:

  • 动态加载来自您的MCI模式的工具
  • 通过模型上下文协议提供这些工具
  • 可以与兼容MCP的客户端(如Claude Desktop)一起使用
  • 支持过滤以仅暴露特定工具

可用命令

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模式,包括:

  • 主模式文件中的工具和配置
  • 所有引用的工具集
  • MCP服务器配置

输出格式

  • 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

检查:

  • 模式结构和语法
  • 必需字段
  • 数据类型
  • 工具定义
  • 工具集引用
  • MCP命令可用性(警告)

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

服务器:

  • 从您的MCI模式加载工具
  • 将其转换为MCP格式
  • 监听STDIO上的MCP请求
  • 将执行委托回MCIClient

停止服务器:按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,如果修改状态则为false
  • destructiveHint:如果工具可能执行破坏性更新(删除、覆盖),则为true,如果仅附加则为false
  • idempotentHint:如果多次调用工具并使用相同的参数没有额外效果,则为true
  • openWorldHint:如果工具与外部实体交互(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确保只能从安全位置读取文件。

CLI执行

执行命令行程序,带有参数和标志。

示例

{
  "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属性条件添加。

HTTP执行

对外部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执行

调用其他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}}访问输入属性
  • 输入验证:使用JSON Schema定义模式以确保类型安全

配置文件

主配置(mci.jsonmci.yaml

{
  "schemaVersion": "1.0",
  "metadata": {
    "name": "我的项目",
    "description": "我的MCI配置"
  },