Skip to main content
Glama

ppt-word-mcp

AI 기반 편집 가능한 PPTX 및 표준화된 Word 시뮬레이션 테스트 보고서 생성 서비스
단일 경량 서비스가 동일 포트에서 MCP (Model Context Protocol) Server, REST API 및 Web Demo를 제공합니다.


🚀 MCP (Model Context Protocol) 서비스

ppt-word-gen은 표준 MCP 프로토콜(Streamable HTTP 및 STDIO 이중 전송 채널 지원)을 네이티브로 구현하여, 다양한 Agent 클라이언트(예: Claude Code, Claude Desktop, Cursor, Cline, OpenWebUI 등)가 문서 형식 추출, 사용자 확인, 비동기 큐 생성, 의미 기반 다중 라운드 수정 및 안전한 파일 다운로드를 자율적으로 완료할 수 있게 합니다.

1. 클라이언트 연동 설정 (.mcp.json)

프로젝트 루트 디렉터리에 .mcp.json이 내장되어 있어, Agent 도구가 이 디렉터리를 열면 서비스를 자동으로 발견하고 로드합니다.

방식 A: HTTP 전송 모드 (권장, 컨테이너 배포 / LAN 서비스 / 로컬 서비스에 적합)

프로젝트 루트 디렉터리에 .mcp.json을 생성하거나 편집합니다:

{
  "mcpServers": {
    "ppt-word-gen": {
      "type": "http",
      "url": "http://127.0.0.1:8000/mcp"
    }
  }
}

서비스에서 Bearer Token 인증을 활성화한 경우(PPT_WORD_GEN_TOKEN 설정), 요청 헤더를 추가할 수 있습니다:

{
  "mcpServers": {
    "ppt-word-gen": {
      "type": "http",
      "url": "http://YOUR_SERVER_IP:8000/mcp",
      "headers": {
        "Authorization": "Bearer ${PPT_WORD_GEN_TOKEN}"
      }
    }
  }
}

Claude Code CLI로 원클릭 등록:

# 项目级注册(写入当前目录 .mcp.json)
claude mcp add --transport http --scope project ppt-word-gen http://127.0.0.1:8000/mcp

# 用户全局注册
claude mcp add --transport http --scope user ppt-word-gen http://127.0.0.1:8000/mcp

방식 B: STDIO 전송 모드 (로컬에서 HTTP 포트 없이 직접 호출)

클라이언트 설정에서 Python 프로세스를 통해 직접 시작:

{
  "mcpServers": {
    "ppt-word-gen": {
      "command": "python",
      "args": ["-m", "ppt_word_gen.mcp_stdio"]
    }
  }
}

2. MCP 핵심 협업 워크플로우

[用户输入 / 来源资料 / 模板]
             │
             ▼
[可选:upload_file / create_upload_ticket 暂存来源文件与 Word 模板]
             │
             ▼
[preview_word_report_format 提取模板默认格式(字体、字号、行距、多级标题、编号规范)]
             │
             ▼
[向用户展示预览并获取确认 ➔ 获得绑定格式哈希的 confirmation_token]
             │
             ▼
[generate_presentation / generate_word_report 发起异步生成任务]
             │
             ▼
[wait_generation_task / get_generation_task 轮询进度状态]
             │
             ▼
[get_artifact 获取 24 小时有效的安全签名 ResourceLink 下载链接]
             │
             ▼
[可选:revise_presentation / revise_word_report 进行多轮语义增量修订]

3. MCP 도구 전체 목록 (15개 Tools)

도구 이름

기능 설명

주요 파라미터

list_generation_profiles

생성 가능한 문서 유형, 지원 형식 및 바이너리 업로드 규칙 나열

없음

preview_word_report_format

템플릿 기본 형식(또는 내장 템플릿) 추출 및 수정 적용; 형식 정보와 confirmation_token 반환

template_upload_id, custom_format

generate_presentation

편집 가능한 PPTX 비동기 생성 작업 생성

prompt, format, source_upload_ids, model 등

generate_word_report

Word 보고서 작업 제출 (반드시 confirmation_token 포함)

title, report_type, confirmation_token, source_upload_ids

get_generation_task

PPT 또는 Word 비동기 작업의 단계, 백분율 진행률, 오류 및 산출물 상태 조회

task_id, task_type

