Skip to main content
Glama
README.md
# Jinja2 MCP Server

> **🚀 生产就绪的MCP协议Jinja2暡板枲染服务噚**  
> 䞺AI应甚提䟛区倧的暡板倄理胜力支持倍杂JSON参数和安党沙箱执行

[![Python Version](https://img.shields.io/badge/python-3.8%2B-blue.svg)](https://python.org)
[![MCP Protocol](https://img.shields.io/badge/MCP-compatible-green.svg)](https://modelcontextprotocol.io)
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
[![Status](https://img.shields.io/badge/status-stable-brightgreen.svg)](https://github.com/WW-AI-Lab/jinja2-mcp-server)

---

## 🎯 栞心特性

### 🔧 MCP协议完敎支持
- **双䌠蟓协议**: 同时支持stdio和StreamableHttp䌠蟓
- **标准兌容**: 完党兌容MCP官方协议规范
- **AI集成**: 侎Claude、GPT等AI暡型无猝集成
- **调试友奜**: 支持MCP Inspector可视化调试

### 🛡 安党䞎性胜
- **安党沙箱**: 倚层安党验证防止恶意暡板执行
- **匂步倄理**: 基于FastMCP的高性胜匂步架构
- **智胜猓存**: 暡板解析猓存提升枲染性胜
- **资源限制**: 执行超时、埪环限制等安党机制

### 🎚 功胜完敎性
- **Jinja2 3.1+**: 支持最新版本的所有特性
- **倍杂数据**: 完敎的JSON数据结构支持
- **文件暡板**: 支持暡板文件系统和继承
- **调试工具**: 暡板验证、语法检查、性胜分析

---

## 🚀 快速匀始

### 📋 环境芁求

- **Python**: 3.8+ (掚荐3.12+)
- **系统**: macOS / Linux / Windows
- **内存**: 最䜎512MB掚荐1GB+

### ⚡ 䞀键安装

```bash
# 克隆项目
git clone https://github.com/WW-AI-Lab/jinja2-mcp-server.git
cd jinja2-mcp-server

# 安装䟝赖
pip install -r requirements.txt

# 立即启劚 (stdio暡匏适合AI客户端)
python run_server.py --transport stdio

# 或启劚HTTP暡匏 (适合调试和测试)
python run_server.py --transport streamable-http --port 8123
```

### 🎮 快速䜓验

```bash
# 䜿甚MCP Inspector进行可视化测试
# 1. 启劚HTTP服务噚
python run_server.py --transport streamable-http --port 8123

# 2. 打匀MCP Inspector: https://github.com/modelcontextprotocol/inspector
# 3. 连接到: http://localhost:8123
# 4. 测试render_template工具
```

---

## 🛠 栞心工具

### 1⃣ render_template - 暡板枲染
```json
{
  "template": "Hello {{ user.name }}! You have {{ messages | length }} messages.",
  "variables": {
    "user": {"name": "Alice"},
    "messages": [{"id": 1}, {"id": 2}]
  }
}
```
**蟓出**: `"Hello Alice! You have 2 messages."`

### 2⃣ render_template_file - 文件暡板
```json
{
  "template_path": "examples/templates/email.html",
  "variables": {
    "user": {"name": "Bob", "email": "bob@example.com"},
    "items": [{"name": "Product A", "price": 29.99}]
  }
}
```

### 3⃣ validate_template - 暡板验证
```json
{
  "template": "{% for item in items %}{{ item.name }}{% endfor %}"
}
```
**蟓出**: `{"valid": true, "variables_used": ["items"], "complexity": "low"}`

### 4⃣ list_filters - 过滀噚列衚
获取所有可甚的Jinja2过滀噚54䞪内眮过滀噚

### 5⃣ get_template_info - 暡板分析
获取暡板的诊细信息和性胜分析

---

## 📁 项目架构

```
jinja2-mcp-server/
├── 🏗 src/jinja_mcp_server/        # 栞心代码
│   ├── mcp_server.py               # FastMCP服务噚实现
│   ├── server.py                   # 启劚入口
│   ├── jinja/environment.py        # Jinja2环境管理
│   ├── config/settings.py          # 配眮系统
│   ├── tools/registry.py           # MCP工具泚册
│   └── utils/                      # 工具库
├── 📄 examples/templates/           # 瀺䟋暡板
│   ├── basic.html                  # 基础HTML暡板
│   ├── email.html                  # 邮件暡板
│   └── config.yaml                 # 配眮暡板
├── 🧪 tests/                       # 测试甚䟋
├── 📚 docs/                        # 项目文档
└── 🚀 run_server.py                # 启劚脚本
```

---

## 🎚 䜿甚场景

### 🀖 AI应甚集成
```python
# 侎Claude/GPT集成
# AI暡型可以通过MCP协议调甚暡板枲染功胜
# 支持劚态生成邮件、报告、配眮文件等
```

### 📧 邮件暡板系统
```html
<!-- examples/templates/email.html -->
<html>
<body>
  <h1>Hello {{ user.name }}!</h1>
  <p>Your order summary:</p>
  <ul>
  {% for item in items %}
    <li>{{ item.name }} - ${{ item.price }}</li>
  {% endfor %}
  </ul>
</body>
</html>
```

### ⚙ 配眮文件生成
```yaml
# examples/templates/config.yaml
server:
  name: {{ server.name }}
  port: {{ server.port }}
  environment: {{ env }}
  
features:
{% for feature in features %}
  - {{ feature }}
{% endfor %}
```

### 📊 报告生成
```html
<!-- 劚态报告暡板 -->
<div class="report">
  <h2>{{ report.title }}</h2>
  <p>Generated on: {{ now() | strftime('%Y-%m-%d') }}</p>
  
  {% if metrics %}
  <table>
    {% for metric in metrics %}
    <tr>
      <td>{{ metric.name }}</td>
      <td>{{ metric.value | round(2) }}</td>
    </tr>
    {% endfor %}
  </table>
  {% endif %}
</div>
```

---

## ⚙ 高级配眮

### 环境变量配眮
```bash
# 倍制配眮文件
cp env.example .env

# 猖蟑配眮
JINJA_AUTOESCAPE=true
JINJA_CACHE_SIZE=400
SECURITY_MAX_LOOP_ITERATIONS=10000
LOGGING_LEVEL=INFO
```

### JSON配眮文件
```json
{
  "jinja": {
    "template_dirs": ["templates", "examples/templates"],
    "autoescape": true,
    "cache_size": 400,
    "strict_undefined": false
  },
  "security": {
    "enable_sandbox": true,
    "max_template_size": 1048576,
    "execution_timeout": 30,
    "max_loop_iterations": 10000
  },
  "logging": {
    "level": "INFO",
    "enable_structlog": true,
    "format": "json"
  },
  "mcp": {
    "server_name": "jinja2-mcp-server",
    "version": "1.0.0"
  }
}
```

---

## 🧪 匀发䞎测试

### 匀发环境搭建
```bash
# 克隆并进入项目
git clone https://github.com/WW-AI-Lab/jinja2-mcp-server.git
cd jinja2-mcp-server

# 创建虚拟环境
python -m venv .venv
source .venv/bin/activate  # Linux/macOS
# .venv\Scripts\activate   # Windows

# 安装匀发䟝赖
pip install -r requirements.txt

# 运行测试
python -m pytest tests/ -v

# 代码栌匏化
black src/ tests/
isort src/ tests/

# 类型检查
mypy src/
```

### 性胜测试
```bash
# 基础功胜测试
python test_server.py

# MCP协议测试
python test_mcp_tools.py

# 暡板文件测试
python test_template_files.py

# HTTP协议测试
python test_mcp_http.py
```

---

## 📊 性胜指标

### 🚀 基准性胜
- **启劚时闎**: < 2秒
- **内存占甚**: 初始 ~50MB运行时 < 256MB
- **响应延迟**: 平均 < 10ms
- **并发倄理**: > 200 requests/second
- **暡板枲染**: 简单暡板 < 1ms倍杂暡板 < 50ms

### 📈 扩展性
- **暡板猓存**: 支持400䞪暡板猓存
- **文件倧小**: 单暡板最倧1MB
- **并发连接**: 理论无限制受系统资源限制
- **䌠蟓协议**: stdio + StreamableHttp双协议支持

---

## 🔧 技术实现

### 栞心技术栈
```python
# 基于现代Python生态
FastMCP          # MCP协议框架
Jinja2 3.1+      # 暡板匕擎
Pydantic v2      # 数据验证
structlog        # 结构化日志
asyncio          # 匂步倄理
MarkupSafe       # 安党蜬义
```

### 架构讟计
```
┌─────────────────────────────────────────┐
│           MCP Clients                   │
│    ┌─────────────┐  ┌─────────────┐    │
│    │ AI Models   │  │ MCP Inspector│    │
│    └─────────────┘  └─────────────┘    │
└─────────┬─────────────────┬─────────────┘
          │ MCP Protocol    │
          │                 │
┌─────────▌─────────────────▌─────────────┐
│         jinja2-mcp-server               │
│  ┌─────────────────────────────────┐   │
│  │        FastMCP Core             │   │
│  └─────────────────────────────────┘   │
│  ┌─────────────────────────────────┐   │
│  │       MCP Tools (5䞪)           │   │
│  └─────────────────────────────────┘   │
│  ┌─────────────────────────────────┐   │
│  │    Jinja2 Service Layer         │   │
│  └─────────────────────────────────┘   │
│  ┌─────────────────────────────────┐   │
│  │      Infrastructure             │   │
│  └─────────────────────────────────┘   │
└─────────────────────────────────────────┘
```

### 安党机制
```python
# 倚层安党防技
1. AST语法解析验证
2. 沙箱环境执行
3. 资源䜿甚限制
4. 执行超时控制
5. 埪环次数限制
6. 危险凜数过滀
```

---

## 🛠 扩展方向

### 已实现功胜 ✅
- [x] 完敎的MCP协议支持
- [x] Jinja2 3.1+ 党功胜支持
- [x] 双䌠蟓协议 (stdio/HTTP)
- [x] 安党沙箱执行
- [x] 匂步高性胜倄理
- [x] 暡板文件系统支持
- [x] 诊细的错误诊断
- [x] 结构化日志记圕

---

## 📚 文档资源

### 📖 栞心文档
- **[匀发规划](docs/匀发规划.md)** - 诊细的匀发历皋和技术决策
- **[快速匀始](#-快速匀始)** - 5分钟䞊手指南
- **[API参考](#-栞心工具)** - 完敎的工具API文档
- **[配眮指南](#-高级配眮)** - 高级配眮选项

### 🎯 䜿甚瀺䟋
- **[基础暡板](examples/templates/basic.html)** - HTML暡板瀺䟋
- **[邮件暡板](examples/templates/email.html)** - 邮件暡板瀺䟋
- **[配眮暡板](examples/templates/config.yaml)** - YAML配眮瀺䟋

### 🔧 匀发指南
- **[莡献指南](#-匀发䞎测试)** - 劂䜕参䞎项目匀发
- **[测试指南](#-匀发䞎测试)** - 测试甚䟋猖写
- **[性胜䌘化](docs/performance.md)** - 性胜调䌘建议

---

## 🀝 莡献指南

### 🚀 参䞎匀发
1. **Fork** 本仓库
2. 创建特性分支: `git checkout -b feature/amazing-feature`
3. 提亀曎改: `git commit -m 'Add amazing feature'`
4. 掚送分支: `git push origin feature/amazing-feature`
5. 提亀 **Pull Request**

### 🐛 问题报告
- [Issues](https://github.com/WW-AI-Lab/jinja2-mcp-server/issues) - Bug报告和功胜请求
- [Discussions](https://github.com/WW-AI-Lab/jinja2-mcp-server/discussions) - 瀟区讚论

### 📋 匀发规范
- **代码风栌**: 遵埪PEP 8䜿甚black栌匏化
- **类型提瀺**: 䜿甚mypy进行类型检查
- **测试芆盖**: 新功胜必须包含测试甚䟋
- **文档曎新**: 重芁曎改需芁曎新文档

---

## 📄 匀源协议

**MIT License** — 随意商甚、改造欢迎莡献代码

劂果这䞪项目对䜠有垮助请给䞪 ⭐ **Star** 支持䞀䞋

---

## 🀖 关于 WW-AI-Lab

这是 **WW-AI-Lab** 的匀源项目我们䞓泚于

- 🔄 **䌁䞚自劚化解决方案** - 浏览噚自劚化、AI工䜜流
- 🀖 **Agentic Workflow** - 端到端的AI䞚务流皋  
- 🖌 **生成匏AI应甚** - 倚暡态暡型、囟像倄理
- 📊 **数据掞察工具** - AI驱劚的数据分析

### 💡 项目特点

- **AI蟅助匀发**: 本项目完党由 Cursor IDE + Claude 协䜜完成
- **生产就绪**: 虜是匀源项目䜆代码莚量蟟到生产标准
- **匀源共享**: 包含完敎的匀发过皋文档和最䜳实践
- **孊习友奜**: 诊细的技术实现诎明䟿于孊习和改进

### 🚀 从匀源到䌁䞚

圓匀源项目圚实践䞭证明有效时我们䌚将其升级䞺䌁䞚级方案  
👉 **YFGaia** - 提䟛曎䞥谚的测试、文档䞎长期绎技

### 📞 联系我们

| 枠道 | 地址 | 甹途 |
|------|------|------|
| 📧 **Email** | [toxingwang@gmail.com](mailto:toxingwang@gmail.com) | 合䜜 / 䞚务咚询 |
| 🐊 **X (Twitter)** | [@WW_AI_Lab](https://x.com/WW_AI_Lab) | 最新劚态、技术分享 |
| 💬 **埮信** | toxingwang | 深床亀流添加请泚明来源 |

---

**免莣声明**: 本项目基于MIT协议匀源仅䟛孊习和研究䜿甚。劂需商䞚支持请通过䞊述枠道联系。

**Built with ❀ using Python, Jinja2, FastMCP and Cursor IDE**