Token导航 LogoToken导航

MCP Server · 运维云端

MCP Ios Components

帮助AI编码助手发现和复用iOS CocoaPods组件代码,避免重复造轮子的代码索引与查询服务

stdio官方级别未说明来源级核验工具 12
代码索引PythonClaude

快速开始

作者 / 组织
YuXilong-Labs
提供方
YuXilong-Labs
运行时
Python

工具数量

12

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

0

仓库热度

收录来源

1 个

MCP World

选型结论

MCP Ios Components 属于运维云端类 MCP Server,公开资料标注 12 个工具,通过stdio 本地进程接入,适配 Claude,有可以直接复制的安装命令;接入前要先准备 OAuth 授权。

分类

运维云端

传输方式

stdio

认证方式

OAuth 授权

部署方式

公开资料未说明

安装与配置

安装命令

python3 -m venv .venv

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    准备运行环境

    stdio 服务在本地起进程,需要先装好 Python,再按安装命令拉取依赖。

  2. 2

    安装服务

    复制下面的安装命令执行;命令里带占位符的位置换成自己的密钥或路径。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 12 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

详细介绍

MCP iOS Components Server

English | 中文

iOS CocoaPods 组件库 MCP Server,帮助 AI 编码助手发现和复用已有代码,避免重复造轮子。

特性

  • 自动组件发现 — 扫描 podspec 文件,可配置过滤标记
  • 智能 API 提取 — ObjC(@interface、@protocol、@property(含 block 类型)、方法、内联函数)+ Swift(public/open 声明)
  • 注释提取 — 支持 /// 和 /** */ 文档注释,可搜索
  • 跨组件使用搜索 — 查找组件在其他组件中的 import 和使用方式
  • SHA256 缓存 — 源文件变更时自动重建索引
  • HTTP 模式 + API Key 鉴权 — 部署到云端,团队共享
  • 按行读取源码 — 只读需要的行,节省 token
  • 按类聚合视图 — 一览类定义、属性、公开/内部方法

架构与目录(轻量分层)

mcp_server.py                 # 兼容入口(CLI + import 兼容)
mcp_app/
  bootstrap.py               # 组装层:MCP tools、main、全局运行态
  config.py                  # 配置与 access_control 加载
  models.py                  # 常量与状态模型
  access_control.py          # 访问控制导出
  state.py                   # AppState 导出
  indexing/                  # 发现、解析、索引构建
  services/                  # 查询/源码读取/同步/更新服务
  integrations/              # git、gitlab、apikey 集成
  transport/                 # 预留传输层拆分

说明:

  • 对外接口保持不变:python mcp_server.py ... 与 MCP 工具签名兼容。
  • mcp_server.py 仅负责兼容入口,核心逻辑在 mcp_app/ 分层维护。

快速开始

# 安装依赖
python3 -m venv .venv
source .venv/bin/activate
pip install mcp

# 运行(stdio 模式,本地 Claude Code 使用)
python mcp_server.py /path/to/your/pods

# 或通过环境变量指定
IOS_PODS_DIR=/path/to/your/pods python mcp_server.py

配置 Claude Code

claude mcp add -s user ios-components -- \
  /path/to/.venv/bin/python /path/to/mcp_server.py /path/to/your/pods

验证连接:

claude mcp list
# ios-components: ... ✓ Connected

强化组件复用(推荐)

方式一:项目规则(AGENTS.md)

将 AGENTS.md.template 复制到你的 iOS 项目根目录:

cp /path/to/mcp-ios-components/AGENTS.md.template /path/to/your/project/AGENTS.md

然后编辑 AGENTS.md,填写项目特定的组件表。Claude Code 会自动读取并遵循规则,在实现功能前先检查组件库。

方式二:生产级 Skill 套件(推荐与 MCP 配套使用)

仓库内置 skills/ 目录,提供四个可直接上传到 Claude 的技能:

  • ios-component-implementation:实现需求时强制“先检索再编码”
  • ios-component-selection:需求评审阶段组件选型
  • ios-component-migration:把已有重复实现迁移到基础组件
  • ios-component-review:PR 阶段拦截重复造轮子

建议:先启用 implementation + review,再按需启用 selection/migration。

详见:skills/README.md