wait_generation_task

최대 55초 대기, 작업 완료 시 즉시 반환, 타임아웃 시 최신 상태 반환

task_id, task_type, timeout_seconds

cancel_generation_task

아직 종료되지 않은 비동기 생성 작업 취소 요청

task_id, task_type

get_artifact

작업 완료 후 표준 ResourceLink가 포함된 24시간 안전 서명 다운로드 직링크 획득

task_id, task_type

upload_file

Base64 인라인으로 소형 파일 업로드 (5MB 이하)

filename, content_base64, purpose

create_upload_ticket

대용량 파일용 일회성 PUT 업로드 주소 생성 (대용량 콘텐츠가 Agent 컨텍스트를 차지하지 않도록 방지)

filename, purpose, max_bytes

list_business_templates

내장 및 기업 맞춤형 PPT/Word 비즈니스 규범 템플릿 나열

없음

register_business_template

기업 비즈니스 콘텐츠 및 스타일 규범 템플릿 등록

template_id, name, spec

delete_business_template

맞춤형 비즈니스 템플릿 삭제 (내장 템플릿은 보호되어 삭제 불가)

template_id

revise_presentation

기존 PPTX를 컨텍스트로 사용하여 자연어 지시에 따라 새 버전 생성

parent_task_id, revision_prompt

revise_word_report

사용자가 형식을 확인한 후 기존 DOCX를 기반으로 증분 생성하여 새 버전 생성

parent_task_id, confirmation_token, revision_instructions

4. MCP 규칙 및 자산 리소스 (4개 Resources)

Agent는 규범 가이드와 디자인 제약 조건을 직접 읽을 수 있습니다:

  • ppt-word://rules/workflow: MCP 전체 상호작용 및 형식 확인 규범

  • ppt-word://rules/presentation: PPT Master 디자인 및 레이아웃 규범

  • ppt-word://rules/word-report: 시뮬레이션 및 엔지니어링 Word 보고서 레이아웃 표준

  • ppt-word://templates/catalog: 비즈니스 템플릿 카탈로그 및 규범 빠른 참조


Related MCP server: Formatix AI MCP Server

📁 프로젝트 구조

ppt-word-gen/
├── ppt_word_gen/              # Python 核心业务包
│   ├── app.py                 # FastAPI 入口(Demo、REST API、MCP Streamable HTTP)
│   ├── mcp_server.py          # MCP Server 实现(15 工具、4 资源、双向协议)
│   ├── mcp_stdio.py           # MCP STDIO 运行入口
│   ├── tasks.py               # PPT 异步任务队列与状态机
│   ├── report_tasks.py        # Word 异步任务队列与状态机
│   ├── report_agent.py        # Word 报告生成 Agent
│   ├── report_documents.py    # Word 文档排版、格式继承与 GBK 修复引擎
│   ├── word_format.py         # Word 格式解析、修改与防篡改 Token 校验
│   ├── signed_tokens.py       # HMAC-SHA256 签名下载与上传票据
│   ├── pptmaster.py           # PPT Master 脚本适配与执行
│   ├── upload_store.py        # 临时文件上传与生命周期管理
│   ├── task_store.py          # SQLite 持久化任务存储
│   └── config.py              # 全局配置读取
├── assets/word_templates/     # 内置 Word 模板(CID629 电驱系统联合仿真 v1.5)
├── skills/ai-simulation-report/# 仿真报告标准契约与校验规则
├── static/                    # 前端 Web Demo 页面
├── tests/                     # 41 项单元测试与集成测试
├── Dockerfile                 # 容器构建文件(支持联网/离线两种模式)
├── docker-compose.yml         # 生产/测试容器编排配置
├── build-overlay.ps1          # 企业级解密与离线 wheel 构建脚本
├── requirements.txt           # 依赖清单
├── .env.example               # 环境变量参考模板
└── .mcp.json                  # MCP 配置文件

💻 로컬 빠른 시작

1. 의존성 설치 및 테스트 실행

# 安装依赖
python -m pip install -r requirements.txt

# 运行全套 41 项自动化测试
python -m unittest discover -s tests -v

2. 서비스 시작

