网格动态MCP服务器
一种MCP工具,用于分析图像构图结构和情绪,提出对齐策略,并综合增强的图像生成提示。实现了一个三层olog(本体日志)架构,用于确定性、语义连贯的分析。
建筑
该系统遵循三层olog模式:
第1层:域类型(类别结构)
- 结构分析:8个组成参数(边缘张力、不对称平衡、负空间、节奏、密度、尺度层次、对角线优势、遏制)
- MoodAnalysis:7个情绪维度(忧郁、亲密、紧张、静止、能量、温暖、不安)
- 种子解读:从可选种子文本中提取主题和意图
- 对齐建议:关系类型、注册表描述和检测到的冲突
所有类型都是具有确定性结构的数据类。
第2层:解释(确定性提取)
视觉模型通过两个并行函数分析图像:
- 结构提取器:分析组成元素→ 生成8个数值参数(0-1标度)+自然语言摘要
- 情绪提取器:分析情绪/感官品质→ 生成7维值+自然语言摘要
- 种子解析器 (如有提供):从文本中提取主题和意图
- 对齐建议者:基于规则的推理,建议结构、情绪和种子如何表现性地相互作用
输出是具有人类可读摘要的确定性JSON。
第3层:合成(增强型即时生成)
单个LLM调用接收所有第2层输出和用户修改,生成具有组合感知的提示语言,以调和任何紧张关系。
MCP端点
extract
从图像中提取构图结构和意境。
Args:
image_path(str):图像文件的路径(\<10MB)seed_text(str,可选):描述主题/意图的种子文本
退货:
{
"structural_analysis": {
"values": { "edge_tension": 0.7, ... },
"summary": "Tight composition with strong edge presence"
},
"mood_analysis": {
"dimensions": { "melancholy": 0.6, "intimacy": 0.7, ... },
"summary": "Deeply intimate but melancholic atmosphere"
},
"seed_interpretation": {
"subject": "children's birthday party",
"intent": "celebration"
},
"proposed_alignment": {
"relationship_type": "productive_tension",
"register_description": "bittersweet celebration",
"conflicts": ["melancholic mood contradicts celebratory intent"]
},
"editable": true
}synthesize
根据修改后的参数合成增强提示。
Args:
structural_values(dict):修改结构分析(用户可以调整值)mood_values(dict):改进的情绪分析(用户可以调整维度)alignment_override(str,可选):覆盖寄存器描述seed_text(str,可选):种子上下文target_length(str):“简短”、“中等”或“详细”
退货:
{
"enhanced_prompt": "Frame the birthday scene with tight, edge-crowding composition..."
}analyze_and_synthesize
结合提取和合成的便利终点。
Args:
image_path(str):图像文件的路径seed_text(str,可选):可选种子文本auto_approve(bool):如果为真,则跳到合成;如果为false,则返回解释层target_length(str):“简短”、“中等”或“详细”
退货:
- 如果
auto_approve=false:完整提取结果供用户查看 - 如果
auto_approve=true:最终增强_提示
示例流程
# Step 1: Extract
result = extract("birthday_photo.jpg", seed_text="children's birthday party")
# User reviews interpretation layer:
# - Structural: high edge_tension (0.8), compressed negative_space (0.7)
# - Mood: melancholy (0.6), intimacy (0.7), unease (0.4)
# - Alignment: "Conflict detected—melancholic mood tensions against celebratory intent"
# Step 2: User modifies (optional)
# Reduce melancholy to 0.3, approve "bittersweet celebration" register
# Step 3: Synthesize
prompt = synthesize(
structural_values={
"edge_tension": 0.8,
"negative_space": 0.7,
...
},
mood_values={
"melancholy": 0.3, # User modified
"intimacy": 0.7,
...
},
alignment_override="bittersweet celebration",
seed_text="children's birthday party",
target_length="detailed"
)
# Output: "Frame the birthday scene with tight, edge-crowding composition that
# leaves no breathing room. Let the celebratory subject matter sit within
# dramatic, intimate framing—the closeness should feel warm but the compression
# hints at transience..."安装
使用FastMCP云
- 使用此模板创建GitHub存储库
- 配置FastMCP云:
- 运行时python - 入口点: grid_dynamics_mcp.grid_dynamics_mcp:mcp - 包管理器:紫外线
- 部署
本地开发
# Create virtual environment
python -m venv venv
source venv/bin/activate
# Install dependencies
pip install -e ".[dev]"
# Run tests
pytest test_grid_dynamics.py -v
# Run server locally
python grid_dynamics_mcp.pyClaude桌面集成
添加到 claude_desktop_config.json:
{
"tools": {
"grid-dynamics": {
"command": "python",
"args": ["-m", "fastmcp.cli", "grid_dynamics_mcp:mcp"],
"env": {
"ANTHROPIC_API_KEY": "your-key-here"
}
}
}
}测试
所有22项测试均通过:
pytest test_grid_dynamics.py -v测试覆盖率
- 第1层(域类型):7个测试验证数据类实例化和序列化
- 第2层(解释):8个测试验证视觉模型集成和JSON解析
- 第3层(合成):3次不同强度的快速生成测试
- 整合:对完整端点工作流进行4次测试
可组合性
输出的 extract 自然喂养 synthesize解释层(结构/情绪值)可以是:
- 用户通过UI修改:滑块调整数值强度
- 程序化修改:上游流程可以调整尺寸
- 从其他工具注入:对齐首选项作为参数传递
这使得多颜色系统中的下游可组合性成为可能(例如,将网格动力学与游戏节目美学或香水领域相结合)。
关键设计决策
为什么是三层?
- 第1层(域):数学严谨性——分类结构防止循环依赖
- 第2层(解释):确定性提取——视觉模型分析,而非综合
- 第3层(合成):创造性的法学硕士整合——一次通话调和了所有紧张局势
这种分离允许:
- 每层独立测试
- 合成前第2层的用户审查/修改
- 在其他环境中重用解释层
- 通过交换图对组合相干性的数学证明
为什么选择这8个结构参数?
选择捕捉:
- 空间特征:边缘张力、遏制、负空间
- 分布:不对称平衡,规模层次结构
- 时间/动力学特性:节奏、密度、对角线优势
它们共同描述了构图的“视觉压力”。
为什么是这7个情绪维度?
涵盖感官范围:
- 情绪价:忧郁、温暖
- 关系的:亲密关系
- 动态的:能量、紧张、节奏
- 静止:停滞和存在
性能注意事项
- 图像分析:约2-3秒(克劳德视觉模型)
- JSON解析:\<100ms
- 对齐建议:约1秒
- 快速合成:约1秒
总提取时间:~4-5秒 全合成:约1秒
局限性
- 图像大小:\<10MB
- 格式:建议使用JPEG(支持PNG/WebP)
- 种子文本:优化为2-20个单词
- 情绪提取:确定性但依赖于克劳德(无微调)
将来的扩展
- 分层组成:将Grid Dynamics与其他领域(游戏节目、香水、爵士乐)相结合
- 迭代优化:通过提取物反馈输出,以逐步增强
- 批量处理:分析图像系列以获得一致的构图方向
- 可视化参数导出:根据分析生成ComfyUI/其他工作流集成
架构参考
- Ologs:David Spivak的本体日志框架
- 范畴理论:形态作为构图结构的保存
- 三层图案:域名→ 诠释→ 合成
看 grid_dynamics_mcp.py 了解实现细节和类型定义。
作者
达尔·马斯特斯
许可证
麻省理工学院
