예산 파일에는 세 개의 워크시트가 있으며, 재무팀은 두 번째 워크시트의 두 셀을 변경하기를 원합니다. 전체 워크북을 AI 에이전트에 넘겨 “Q3 업데이트”를 요청하면 에이전트가 세 워크시트 전체를 다시 만들게 됩니다. 로컬에서 GroupDocs.Editor MCP 서버를 실행하면 Claude, Cursor 또는 Copilot이 해당 워크시트만 편집 가능한 HTML로 추출하고, 요청한 대로 변경한 뒤 원본 워크북의 복사본에 다시 저장하므로 다른 시트는 모델을 통과하지 않습니다. 슬라이드도 동일한 방식으로 작동합니다:
budget.xlsx 파일의 워크시트 2(Q3)에서 Travel을 12,500으로 설정하고 Training을 “Training (external)”으로 이름을 바꾸세요. 다른 시트는 그대로 두세요.
단계별 버전은 문서에 있습니다: How to edit one worksheet or slide and splice it back into the original.
왜 전체 파일을 에이전트에 넘기면 안 될까?
모델은 워크북을 보관할 수 없습니다. 텍스트만 보관할 수 있죠. 에이전트에 제공하는 각 시트는 모델이 “도움이 될 것처럼” 다시 서술할 수 있는 시트가 됩니다: 숫자 형식이 바뀌고, 수식이 값으로 변환되고, 이해하지 못한 열이 삭제됩니다. 아무 문제가 없더라도 응답만으로는 알 수 없습니다. 해결책은 범위를 제한하는 것입니다: 에이전트에게 변경 요청받은 부분만 제공하고 나머지는 접근하지 못하게 합니다.
HTML은 해당 부분에 적합한 형태입니다. 테이블, 스타일, 글꼴 및 이미지가 그대로 유지되고, 모델이 이를 잘 읽고 쓸 수 있으며 원본 구조와 다시 매핑됩니다. 일반 텍스트는 서식을 잃고, 원시 .xlsx XML은 에이전트가 편집하기에 복잡한 미로와 같습니다.
라운드‑트립
budget.xlsx (3 worksheets: Summary, Q3, Q4)
|-- extract_html {"file":{...},"worksheet":2} --> budget_worksheet2.html
| agent edits the HTML: Travel 9000 -> 12500,
| "Training" -> "Training (external)"
'-- save_from_html {"htmlFile":{"filePath":"budget_worksheet2.html"},
"format":"xlsx",
"sourceFile":{"filePath":"budget.xlsx"},
"worksheet":2}
--> budget-q3-revised.xlsx : worksheet 2 replaced, 1 and 3 untouched
evaluation mode: worksheets/slides 1-2 can be edited; the server refuses 3+
서버가 반환한 내용
GroupDocs.Editor.Mcp 26.10.0을 사용해 합성된 예산 파일에 대해 캡처한 결과:
-> extract_html {"file":{"filePath":"budget.xlsx"},"worksheet":2}
<- Extracted worksheet 2 of 3 of 'budget.xlsx' as editable HTML
Saved to: …/budget_worksheet2.html
Next: edit the saved .html and call save_from_html to write it back
as DOCX, XLSX, PPTX, PDF or another format.
Preview (plain text): ... Cost centre Planned (EUR) Owner Hosting
57600 IT Support 14400 IT Travel 9000 Sales Training 6000 HR
-> save_from_html {"htmlFile":{"filePath":"budget_worksheet2.html"},
"format":"xlsx","sourceFile":{"filePath":"budget.xlsx"},
"worksheet":2,"outputName":"budget-q3-revised.xlsx"}
<- Saved 'budget_worksheet2.html' into a copy of 'budget.xlsx',
replacing worksheet 2 of 3 (XLSX)
Saved to: …/budget-q3-revised.xlsx
결과 파일을 열어 보면 범위가 정확히 적용된 것을 확인할 수 있습니다: Q3 시트에서 Travel이 12500으로, 행은 “Training (external)”으로 바뀌었고, Hosting과 Support는 그대로이며, Summary와 Q4는 원래대로 유지됩니다. 원본 budget.xlsx는 수정되지 않았습니다.
도구는 워크시트와 슬라이드를 이름이 아니라 번호로 지정합니다; get_document_info가 개수를 반환하기 때문에 프롬프트에 “worksheet 2 (Q3)”이라고 표시됩니다. 추출 응답에는 일반 텍스트 미리보기가 포함되어 있어 에이전트가 올바른 워크시트인지 확인하고 편집을 시작할 수 있으며, “Next:” 라인이 다음 호출을 알려줍니다. 에이전트는 이러한 힌트를 잘 따릅니다. 슬라이드의 경우 미리보기가 마스터의 자리표시자 텍스트(예: “Click to edit Master title style”)로 시작될 수 있으니 에이전트가 HTML 자체를 확인하도록 해야 합니다.
슬라이드와 프레젠테이션에 대한 한 가지 규칙
같은 방법이 프레젠테이션에도 적용됩니다: "slide": 2와 함께 extract_html을 호출하고, 편집한 뒤 "slide": 2와 원본을 sourceFile로 지정해 save_from_html을 호출합니다. 우리 테스트에서는 3장의 리뷰 데크 중 슬라이드 2가 HTML로 추출되어 “12 percent”가 “14 percent”로 바뀌었고, 슬라이드 1과 3은 그대로인 review-revised.pptx가 생성되었습니다.
PowerPoint에서는 sourceFile이 선택 사항이 아닙니다. HTML만으로는 슬라이드 마스터가 포함되지 않으며, 서버는 손상된 데크를 만들지 않고 다음과 같이 오류를 반환합니다:
-> save_from_html {"htmlFile":{"filePath":"review_slide2.html"},
"format":"pptx"}
<- Save from HTML failed for 'review_slide2.html' (-> pptx): 'pptx' output
cannot be created from HTML alone; pass the original document as
'sourceFile'.
오류 메시지가 누락된 인수를 알려 주므로 에이전트가 스스로 호출을 수정합니다.
라운드‑트립이 찾기‑바꾸기보다 유리한 경우
replace_text는 단어 하나나 이름을 바꾸는 짧은 경로입니다. 라운드‑트립은 여러 셀을 한 번에 바꾸거나, 라벨과 숫자를 동시에 바꾸거나, 슬라이드의 표를 재구성하거나, replace_text가 두 개의 서식 구간에 걸쳐 있어 인식하지 못하는 구문을 처리할 때 사용합니다. 또한 에이전트가 어떤 부분을 바꿀지 결정하기 전에 해당 부분을 읽는 방법이기도 합니다.
쓰기 전에 읽기
라운드‑트립의 첫 번째 절반은 단독으로도 유용합니다. 에이전트가 “Q3의 여행 예산은 얼마이며, 담당자는 누구인가?”라고 물으면 Q3 시트를 추출해 HTML에서 바로 답변할 수 있고, 편집을 앞두고는 반드시 먼저 해당 부분을 읽고, 변경 의도를 명시한 뒤, 마지막에 쓰기를 수행하도록 해야 합니다. 프로젝트 지침에 이 순서를 명시하면 기본 동작이 됩니다:
To change a worksheet or slide, use the groupdocs-editor MCP server:
extract_html for that one part, edit the HTML, save_from_html with the
original as sourceFile and the same worksheet/slide number. Never rebuild
the whole workbook or deck. Say which cells or text you changed.
마지막 문장이 가장 중요합니다. “Travel을 9000에서 12500으로 변경하고 Q3의 Training을 이름을 바꿨습니다”라는 답변은 검토자가 파일을 몇 초 만에 확인할 수 있게 해 줍니다.
솔직한 제한 사항
- 평가 모드에서는 첫 번째와 두 번째 워크시트 또는 슬라이드만 편집 가능하며, 서버는 세 번째에 대해 “Evaluation mode edits only the first 2 visible worksheets of a workbook; worksheet 3 is beyond them.”라는 이유로 거부합니다.
- 라이선스가 없는 저장은 초안으로 처리됩니다: 편집된 시트 상단에 배너 행이 추가되고 워크북에 “Evaluation Warning” 워크시트가 추가됩니다.
- 라이선스가 없는 실행에서 추출된 HTML은 동일한 평가 라인으로 시작하므로(위 미리보기 참조) 에이전트는 셀만 편집하고 그 라인은 건드리지 않아야 합니다.
- 워크시트와 슬라이드 번호는 1부터 시작하며 숨겨진 시트도 포함됩니다. 숨겨진 슬라이드는
showHidden: true가 필요하지만, 숨겨진 워크시트는showHidden설정과 관계없이 거부되므로 먼저 워크북에서 표시하도록 해야 합니다.
FAQ
한 시트만 편집하면 다른 시트도 바뀌나요?
아니요. 편집된 HTML은 원본 복사본의 지정한 워크시트만 교체하고, 나머지는 원본 파일에서 그대로 가져옵니다.
PowerPoint 슬라이드에도 적용할 수 있나요?
예, "worksheet" 대신 "slide"를 사용하고, PowerPoint 출력에 필요한 sourceFile을 함께 전달하면 됩니다.
결과 파일은 어디에 저장되나요?
outputName을 지정했기 때문에 저장 폴더에 budget-q3-revised.xlsx라는 새 파일이 생성됩니다. 원본 파일은 그대로 남아 있습니다.
더 깊이 파고들기
- 문서 및 공식 사용법: How to edit one worksheet or slide and splice it back into the original
- 문서 허브: GroupDocs.Editor MCP Server
- GroupDocs.Editor MCP 제품 페이지 — VS Code와 Cursor용 원클릭 설치, 기타 클라이언트용 설정
- 시작하기: Why an AI agent should not rewrite your document to change three words
- 관련: Rename a party across 40 contracts without touching the formatting
- 관련: Fill Word forms from a spreadsheet with an AI agent, locally
- 관련: Edit a PDF with an AI agent? Turn it into Word first, locally
- 온프레미스 및 보안 모델: 3 architectures for AI document processing, and the one that keeps files inside your network
- 질문: GroupDocs Editor forum
- 소스: GroupDocs.Editor.Mcp on GitHub · NuGet package