技能包已按“复用优先 + 证据输出”方式组织,并包含:

  • 4 个 SKILL.md(触发边界、流程、失败恢复、输出契约)
  • references/(词表、模板、判定规则,按需加载)
  • agents/openai.yaml(Claude/Codex UI 元数据兼容)
  • skills/evals/*(触发、功能与流程合规评测)

Skills 一键安装(Claude / Codex)

仓库内置安装脚本,可将 skills/ 下 4 个技能批量安装到本地技能目录(支持覆盖确认、版本提示、安装校验):

# 同时安装到 Codex + Claude(默认 all)
python3 scripts/install_skills.py

# 仅安装到 Codex
python3 scripts/install_skills.py --target codex

# 仅安装到 Claude(目录自动探测失败时可显式指定)
python3 scripts/install_skills.py --target claude --claude-dir ~/.claude/skills

更多参数见:python3 scripts/install_skills.py --help

工具列表

工具说明
list_components列出所有已索引组件及统计信息
search_component(keyword, kind?, format?, limit?)搜索符号、声明、注释(模糊匹配;支持 format=json 便于 agent 解析)
audit_component_api_quality(component_name?, format?, limit?)输出 API 质量清单(缺注释/可疑命名等;只读)
get_component_api(component_name)获取组件完整公开 API(按文件分组)
get_tool_docs(tool_name?, format?)返回工具详细说明与最佳实践(推荐 agent 首次接入先调用;建议多轮检索兜底避免误判)
get_class_detail(component_name, classname)类视图:定义、属性、公开/内部方法
read_source(component_name, file, start?, end?)按行读取源码(支持模糊文件名)
find_usage_example(component_name)搜索其他组件中的使用示例
refresh_index手动触发检查更新并重建索引
watch_status查看定时检查状态和更新日志
sync_from_config(config_path?)根据配置文件同步组件代码
sync_gitlab_group(group_id, ...)🆕 自动发现并同步 GitLab Group 下的基础组件

Agent 检索模板(强烈推荐)

当基础组件 API 命名不规范或注释不齐全时,单次检索很容易误判“没有现成能力”。

推荐做法:多轮小 limit 检索(中英混合 + 类名/动词组合),逐步收敛到目标能力。

建议流程(可直接复制到 agent 指令中):

1) get_tool_docs(tool_name="search_component", format="json")
2) search_component(format="json", limit=5) x N 次(N>=3,必要时 N>=6)
   - 先类名/类型:UIImage / UIView / CALayer / NSString / NSURLSession
   - 再语义动词:clip / crop / mask / avatar / radius / border
   - 再常见关键词:圆角 / corner / round / cache / request
3) 如果结果偏离(例如 corner 命中大量 UIView 圆角),追加更定向词:clip / mask / imageWith / tm_
4) 仅在命中明确 file:line 后,再小范围 read_source(例如 30 行)验证
5) 若命中 `api_only` 组件无法 read_source,则改用 get_component_api + get_class_detail + find_usage_example
6) 输出时保留证据链(search/api/class 或 source/example),避免只给“有/没有”的结论

一个典型的“圆角头像/图片裁剪”检索组合:

  • UIImage -> clip -> tm_clipImage -> corner

配置文件同步组件

支持根据配置文件自动拉取组件代码:

  • 默认行为:正常启动 python mcp_server.py /path/to/pods 时会先自动同步,再构建首次索引。
  • 优先级:如果项目根目录存在 components.yaml,优先按配置同步基础组件;若配置不存在,则回退为同步 pods_dir 下扫描到的、当前位于 main 分支的基础 git 仓库。
  • 同步分支:优先使用 components.yaml 中每个组件的 branch;未配置时默认 main。
  • 降级策略:若启动前同步存在错误,服务不会退出,而是记录告警并继续使用本地已有代码建索引。
# 创建配置文件
cp components.yaml.example components.yaml
# 编辑配置...

# 普通启动会自动先同步再扫描
python mcp_server.py /path/to/pods

# 同步组件(克隆/更新)
python mcp_server.py --sync components.yaml /path/to/pods

# 仅同步,不启动服务
python mcp_server.py --sync --sync-only /path/to/pods

# 同步后启动 HTTP 服务
python mcp_server.py --sync --http /path/to/pods

配置文件格式(YAML):

components:
  BTBaseKit: git@gitlab.com:ios/BTBaseKit.git  # 简化格式
  BTNetwork:
    repo: git@gitlab.com:ios/BTNetwork.git
    branch: develop  # 指定分支

access_control:
  exclude_from_index:
    - BTRtcEngine
  api_only:
    - BTCryptoKit
    - BTEncryptKit

说明:

  • --sync 仍保留显式同步入口,适合希望在启动前手动控制配置路径或只执行同步的场景。
  • 显式传入 --sync 或 --gitlab-group 时,不会再额外执行一次隐式启动前同步。
  • 如果既没有 components.yaml,也没有扫描到可同步的 main 分支基础 git 仓库,则会直接进入索引构建。
  • 也可以通过 MCP 工具 sync_from_config 在运行时触发同步。

访问控制配置(核心组件保护)

在 components.yaml 里可配置 access_control:

  • exclude_from_index:组件完全不进入 MCP 索引(list/search 不可见)
  • api_only:仅允许 search_component/get_component_api/get_class_detail,拒绝 read_source/find_usage_example

规则:

  • 名称匹配大小写不敏感,支持写 pod 名或目录名
  • exclude_from_index 优先级高于 api_only
  • 默认兜底:BTRtcEngine 始终会被排除(即使未配置)

生效方式:

  • 修改 components.yaml 后执行 refresh_index 或重启服务

GitLab Group 自动发现

自动扫描 GitLab Group 下的所有仓库,识别基础组件并同步:

# 同步指定 Group 下的基础组件
python mcp_server.py --gitlab-group ios-components /path/to/pods

# 自定义 GitLab 服务器
python mcp_server.py --gitlab-group ios-components \
  --gitlab-url https://gitlab.your-company.com \
  /path/to/pods

基础组件判定规则

Server 会检查每个仓库的 podspec 文件,以下任一条件满足则判定为基础组件:

  • 无 SUPPORT_MIXUP 标记 — podspec 中不含业务组件标记
  • dependency 数量 ≤ 3 — 依赖少,说明是底层组件

环境变量配置

变量说明默认值
GITLAB_URLGitLab 服务器地址https://gitlab.com
GITLAB_TOKENGitLab API Token(需要 read_api 权限)无

MCP 工具调用

运行时也可通过 sync_gitlab_group 工具触发同步:

sync_gitlab_group(group_id="ios-components", gitlab_url="", gitlab_token="", use_ssh=true)

定时检查更新

# 每 5 分钟自动检查组件仓库更新
python mcp_server.py --watch 300 /path/to/pods

# HTTP 模式 + 定时检查
python mcp_server.py --http --watch 300 /path/to/pods

支持单仓库和多仓库(每个组件独立 git 仓库)。检测到更新后自动 git pull + 重建索引。

HTTP 模式(云端部署)

# 生成 API Key
python mcp_server.py --gen-key "teammate-name"

# 启动 HTTP 服务
python mcp_server.py --http --port 8900 /path/to/pods

# 局域网访问(监听所有网卡)
python mcp_server.py --http --host 0.0.0.0 --port 8900 /path/to/pods

# 远程 Claude Code 连接
claude mcp add --transport http ios-components http://your-server:8900/mcp \
  --header "Authorization: Bearer sk-xxx"

局域网访问说明:

  • 使用 --host 0.0.0.0 可让同一局域网设备通过 http://:8900/mcp 访问
  • 存活检查请使用 http://:8900/webhook/health,不要用浏览器直接 GET /mcp
  • /mcp 是 MCP Streamable HTTP 端点,客户端应通过 MCP 协议发起初始化,而不是普通 HTTP 探测
  • 如启用 API Key,客户端仍需携带 Authorization: Bearer sk-xxx
  • 当前未提供 OAuth 自动发现端点;若客户端强依赖 /.well-known/oauth-authorization-server*,请改为直连 MCP HTTP + Bearer API Key 模式
  • 为兼容最新 Codex / OpenAI MCP 客户端,服务会对 initialize、tools/list、resources/list、prompts/list 这类发现阶段请求放行;实际工具调用仍可继续走 Bearer 校验
  • 若出现 421 Misdirected Request,通常是 Host/Origin 头或代理转发配置问题(默认局域网直连场景不应再出现)

API Key 管理

python mcp_server.py --gen-key "alice"    # 生成新 Key
python mcp_server.py --list-keys          # 查看已注册 Key(脱敏显示)

Key 存储在 .api-keys 文件(权限 600)。支持热更新——添加新 Key 无需重启。

也可通过环境变量设置:

MCP_API_KEYS="key1,key2" python mcp_server.py --http

环境变量

变量说明默认值
IOS_PODS_DIR组件库根目录当前目录
IOS_PODS_INCLUDE仅索引指定组件(逗号分隔;适合 smoke test;建议用于多轮检索兜底)无
IOS_PODS_CONFIG组件配置文件路径(用于 components 与 access_control)components.yaml
IOS_PODS_CACHE_DIR缓存目录脚本旁 .cache/
IOS_PODS_KEYS_FILEAPI Key 文件路径脚本旁 .api-keys
IOS_PODS_MIXUP_MARKER业务组件过滤标记SUPPORT_MIXUP
IOS_PODS_WATCH_INTERVAL定时检查间隔(秒)0(禁用)
MCP_API_KEYSAPI Key(逗号分隔)无
GITLAB_URLGitLab 服务器地址https://gitlab.com
GITLAB_TOKENGitLab API Token无

组件发现机制

Server 自动扫描组件目录中包含 .podspec 的子目录。默认过滤规则包括:

  • podspec 中存在非空 SUPPORT_MIXUP / BETA_SUPPORT_MIXUP
  • access_control.exclude_from_index 命中的组件
  • 默认安全兜底:BTRtcEngine

API 文档自动生成

内置工具可从索引缓存自动生成每个组件的 Markdown API 文档,包含方法签名、注释说明、调用示例。对缺注释的 API 可选用 AI(Claude Haiku)自动补全说明。

# 基础生成(需要先有索引缓存 .cache/index.json)
python tools/generate_api_docs.py --pods-dir /path/to/Pods

# 指定单个组件
python tools/generate_api_docs.py --pods-dir /path/to/Pods --component BTBaseKit

# 预估缺注释 API 数量(不生成文档、不调用 AI)
python tools/generate_api_docs.py --dry-run

# 带 AI 补全生成(需要 ANTHROPIC_API_KEY 环境变量)
ANTHROPIC_API_KEY=sk-ant-xxx python tools/generate_api_docs.py --pods-dir /path/to/Pods --ai-fill

# 自定义输出目录
python tools/generate_api_docs.py --pods-dir /path/to/Pods --output-dir ./my-docs

参数说明:

参数说明默认值
--pods-dirPods 源码目录(用于读取源码和查找调用示例)无
--index-cache索引缓存 JSON 路径.cache/index.json
--output-dir输出目录docs/api/
--component指定单个组件名全部组件
--ai-fill启用 AI 补全缺注释的 API(需要 ANTHROPIC_API_KEY)关闭
--dry-run仅统计缺注释数量,不生成文档关闭

生成的文档结构:

docs/api/
├── index.md                       # 目录页(组件列表 + 链接)
├── BTBaseKit-底层基类、工具类.md    # 组件 API 文档(组件名-简述)
├── BTNetwork-网络请求封装.md
└── ...

文件名格式为 组件名-简述.md,简述取自 podspec summary 首行,超过 20 字符自动截断;无 summary 时退回 组件名.md。

每个组件文档包含:

  • 组件概述(来自 podspec summary/description)
  • 按类/协议聚合的 API 列表(Category 方法归属宿主类)
  • 枚举类型章节(NS_ENUM/NS_OPTIONS 成员表格)
  • typedef / block 类型定义
  • 废弃 API 标注(NS_DEPRECATED_IOS / @available 等,含迁移建议)
  • 注释自动拆分为摘要 + 详细说明
  • 跨组件调用示例(自动扫描其他组件的 import/使用)
  • AI 生成的说明会标记 > *AI 生成* 并附带调用示例代码

上传到飞书知识库

支持将文档上传到飞书知识库,使用飞书官方 CLI 工具 lark-cli。

前置条件:

  1. 安装 lark-cli:npm install -g @larksuite/cli
  2. 初始化配置:lark-cli config init
  3. 登录授权:lark-cli auth login --recommend
# 仅生成飞书格式 JSON(不上传,保留旧方式)
python tools/generate_api_docs.py --format lark --pods-dir /path/to/Pods

# 上传到飞书知识库(通过 lark-cli)
python tools/generate_api_docs.py \
  --upload --space-id 7xxx --parent-node wikcnXxx \
  --pods-dir /path/to/Pods

# 预览上传内容(不实际执行)
python tools/generate_api_docs.py \
  --upload --preview --space-id 7xxx --parent-node wikcnXxx \
  --pods-dir /path/to/Pods

# 上传单个组件
python tools/generate_api_docs.py \
  --upload --space-id 7xxx --parent-node wikcnXxx \
  --pods-dir /path/to/Pods --component BTBaseKit

# 上传本地 Markdown 文件
python tools/generate_api_docs.py \
  --upload --space-id 7xxx --parent-node wikcnXxx \
  --pods-dir /path/to/Pods --component BTBaseKit

飞书上传参数:

参数说明默认值
--upload上传到飞书知识库(依赖 lark-cli)关闭
--preview预览上传内容,不实际执行关闭
--space-id知识库 space_id无
--parent-node父节点 token(wikcnXxx 格式)无
--format lark输出飞书 DocX Block JSON(仅本地输出)markdown

批量生成 + 上传基础组件(main 分支)

一次性把指定 --pods-dir 下所有基础组件(发现规则与 MCP 启动一致,过滤掉 SUPPORT_MIXUP 非空的业务组件)生成 API Markdown 并上传到同一飞书 wiki 节点。

# 默认不润色
python tools/generate_api_docs.py \
  --batch-upload \
  --pods-dir /path/to/Pods \
  --wiki-node wikcnXXX

# 上传前执行 AI 深度润色
python tools/generate_api_docs.py \
  --batch-upload --polish \
  --pods-dir /path/to/Pods \
  --wiki-node wikcnXXX

# 预览(不实际调用 lark-cli)
python tools/generate_api_docs.py \
  --batch-upload --preview \
  --pods-dir /path/to/Pods \
  --wiki-node wikcnXXX

行为要点:

  • 仅处理当前本地分支为 main 的组件;非 main 分支的组件记入"跳过"清单,不生成也不上传。
  • 处理前对 main 分支组件执行 git pull --ff-only,拉取远端最新代码;pull 失败则标记该组件为失败,不中断整批。
  • 单组件上传失败(lark-cli 报错等)不会中断整批;末尾打印 成功 / 跳过 / 失败 三类汇总。
  • 退出码:全部成功 → 0;存在 failed → 1;缺 --pods-dir 或 --wiki-node → 2。

批量模式参数:

参数说明默认值
--batch-upload启用批量模式关闭
--pods-dirPods 根目录(必填)无
--wiki-node飞书知识库目标节点 token(必填,所有组件均挂该节点下)无
--polish启用 AI 深度润色(可选)关闭
--preview预览,不实际调用 lark-cli关闭

通用 Markdown 上传工具

独立脚本,将任意 Markdown 文件或整个目录上传到飞书文档(不依赖索引):

# 上传单个文件
python tools/upload_to_lark.py docs/api/BTBaseKit.md

# 上传并指定标题
python tools/upload_to_lark.py docs/api/BTBaseKit.md --title "BTBaseKit API 文档"

# 上传到知识库节点下
python tools/upload_to_lark.py docs/api/BTBaseKit.md --wiki-node wikcnXXXX

# 上传整个目录
python tools/upload_to_lark.py docs/api/

# 预览模式(不实际上传)
python tools/upload_to_lark.py docs/api/ --dry-run

上传参数:

参数说明默认值
pathMarkdown 文件或目录(位置参数,自动识别)必填
--title文档标题(仅单文件生效,默认从内容提取)自动
--wiki-node知识库节点 token(wikcnXxx 格式)无
--wiki-space知识空间 ID无
--folder-token云空间文件夹 token无
--chunk-lines分段上传行数400
--dry-run预览模式,不实际上传关闭

缓存机制

索引缓存在 .cache/index.json,基于文件路径和修改时间的 SHA256 哈希。源文件变更时自动重建。

License

MIT


MCP iOS Components Server

English | 中文

MCP Server for querying iOS CocoaPods component APIs. Helps AI coding assistants discover and reuse existing code instead of reinventing the wheel.

Features

  • Auto component discovery — scans podspec files, filters by configurable marker
  • Smart API extraction — ObjC (@interface, @protocol, @property (including block types), methods, inline functions) + Swift (public/open declarations)
  • Comment extraction — /// and /** */ doc comments, searchable
  • Cross-component usage search — find how components are imported/used elsewhere
  • SHA256 cache — auto-rebuilds index only when source files change
  • HTTP mode + API Key auth — deploy to cloud, share with team
  • Line-range source reading — read only the lines you need, saves tokens
  • Per-class aggregated view — see class definition, properties, public/private methods at a glance

