Ant设计MCP服务器(Python)
此模型上下文协议(MCP)服务器获取Ant Design v4(中文)组件文档并将其结构化为JSON,以便AI代理可以执行分析。
特性
- 获取概述页面和单个组件页面。
- 提取组件元数据:名称、描述、示例。
- 自动对API表进行分类(道具/事件/方法/其他)。
- 缓存在本地获取HTML。
- 将所有组件导出到一个JSON文件中。
- MCP工具通过JSON-RPC标准公开。
工具
- list_组件(强制?)
- get_component(名称、力?)
- 搜索组件(查询)
- export_all(强制?,文件路径?)
环境设置
选择一种方法(要求在里面 src/requirements.txt):
venv(内置)
python -m venv .venv
source .venv/bin/activate
pip install -r src/requirements.txtpyenv+venv
brew install pyenv
pyenv install 3.11.8
pyenv local 3.11.8
python -m venv .venv
source .venv/bin/activate
pip install -r src/requirements.txt康达
conda create -n antd-mcp python=3.11 -y
conda activate antd-mcp
pip install -r src/requirements.txt运行服务器(源代码检出)
平面布局现在直接暴露了下面的模块 src/:
python -m server
# or explicit path
python src/server.py控制台脚本(安装后或通过pipx):
# 使用管道输入 JSON-RPC 请求
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | antd-mcp-server
# 带格式化输出
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | antd-mcp-server --color --pretty
# 长会话模式(stdin 流式输入)
antd-mcp-serverJSON-RPC示例
# List tools
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | python -m server
# List components
echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"list_components","arguments":{}}}' | python -m server
# Get one component
echo '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"get_component","arguments":{"name":"Button"}}}' | python -m server
# Search components
echo '{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"search_components","arguments":{"query":"form"}}}' | python -m server
# Export all component data
echo '{"jsonrpc":"2.0","id":5,"method":"tools/call","params":{"name":"export_all","arguments":{}}}' | python -m server出口产量
默认文件: src/exports/antd_components_all.json 结构:
{
"generated_at": ,
"count": ,
"components": [
{
"name": "Button",
"title": "Button 按钮",
"intro": [...],
"props": [...],
"events": [...],
"methods": [...],
"other_tables": [...],
"table_summary": {"props":1,"events":0,...},
"examples": [...],
"source_url": "https://4x.ant.design/..."
}
]
}TODO/路线图
- 更精确的表分类规则(列语义)。
- 并行取数并使用回退重试。
- 版本/语言(中文vs中文)选择。
- CLI包装器。
- 可选的速率限制。
许可证
MIT(必要时添加)
安装 (发布后)
pip install antd-mcp-server
# 或使用 pipx 隔离运行
pipx install antd-mcp-server安装后命令行入口:
# 使用管道输入 JSON-RPC 请求
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | antd-mcp-server
# 带格式化输出
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | antd-mcp-server --color --pretty
# 长会话模式(stdin 流式 JSON-RPC)
antd-mcp-server然后向 stdin 逐行发送 JSON 请求。
本地构建与发布
# 构建
python -m build
# 上传到 PyPI
python -m twine upload dist/*自动化脚本
提供 scripts/release.sh 简化发布流程:
# 正常发布新版本 0.1.1
./scripts/release.sh 0.1.1
# 仅构建 + 校验 (不上传、不推送 tag)
./scripts/release.sh 0.1.1 --dry-run依赖:
- 已安装
build与twine(pip install build twine) - 已通过测试 (
pytest -q);脚本会先跑测试。 - PyPI 凭证 (推荐 Token):
export TWINE_USERNAME="__token__"
export TWINE_PASSWORD="pypi-xxxxx" # 在 PyPI 创建的 token脚本步骤:
- 检查 git 工作区是否干净
- 运行测试
- 更新
pyproject.toml中版本号 - 提交并打 tag
v - 构建 (wheel + sdist)
twine check验证- 上传 (跳过若 dry-run)
- 推送 commit 与 tag
注意事项:
- 使用
sed简单替换版本号行,保持现有格式。 - 若需要预发行版本,可传入
0.2.0rc1等。 - 若需要撤销,可删除 tag 并重置 commit:
git tag -d v0.1.1 && git reset --hard HEAD~1。
供 AI 工具使用的 mcp.json 示例
方式1:使用已安装的包(推荐)
首先安装包:
pipx install antd-mcp-server
# 或从本地 wheel 安装
pipx install --force dist/antd_mcp_server-0.1.1-py2.py3-none-any.whl然后配置 mcp.json:
{
"version": 1,
"servers": {
"antd_mcp": {
"command": "antd-mcp-server",
"args": [],
"timeoutSeconds": 60
}
}
}方式2:直接运行源码(开发模式)
如果未安装包,可以直接运行源码:
{
"version": 1,
"servers": {
"antd_mcp": {
"command": "python",
"args": ["-m", "server"],
"cwd": "/path/to/antd-mcp/src",
"timeoutSeconds": 60
}
}
}注意:使用方式2时,需要确保:
- 已安装依赖:
pip install -r src/requirements.txt cwd指向项目的src目录的绝对路径
环境变量
ANTD_MCP_CACHE_DIR自定义缓存目录。- 命令行参数:
- --color 启用彩色输出 - --pretty 启用 JSON 格式化输出
版本
当前版本: 0.1.1
常见问题 (FAQ)
- 模块故障:
No module named 'antd_mcp'
- 已改为平铺布局,使用
python -m server或安装后使用antd-mcp-server。
- 输出出现多行 JSON 导致解析报错
- 仅解析第一行或使用流模式逐行处理。
- 想加速批量抓取
- 可后续新增并行与重试(Roadmap 中)。
- 如何发布新版本?
- 运行
./scripts/release.sh,确保环境变量与权限正确。
- 如何进行试发布(dry run)?
- 增加
--dry-run参数,不上传、不推送。
- 如何本地测试安装?
- 使用
pipx install --force dist/antd_mcp_server--py2.py3-none-any.whl