# 启动 HTTP + MCP 服务(默认监听 0.0.0.0:8000)
python -m ppt_word_gen
  • Web Demo 페이지: http://127.0.0.1:8000/demo

  • OpenAPI 대화형 문서: http://127.0.0.1:8000/docs

  • MCP HTTP 엔드포인트: http://127.0.0.1:8000/mcp

  • 헬스 체크: http://127.0.0.1:8000/health


🐳 Docker / WSL 컨테이너 배포

1. 표준 배포

Ubuntu / WSL 터미널에서:

cd /path/to/ppt-word-gen
cp .env.example .env.compose

# 按需修改 .env.compose(接入真实模型时设置 MOCK_LLM=0 并填写 API Key)
sudo service docker start
docker compose --env-file .env.compose up -d --build --wait

2. 기업 오프라인 Wheel 빌드

기업 데이터 유출 방지(DLP) 또는 내부망 격리 환경에서 Windows PowerShell에서 실행:

pwsh ./build-overlay.ps1

이 스크립트는 파일 스트림을 통해 안전하게 복사하고 OFFLINE_INSTALL=1을 호출하여 로컬 Wheel 오프라인 빌드를 자동으로 수행합니다.

3. 서비스 상태 확인 및 중지

# 查看容器状态与健康指标
docker compose ps
curl http://127.0.0.1:8000/health

# 停止容器(数据保留在 ppt-word-gen-data 卷中)
docker compose stop

⚙️ 환경 변수 설명

.env.example을 .env 또는 .env.compose로 복사합니다:

변수명

기본값

설명

LLM_BASE_URL

https://dashscope.aliyuncs.com/compatible-mode/v1

OpenAI 호환 인터페이스 Base URL

LLM_API_KEY

없음

대규모 언어 모델 API Key

LLM_MODEL

qwen3.7-plus

기본 생성 모델 이름

MOCK_LLM

1

1이면 API Key 없이 전체 프로세스 자체 테스트 데모 가능; 실제 모델 연동 시 0으로 변경

PPT_WORD_GEN_TOKEN

비어 있음

Bearer Token 인증, 비어 있으면 인증 불필요

PUBLIC_BASE_URL

http://127.0.0.1:8000

산출물 다운로드 및 대용량 파일 업로드의 기본 URL (LAN 호출 시 서버 내부 IP로 설정)

DOWNLOAD_SIGNING_SECRET

비어 있음 (자동 생성)

HMAC 서명 키, 24시간 임시 다운로드 자격 증명 생성에 사용

MAX_CONCURRENT_TASKS

2

PPT 최대 동시 처리 작업 수

MAX_CONCURRENT_REPORT_TASKS

1

Word 최대 동시 처리 작업 수

MCP_INLINE_UPLOAD_MB

5

MCP Base64 인라인 업로드 상한 (MB)

MAX_UPLOAD_MB

20

REST / 대용량 파일 Ticket 업로드 상한 (MB)


🔌 핵심 REST API

요청 메서드

경로

설명

GET

/health

서비스 헬스 체크 (SQLite 저장소 및 작업 큐 상태 포함)

GET

/demo

내장 Web 데모 페이지

GET

/api/v1/word-format

내장 Word 템플릿 기본 형식 및 확인 Token 획득

POST

/api/v1/word-format

맞춤 템플릿 형식 추출, 수정 적용 및 확인 Token 생성

POST

/api/v1/report-tasks

Word 시뮬레이션/기술 보고서 생성 작업 제출

GET

/api/v1/report-tasks/{id}

Word 보고서 작업 진행률 및 상세 조회

GET

/api/v1/report-tasks/{id}/result

생성된 DOCX 보고서 다운로드

POST

/api/v1/tasks

PPT 프레젠테이션 생성 작업 제출

GET

/api/v1/tasks/{id}

PPT 작업 진행률 및 상세 조회

GET

/api/v1/tasks/{id}/result

생성된 PPTX 파일 다운로드

POST

/api/v1/uploads

바이너리 소스 파일 또는 템플릿 임시 저장

PUT

/api/v1/upload-tickets/{token}

일회성 대용량 파일 직접 업로드 인터페이스

GET

/api/v1/artifacts/{token}

24시간 HMAC 서명 안전 다운로드 인터페이스

POST

/mcp

MCP Streamable HTTP 프로토콜 엔드포인트


📄 오픈소스 라이선스

이 프로젝트는 MIT License를 따릅니다.

Related MCP Connectors

Related MCP Servers