Architecture (Lightweight Layering)

mcp_server.py                 # Compatibility entrypoint (CLI + import compatibility)
mcp_app/
  bootstrap.py               # Composition layer: MCP tools, main, runtime globals
  config.py                  # Config and access_control loading
  models.py                  # Constants and state model
  access_control.py          # Access-control exports
  state.py                   # AppState export
  indexing/                  # Discovery, parsing, index building
  services/                  # Query/source/sync/update services
  integrations/              # git, gitlab, apikey integrations
  transport/                 # Reserved for transport extraction

Notes:

  • Public behavior is unchanged: python mcp_server.py ... and MCP tool signatures remain compatible.
  • mcp_server.py is now compatibility-only; core logic is maintained in mcp_app/.

Quick Start

# Install dependencies
python3 -m venv .venv
source .venv/bin/activate
pip install mcp

# Run (stdio mode for Claude Code)
python mcp_server.py /path/to/your/pods

# Or set via environment variable
IOS_PODS_DIR=/path/to/your/pods python mcp_server.py

Configure Claude Code

claude mcp add -s user ios-components -- \
  /path/to/.venv/bin/python /path/to/mcp_server.py /path/to/your/pods

Verify:

claude mcp list
# ios-components: ... ✓ Connected

Enforce Component Reuse (Recommended)

Copy AGENTS.md.template to your iOS project root:

cp /path/to/mcp-ios-components/AGENTS.md.template /path/to/your/project/AGENTS.md

Edit AGENTS.md to fill in your project-specific component table. Claude Code will automatically follow the rules and check the component library before implementing features.

Tools

ToolDescription
list_componentsList all indexed components with stats
search_component(keyword, kind?)Search symbols, declarations, comments
get_component_api(component_name)Full public API grouped by file
get_class_detail(component_name, classname)Class view: definition, properties, methods
read_source(component_name, file, start?, end?)Read source lines (fuzzy filename match)
find_usage_example(component_name)Find imports/usage in other components
refresh_indexManually check for updates and rebuild index
watch_statusView watch status and recent update logs
sync_from_config(config_path?)Sync components from config file
sync_gitlab_group(group_id, ...)🆕 Auto-discover and sync base components from GitLab Group

Sync Components From Config

On a normal startup like python mcp_server.py /path/to/pods, the server will auto-sync before building the first index.

  • If components.yaml exists under the project root, it syncs configured component repos first.
  • If no config file exists, it falls back to syncing base-component git repositories discovered under pods_dir that are currently on the main branch.
  • Branch selection respects each component's configured branch; if omitted, it defaults to main.
  • Startup sync failures are non-fatal: the server logs a warning and continues indexing the locally available code.
  • Explicit --sync and --gitlab-group flows still work as before and do not trigger an extra implicit startup sync.
# Normal startup auto-syncs first
python mcp_server.py /path/to/pods

# Explicit sync still works
python mcp_server.py --sync components.yaml /path/to/pods

# Sync only, do not start the server
python mcp_server.py --sync --sync-only /path/to/pods

Access Control (Protect Sensitive Components)

Configure access_control in components.yaml:

components:
  BTBaseKit: git@gitlab.com:ios/BTBaseKit.git

access_control:
  exclude_from_index:
    - BTRtcEngine
  api_only:
    - BTCryptoKit
    - BTEncryptKit

Behavior:

  • exclude_from_index: component is fully removed from MCP index (list/search cannot see it)
  • api_only: allow search_component/get_component_api/get_class_detail, deny read_source/find_usage_example
  • Name matching is case-insensitive and accepts either pod name or directory name
  • Priority: exclude_from_index overrides api_only
  • Safety default: BTRtcEngine is always excluded even without config

Apply changes by running refresh_index (or restarting server).

GitLab Group Auto-Discovery

Automatically scan all repos under a GitLab Group and sync base components:

# Sync base components from a GitLab Group
python mcp_server.py --gitlab-group ios-components /path/to/pods

# Custom GitLab server
python mcp_server.py --gitlab-group ios-components \
  --gitlab-url https://gitlab.your-company.com \
  /path/to/pods

Base Component Detection Rules

The server checks each repo's podspec. A component is considered "base" if either:

  • No SUPPORT_MIXUP marker — podspec doesn't contain the business component marker
  • ≤ 3 dependencies — few deps indicates a low-level component

Environment Variables

VariableDescriptionDefault
GITLAB_URLGitLab server URLhttps://gitlab.com
GITLAB_TOKENGitLab API Token (needs read_api scope)(none)

HTTP Mode (Cloud Deployment)

# Generate API key
python mcp_server.py --gen-key "teammate-name"

# Start HTTP server
python mcp_server.py --http --port 8900 /path/to/pods

# Connect from remote Claude Code
claude mcp add --transport http ios-components http://your-server:8900/mcp \
  --header "Authorization: Bearer sk-xxx"

LAN notes:

  • Use http://:8900/webhook/health for liveness checks instead of opening GET /mcp in a browser
  • /mcp is a Streamable HTTP MCP endpoint, so clients should initialize via the MCP protocol instead of plain HTTP probing
  • If API keys are enabled, clients must send Authorization: Bearer sk-xxx
  • OAuth auto-discovery endpoints are not exposed; clients that require /.well-known/oauth-authorization-server* should use direct MCP HTTP with Bearer auth instead
  • To better align with current Codex / OpenAI MCP clients, discovery-stage methods such as initialize and tools/list are allowed without auth while actual tool execution can still require a Bearer token

API Key Management

python mcp_server.py --gen-key "alice"    # Generate new key
python mcp_server.py --list-keys          # List all keys (masked)

Keys are stored in .api-keys file (chmod 600). Supports hot-reload — add new keys without restart.

You can also set keys via environment variable:

MCP_API_KEYS="key1,key2" python mcp_server.py --http

Environment Variables

VariableDescriptionDefault
IOS_PODS_DIRPath to pods directoryCurrent directory
IOS_PODS_INCLUDEOnly index specific components (comma-separated; useful for smoke tests)(none)
IOS_PODS_CONFIGComponents config path (for components + access_control)components.yaml
IOS_PODS_CACHE_DIRCache directory.cache/ next to script
IOS_PODS_KEYS_FILEAPI keys file path.api-keys next to script
IOS_PODS_MIXUP_MARKERMarker to filter business componentsSUPPORT_MIXUP
MCP_API_KEYSComma-separated API keys(none)
GITLAB_URLGitLab server URLhttps://gitlab.com
GITLAB_TOKENGitLab API Token(none)

Component Discovery

The server scans subdirectories with .podspec files and applies default filters:

  • Non-empty SUPPORT_MIXUP / BETA_SUPPORT_MIXUP in podspec
  • Components matched by access_control.exclude_from_index
  • Safety default component: BTRtcEngine

API Documentation Generator

Built-in tool to auto-generate Markdown API docs from the index cache, including method signatures, comments, and usage examples. Optionally uses AI (Claude Haiku) to fill in missing comments.

# Basic generation (requires .cache/index.json)
python tools/generate_api_docs.py --pods-dir /path/to/Pods

# Single component
python tools/generate_api_docs.py --pods-dir /path/to/Pods --component BTBaseKit

# Estimate missing comments count (no docs generated, no AI calls)
python tools/generate_api_docs.py --dry-run

# With AI fill (requires ANTHROPIC_API_KEY)
ANTHROPIC_API_KEY=sk-ant-xxx python tools/generate_api_docs.py --pods-dir /path/to/Pods --ai-fill
FlagDescriptionDefault
--pods-dirPods source directory(none)
--index-cacheIndex cache JSON path.cache/index.json
--output-dirOutput directorydocs/api/
--componentGenerate for a single componentall
--ai-fillUse AI to fill missing comments (needs ANTHROPIC_API_KEY)off
--dry-runOnly count missing comments, skip generationoff

Upload to Lark Wiki

Upload docs to a Lark wiki space using the official lark-cli tool.

Prerequisites:

  1. Install lark-cli: npm install -g @larksuite/cli
  2. Initialize config: lark-cli config init
  3. Login: lark-cli auth login --recommend
# Generate Lark DocX JSON locally (no upload, legacy mode)
python tools/generate_api_docs.py --format lark --pods-dir /path/to/Pods

# Upload to Lark Wiki (via lark-cli)
python tools/generate_api_docs.py \
  --upload --space-id 7xxx --parent-node wikcnXxx \
  --pods-dir /path/to/Pods

# Preview upload (dry-run, no actual upload)
python tools/generate_api_docs.py \
  --upload --preview --space-id 7xxx --parent-node wikcnXxx \
  --pods-dir /path/to/Pods

# Upload single component
python tools/generate_api_docs.py \
  --upload --space-id 7xxx --parent-node wikcnXxx \
  --pods-dir /path/to/Pods --component BTBaseKit
FlagDescriptionDefault
--uploadUpload to Lark Wiki (requires lark-cli)off
--previewPreview upload content without executingoff
--space-idWiki space ID(none)
--parent-nodeParent node token (wikcnXxx format)(none)
--format larkOutput Lark DocX Block JSON (local only)markdown

Caching

Index is cached in .cache/index.json with SHA256 hash based on file paths and modification times. Cache is automatically rebuilt when source files change.

License

MIT

工具与能力

工具数量

12

资源数量

0

提示词数量

0

能力标签

代码索引Python本地部署组件发现API提取代码复用iOS开发

支持客户端

Claude

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

看服务状态

查询容器、日志和监控指标,定位异常。

执行部署变更

在权限范围内触发发布、回滚和环境切换。

核对资源用量

汇总用量,找出闲置和超额的部分。

选择建议

值得选的地方

  • 工具数量 12 个,一次接入能覆盖的操作比单点工具更全。
  • 有现成的安装命令,不用自己找入口,照着跑就能起服务。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

  • stdio 方式要求本地装好 Python,换机器要重新装一遍。
  • 需要自备OAuth 授权,没有凭据没法直接试。
  • 公开摘要偏短,具体能力和限制要回到仓库确认。

更适合

  • 需要在运维云端场景里让模型直接调用外部能力的人。
  • 已经在用 Claude 的用户,接入路径最短。
  • 想先快速试一下、能接受在本地跑服务的人。

不太适合

  • 完全不想在本地装环境的人。
  • 暂时拿不到OAuth 授权的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
MCP Ios Components

MCP World · 本页

12stdio有1 个2026-05-17
Ui Tars Desktop 8a825770

MCP World

0stdio有1 个2026-05-17
Elie222 MCP

MCP World

0未说明未标注1 个2026-05-17
Arizeai Phoenix MCP

MCP World

0stdio有3 个2026-05-17
Unity MCP 87ee506e

MCP World

42HTTP有2 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

MCP Ios Components 怎么安装?

公开资料给出的安装命令是 python3 -m venv .venv,运行环境为 Python。装完后按客户端要求写进 MCP 配置,重启客户端生效。

MCP Ios Components 怎么在 Claude Desktop、Cursor 里配置?

它是stdio 本地进程,客户端配置里要写启动命令和参数,运行环境是 Python;保存后完全退出客户端再打开,配置才会生效。

MCP Ios Components 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

MCP Ios Components 需要 API Key 吗?

公开资料标注的认证方式是OAuth 授权,也就是要先拿到凭据才能连上;凭据只填在自己本地的配置里,不要写进公开仓库。

MCP Ios Components 支持哪些客户端?

公开资料标注支持 Claude;其他客户端只要能配置 MCP Server,也能用同样的命令或地址接入。

来源信息

继续浏览同类 MCP