<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:media="http://search.yahoo.com/mrss/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>FastAPI 서버 배포 &#8211; 미라쿨</title>
	<atom:link href="https://miracool.co.kr/tag/fastapi-%ec%84%9c%eb%b2%84-%eb%b0%b0%ed%8f%ac/feed/" rel="self" type="application/rss+xml" />
	<link>https://miracool.co.kr</link>
	<description>미라쿨</description>
	<lastBuildDate>Wed, 09 Jul 2025 13:07:26 +0000</lastBuildDate>
	<language>ko-KR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.2</generator>

<image>
	<url>https://miracool.co.kr/wp-content/uploads/2025/10/cropped-symb-32x32.png</url>
	<title>FastAPI 서버 배포 &#8211; 미라쿨</title>
	<link>https://miracool.co.kr</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Custom GPT + MCP 서버 구축으로 ChatGPT 파일 시스템 제어하기</title>
		<link>https://miracool.co.kr/custom-gpt-mcp-%ec%84%9c%eb%b2%84-%ea%b5%ac%ec%b6%95%ec%9c%bc%eb%a1%9c-chatgpt-%ed%8c%8c%ec%9d%bc-%ec%8b%9c%ec%8a%a4%ed%85%9c-%ec%a0%9c%ec%96%b4%ed%95%98/</link>
					<comments>https://miracool.co.kr/custom-gpt-mcp-%ec%84%9c%eb%b2%84-%ea%b5%ac%ec%b6%95%ec%9c%bc%eb%a1%9c-chatgpt-%ed%8c%8c%ec%9d%bc-%ec%8b%9c%ec%8a%a4%ed%85%9c-%ec%a0%9c%ec%96%b4%ed%95%98/#respond</comments>
		
		<dc:creator><![CDATA[urjent]]></dc:creator>
		<pubDate>Wed, 09 Jul 2025 13:07:26 +0000</pubDate>
				<category><![CDATA[뉴스]]></category>
		<category><![CDATA[ChatGPT 도우미 설정]]></category>
		<category><![CDATA[ChatGPT 외부 API 연동]]></category>
		<category><![CDATA[ChatGPT 파일 시스템]]></category>
		<category><![CDATA[Custom GPT]]></category>
		<category><![CDATA[FastAPI]]></category>
		<category><![CDATA[FastAPI 서버 배포]]></category>
		<category><![CDATA[GPT 플러그인]]></category>
		<category><![CDATA[MCP 서버]]></category>
		<category><![CDATA[OpenAPI 스키마]]></category>
		<category><![CDATA[Render 무료 배포]]></category>
		<guid isPermaLink="false">https://miracool.co.kr/?p=28331</guid>

					<description><![CDATA[Custom GPT + MCP 서버 구축으로 ChatGPT 파일 시스템 제어하기 ChatGPT가 이제 파일 시스템도 제어한다면? 가장 쉬운 방법으로 나만의 MCP ... <a title="Custom GPT + MCP 서버 구축으로 ChatGPT 파일 시스템 제어하기" class="read-more" href="https://miracool.co.kr/custom-gpt-mcp-%ec%84%9c%eb%b2%84-%ea%b5%ac%ec%b6%95%ec%9c%bc%eb%a1%9c-chatgpt-%ed%8c%8c%ec%9d%bc-%ec%8b%9c%ec%8a%a4%ed%85%9c-%ec%a0%9c%ec%96%b4%ed%95%98/" aria-label="Custom GPT + MCP 서버 구축으로 ChatGPT 파일 시스템 제어하기에 대해 더 자세히 알아보세요">Read more</a>]]></description>
										<content:encoded><![CDATA[<p style="line-height: 1.8; margin-bottom: 1.2em; color: #6a1b9a; font-weight: 500; font-family: 'Noto Sans KR', sans-serif;" data-ke-size="size16"><span style="color: #000000;">Custom GPT + MCP 서버 구축으로 ChatGPT 파일 시스템 제어하기 ChatGPT가 이제 파일 시스템도 제어한다면? 가장 쉬운 방법으로 나만의 MCP 서버를 구축해보세요.</span></p>
<p style="font-size: 1rem; line-height: 1.8; margin-bottom: 1.2em; color: #333; font-family: 'Noto Sans KR', sans-serif;" data-ke-size="size16"><span style="color: #000000;">얼마 전, 갑자기 Claude에서 썼던 MCP라는 게 생각났어요. 그때는 그냥 pip으로 설치해서 쓰는 간단한 패키지 정도로만 알았는데, 이번에 다시 찾아보니 ChatGPT의 Custom GPT 기능과 연결하면 진짜 서버처럼 활용할 수 있다는 걸 알게 됐죠. 저는 이걸 테스트 삼아 직접 MCP 서버를 만들고, Custom GPT랑 연동해서 파일 시스템을 제어하는 구조를 짜봤어요. 원래 FastAPI도 잘 몰랐고, Render도 처음이었는데&#8230; 역시 ChatGPT가 도와주니 훨씬 수월했어요. 이번 글에서는 저처럼 처음 MCP를 접하거나 Custom GPT를 활용해보고 싶은 분들을 위해 가장 쉽고 저렴하게 설정할 수 있는 방법을 공유해보려 해요.</span></p>
<h3 style="line-height: 1.8; margin-bottom: 1.2em; color: #333333; font-family: 'Noto Sans KR', sans-serif;" data-ke-size="size23"><span style="color: #000000;">Custom GPT + MCP 서버 구축으로 ChatGPT 파일 시스템 제어하기</span></h3>
<figure data-ke-type="image" data-ke-mobilestyle="widthOrigin" data-ke-style="alignCenter"><figcaption>
<figure id="attachment_28332" aria-describedby="caption-attachment-28332" style="width: 1990px" class="wp-caption aligncenter"><img fetchpriority="high" decoding="async" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==" fifu-lazy="1" fifu-data-sizes="auto" fifu-data-srcset="https://i2.wp.com/miracool.co.kr/wp-content/uploads/2025/07/제목을-입력해주세요__-복사본-001-4.jpg?ssl=1&amp;w=75&amp;resize=75&amp;ssl=1 75w, https://i2.wp.com/miracool.co.kr/wp-content/uploads/2025/07/제목을-입력해주세요__-복사본-001-4.jpg?ssl=1&amp;w=100&amp;resize=100&amp;ssl=1 100w, https://i2.wp.com/miracool.co.kr/wp-content/uploads/2025/07/제목을-입력해주세요__-복사본-001-4.jpg?ssl=1&amp;w=150&amp;resize=150&amp;ssl=1 150w, https://i2.wp.com/miracool.co.kr/wp-content/uploads/2025/07/제목을-입력해주세요__-복사본-001-4.jpg?ssl=1&amp;w=240&amp;resize=240&amp;ssl=1 240w, https://i2.wp.com/miracool.co.kr/wp-content/uploads/2025/07/제목을-입력해주세요__-복사본-001-4.jpg?ssl=1&amp;w=320&amp;resize=320&amp;ssl=1 320w, https://i2.wp.com/miracool.co.kr/wp-content/uploads/2025/07/제목을-입력해주세요__-복사본-001-4.jpg?ssl=1&amp;w=500&amp;resize=500&amp;ssl=1 500w, https://i2.wp.com/miracool.co.kr/wp-content/uploads/2025/07/제목을-입력해주세요__-복사본-001-4.jpg?ssl=1&amp;w=640&amp;resize=640&amp;ssl=1 640w, https://i2.wp.com/miracool.co.kr/wp-content/uploads/2025/07/제목을-입력해주세요__-복사본-001-4.jpg?ssl=1&amp;w=800&amp;resize=800&amp;ssl=1 800w, https://i2.wp.com/miracool.co.kr/wp-content/uploads/2025/07/제목을-입력해주세요__-복사본-001-4.jpg?ssl=1&amp;w=1024&amp;resize=1024&amp;ssl=1 1024w, https://i2.wp.com/miracool.co.kr/wp-content/uploads/2025/07/제목을-입력해주세요__-복사본-001-4.jpg?ssl=1&amp;w=1280&amp;resize=1280&amp;ssl=1 1280w, https://i2.wp.com/miracool.co.kr/wp-content/uploads/2025/07/제목을-입력해주세요__-복사본-001-4.jpg?ssl=1&amp;w=1600&amp;resize=1600&amp;ssl=1 1600w" class="wp-image-28332 size-full" fifu-data-src="https://i2.wp.com/miracool.co.kr/wp-content/uploads/2025/07/제목을-입력해주세요__-복사본-001-4.jpg?ssl=1" alt="Custom GPT + MCP 서버 구축으로 ChatGPT 파일 시스템 제어하기" width="2000" height="2000" title="Custom GPT + MCP 서버 구축으로 ChatGPT 파일 시스템 제어하기 2"><figcaption id="caption-attachment-28332" class="wp-caption-text">Custom GPT + MCP 서버 구축으로 ChatGPT 파일 시스템 제어하기</figcaption></figure>
</figcaption></figure>
<div style="background: linear-gradient(135deg, #f5f0ff, #f0e6ff); border-radius: 8px; padding: 20px; margin: 20px 0; box-shadow: 0 4px 10px rgba(106, 27, 154, 0.08); font-family: 'Noto Sans KR', sans-serif; border-left: 4px solid #9c27b0;">
<div style="margin-bottom: 15px;">
<h3 style="font-weight: bold; color: #4a148c; font-size: 18px; margin: 0;" data-ke-size="size23">목차</h3>
</div>
<div style="display: flex; flex-direction: column; gap: 10px;"><a style="color: #6a1b9a; text-decoration: none; font-weight: 500;" href="#what-is-mcp">MCP란 무엇이고 왜 필요한가?</a><a style="color: #6a1b9a; text-decoration: none; font-weight: 500;" href="#mcp-fastapi-github">FastAPI로 GitHub에 MCP 서버 구성하기</a><a style="color: #6a1b9a; text-decoration: none; font-weight: 500;" href="#render-deploy">Render를 활용한 무료 배포 방법</a><a style="color: #6a1b9a; text-decoration: none; font-weight: 500;" href="#custom-gpt-setting">Custom GPT에서 MCP 연동 설정</a><a style="color: #6a1b9a; text-decoration: none; font-weight: 500;" href="#mcp-schema-guideline">OpenAPI 스키마 작성 가이드</a><a style="color: #6a1b9a; text-decoration: none; font-weight: 500;" href="#mcp-gpt-usecases">실제 파일 제어 테스트 예시</a></div>
</div>
<h2 id="what-is-mcp" style="font-size: 1.8rem; font-weight: bold; color: #4a148c; margin-top: 1.5em; margin-bottom: 0.8em; line-height: 1.2; border-left: 5px solid #9c27b0; padding-left: 0.8em; font-family: 'Noto Sans KR', sans-serif;" data-ke-size="size26">MCP란 무엇이고 왜 필요한가?</h2>
<p style="font-size: 1rem; line-height: 1.8; margin-bottom: 1.2em; color: #333; font-family: 'Noto Sans KR', sans-serif;" data-ke-size="size16">MCP라는 단어만 보면 뭔가 복잡한 서버 시스템 같지만, 사실상 그냥 FastAPI로 구현된 파일 시스템 제어용 API 모음이라고 보면 돼요. 저도 처음엔 &#8216;MCP 서버&#8217;라는 이름 때문에 Docker나 Kubernetes처럼 뭔가 무거운 인프라를 상상했는데, 알고 보니 그냥 Python 코드 몇 줄이면 작동하는 거더라구요. 단순히 pip 설치만으로 끝나는 건 아니고, Custom GPT에서 실제로 외부 시스템을 호출하려면 HTTP로 응답을 받는 실서버가 필요하죠. 그래서 &#8216;서버&#8217;라는 말이 붙은 거예요.</p>
<h2 id="mcp-fastapi-github" style="font-size: 1.8rem; font-weight: bold; color: #4a148c; margin-top: 1.5em; margin-bottom: 0.8em; line-height: 1.2; border-left: 5px solid #9c27b0; padding-left: 0.8em; font-family: 'Noto Sans KR', sans-serif;" data-ke-size="size26">FastAPI로 GitHub에 MCP 서버 구성하기</h2>
<p style="font-size: 1rem; line-height: 1.8; margin-bottom: 1.2em; color: #333; font-family: 'Noto Sans KR', sans-serif;" data-ke-size="size16">MCP 서버를 만들기 위해 GitHub에 새로운 저장소를 생성했어요. 핵심 구성은 단 3개의 파일입니다. FastAPI를 사용하면 아주 간단하게 HTTP API를 만들 수 있거든요. 아래는 각 파일의 구성입니다.</p>
<figure data-ke-type="image" data-ke-style="widthContent" data-ke-mobilestyle="widthOrigin"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==" fifu-lazy="1" fifu-data-sizes="auto" fifu-data-srcset="https://i1.wp.com/blog.kakaocdn.net/dna/cdA8Rq/btsPclGCS1D/AAAAAAAAAAAAAAAAAAAAAKOdX2Jh40kCzzkwPCO9ss4Wf_OKvW7jcjkth6rFYfE-/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;expires=1753973999&amp;allow_ip&amp;allow_referer&amp;signature=S5qVic20Z6drV94sDjrESTdt%2Bik%3D&amp;ssl=1&amp;w=75&amp;resize=75&amp;ssl=1 75w, https://i1.wp.com/blog.kakaocdn.net/dna/cdA8Rq/btsPclGCS1D/AAAAAAAAAAAAAAAAAAAAAKOdX2Jh40kCzzkwPCO9ss4Wf_OKvW7jcjkth6rFYfE-/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;expires=1753973999&amp;allow_ip&amp;allow_referer&amp;signature=S5qVic20Z6drV94sDjrESTdt%2Bik%3D&amp;ssl=1&amp;w=100&amp;resize=100&amp;ssl=1 100w, https://i1.wp.com/blog.kakaocdn.net/dna/cdA8Rq/btsPclGCS1D/AAAAAAAAAAAAAAAAAAAAAKOdX2Jh40kCzzkwPCO9ss4Wf_OKvW7jcjkth6rFYfE-/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;expires=1753973999&amp;allow_ip&amp;allow_referer&amp;signature=S5qVic20Z6drV94sDjrESTdt%2Bik%3D&amp;ssl=1&amp;w=150&amp;resize=150&amp;ssl=1 150w, https://i1.wp.com/blog.kakaocdn.net/dna/cdA8Rq/btsPclGCS1D/AAAAAAAAAAAAAAAAAAAAAKOdX2Jh40kCzzkwPCO9ss4Wf_OKvW7jcjkth6rFYfE-/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;expires=1753973999&amp;allow_ip&amp;allow_referer&amp;signature=S5qVic20Z6drV94sDjrESTdt%2Bik%3D&amp;ssl=1&amp;w=240&amp;resize=240&amp;ssl=1 240w, https://i1.wp.com/blog.kakaocdn.net/dna/cdA8Rq/btsPclGCS1D/AAAAAAAAAAAAAAAAAAAAAKOdX2Jh40kCzzkwPCO9ss4Wf_OKvW7jcjkth6rFYfE-/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;expires=1753973999&amp;allow_ip&amp;allow_referer&amp;signature=S5qVic20Z6drV94sDjrESTdt%2Bik%3D&amp;ssl=1&amp;w=320&amp;resize=320&amp;ssl=1 320w, https://i1.wp.com/blog.kakaocdn.net/dna/cdA8Rq/btsPclGCS1D/AAAAAAAAAAAAAAAAAAAAAKOdX2Jh40kCzzkwPCO9ss4Wf_OKvW7jcjkth6rFYfE-/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;expires=1753973999&amp;allow_ip&amp;allow_referer&amp;signature=S5qVic20Z6drV94sDjrESTdt%2Bik%3D&amp;ssl=1&amp;w=500&amp;resize=500&amp;ssl=1 500w, https://i1.wp.com/blog.kakaocdn.net/dna/cdA8Rq/btsPclGCS1D/AAAAAAAAAAAAAAAAAAAAAKOdX2Jh40kCzzkwPCO9ss4Wf_OKvW7jcjkth6rFYfE-/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;expires=1753973999&amp;allow_ip&amp;allow_referer&amp;signature=S5qVic20Z6drV94sDjrESTdt%2Bik%3D&amp;ssl=1&amp;w=640&amp;resize=640&amp;ssl=1 640w, https://i1.wp.com/blog.kakaocdn.net/dna/cdA8Rq/btsPclGCS1D/AAAAAAAAAAAAAAAAAAAAAKOdX2Jh40kCzzkwPCO9ss4Wf_OKvW7jcjkth6rFYfE-/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;expires=1753973999&amp;allow_ip&amp;allow_referer&amp;signature=S5qVic20Z6drV94sDjrESTdt%2Bik%3D&amp;ssl=1&amp;w=800&amp;resize=800&amp;ssl=1 800w, https://i1.wp.com/blog.kakaocdn.net/dna/cdA8Rq/btsPclGCS1D/AAAAAAAAAAAAAAAAAAAAAKOdX2Jh40kCzzkwPCO9ss4Wf_OKvW7jcjkth6rFYfE-/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;expires=1753973999&amp;allow_ip&amp;allow_referer&amp;signature=S5qVic20Z6drV94sDjrESTdt%2Bik%3D&amp;ssl=1&amp;w=1024&amp;resize=1024&amp;ssl=1 1024w, https://i1.wp.com/blog.kakaocdn.net/dna/cdA8Rq/btsPclGCS1D/AAAAAAAAAAAAAAAAAAAAAKOdX2Jh40kCzzkwPCO9ss4Wf_OKvW7jcjkth6rFYfE-/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;expires=1753973999&amp;allow_ip&amp;allow_referer&amp;signature=S5qVic20Z6drV94sDjrESTdt%2Bik%3D&amp;ssl=1&amp;w=1280&amp;resize=1280&amp;ssl=1 1280w, https://i1.wp.com/blog.kakaocdn.net/dna/cdA8Rq/btsPclGCS1D/AAAAAAAAAAAAAAAAAAAAAKOdX2Jh40kCzzkwPCO9ss4Wf_OKvW7jcjkth6rFYfE-/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;expires=1753973999&amp;allow_ip&amp;allow_referer&amp;signature=S5qVic20Z6drV94sDjrESTdt%2Bik%3D&amp;ssl=1&amp;w=1600&amp;resize=1600&amp;ssl=1 1600w" fifu-data-src="https://i1.wp.com/blog.kakaocdn.net/dna/cdA8Rq/btsPclGCS1D/AAAAAAAAAAAAAAAAAAAAAKOdX2Jh40kCzzkwPCO9ss4Wf_OKvW7jcjkth6rFYfE-/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;expires=1753973999&amp;allow_ip&amp;allow_referer&amp;signature=S5qVic20Z6drV94sDjrESTdt%2Bik%3D&amp;ssl=1" alt="FastAPI로 GitHub에 MCP 서버 구성하기" data-origin-width="681" data-origin-height="195" data-is-animation="false" title="Custom GPT + MCP 서버 구축으로 ChatGPT 파일 시스템 제어하기 3"><figcaption>FastAPI로 GitHub에 MCP 서버 구성하기</figcaption></figure>
<figure data-ke-type="image" data-ke-mobilestyle="widthOrigin" data-ke-style="widthContent">
<p><figure id="attachment_28335" aria-describedby="caption-attachment-28335" style="width: 671px" class="wp-caption aligncenter"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==" fifu-lazy="1" fifu-data-sizes="auto" fifu-data-srcset="https://i0.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.25.48.png?ssl=1&amp;w=75&amp;resize=75&amp;ssl=1 75w, https://i0.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.25.48.png?ssl=1&amp;w=100&amp;resize=100&amp;ssl=1 100w, https://i0.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.25.48.png?ssl=1&amp;w=150&amp;resize=150&amp;ssl=1 150w, https://i0.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.25.48.png?ssl=1&amp;w=240&amp;resize=240&amp;ssl=1 240w, https://i0.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.25.48.png?ssl=1&amp;w=320&amp;resize=320&amp;ssl=1 320w, https://i0.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.25.48.png?ssl=1&amp;w=500&amp;resize=500&amp;ssl=1 500w, https://i0.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.25.48.png?ssl=1&amp;w=640&amp;resize=640&amp;ssl=1 640w, https://i0.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.25.48.png?ssl=1&amp;w=800&amp;resize=800&amp;ssl=1 800w, https://i0.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.25.48.png?ssl=1&amp;w=1024&amp;resize=1024&amp;ssl=1 1024w, https://i0.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.25.48.png?ssl=1&amp;w=1280&amp;resize=1280&amp;ssl=1 1280w, https://i0.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.25.48.png?ssl=1&amp;w=1600&amp;resize=1600&amp;ssl=1 1600w" class="wp-image-28335 size-full" fifu-data-src="https://i0.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.25.48.png?ssl=1" alt="Custom GPT + MCP 서버 구축으로 ChatGPT 파일 시스템 제어하기" width="681" height="421" title="Custom GPT + MCP 서버 구축으로 ChatGPT 파일 시스템 제어하기 4"><figcaption id="caption-attachment-28335" class="wp-caption-text">Custom GPT + MCP 서버 구축으로 ChatGPT 파일 시스템 제어하기</figcaption></figure></figure>
<table style="width: 100%; border-collapse: collapse; margin: 1.5em 0; font-family: 'Noto Sans KR', sans-serif;" data-ke-align="alignLeft">
<thead>
<tr>
<th style="border: 1px solid #e1bee7; padding: 0.5em; background-color: #9c27b0; color: white; font-weight: bold;">파일명</th>
<th style="border: 1px solid #e1bee7; padding: 0.5em; background-color: #9c27b0; color: white; font-weight: bold;">설명</th>
</tr>
</thead>
<tbody>
<tr>
<td style="border: 1px solid #e1bee7; padding: 0.5em;">main.py</td>
<td style="border: 1px solid #e1bee7; padding: 0.5em;">MCP API 기능 구현 (파일 쓰기, 읽기, 삭제 등)</td>
</tr>
<tr style="background-color: #f3e5f5;">
<td style="border: 1px solid #e1bee7; padding: 0.5em;">render.yaml</td>
<td style="border: 1px solid #e1bee7; padding: 0.5em;">Render 배포 설정 정보</td>
</tr>
<tr>
<td style="border: 1px solid #e1bee7; padding: 0.5em;">requirements.txt</td>
<td style="border: 1px solid #e1bee7; padding: 0.5em;">FastAPI, uvicorn 등 필요한 패키지 명시</td>
</tr>
</tbody>
</table>
<p data-ke-size="size16">
<pre id="code_1752052238451" class="bash hljs" contenteditable="false" data-ke-language="bash" data-ke-type="codeblock"><span class="hljs-comment"># main.py</span>
from fastapi import FastAPI, HTTPException, Query
from pydantic import BaseModel
import uvicorn
import os

app = FastAPI()

BASE_PATH = <span class="hljs-string">"/tmp/gpt_mcp"</span>

class FileRequest(BaseModel):
    filename: str
    content: str

class FolderRequest(BaseModel):
    foldername: str

@app.get(<span class="hljs-string">"/ping"</span>)
def ping():
    <span class="hljs-built_in">return</span> {<span class="hljs-string">"status"</span>: <span class="hljs-string">"awake"</span>}

@app.post(<span class="hljs-string">"/create-folder"</span>)
def create_folder(req: FolderRequest):
    path = os.path.join(<span class="hljs-string">"/tmp"</span>, req.foldername)
    os.makedirs(path, exist_ok=True)
    <span class="hljs-built_in">return</span> {<span class="hljs-string">"message"</span>: f<span class="hljs-string">"Folder created at {path}"</span>}

@app.post(<span class="hljs-string">"/write-file"</span>)
def write_file(req: FileRequest):
    os.makedirs(BASE_PATH, exist_ok=True)
    filepath = os.path.join(BASE_PATH, req.filename)
    try:
        with open(filepath, <span class="hljs-string">"w"</span>) as f:
            f.write(req.content)
        <span class="hljs-built_in">return</span> {<span class="hljs-string">"message"</span>: f<span class="hljs-string">"File written to {filepath}"</span>}
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))

@app.get(<span class="hljs-string">"/list-files"</span>)
def list_files():
    <span class="hljs-keyword">if</span> not os.path.exists(BASE_PATH):
        <span class="hljs-built_in">return</span> {<span class="hljs-string">"files"</span>: []}
    files = os.listdir(BASE_PATH)
    <span class="hljs-built_in">return</span> {<span class="hljs-string">"files"</span>: files}

@app.get(<span class="hljs-string">"/read-file"</span>)
def read_file(filename: str = Query(...)):
    filepath = os.path.join(BASE_PATH, filename)
    <span class="hljs-keyword">if</span> not os.path.exists(filepath):
        raise HTTPException(status_code=404, detail=<span class="hljs-string">"File not found"</span>)
    try:
        with open(filepath, <span class="hljs-string">"r"</span>) as f:
            content = f.read()
        <span class="hljs-built_in">return</span> {<span class="hljs-string">"filename"</span>: filename, <span class="hljs-string">"content"</span>: content}
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))

@app.delete(<span class="hljs-string">"/delete-file"</span>)
def delete_file(filename: str = Query(...)):
    filepath = os.path.join(BASE_PATH, filename)
    <span class="hljs-keyword">if</span> not os.path.exists(filepath):
        raise HTTPException(status_code=404, detail=<span class="hljs-string">"File not found"</span>)
    try:
        os.remove(filepath)
        <span class="hljs-built_in">return</span> {<span class="hljs-string">"message"</span>: f<span class="hljs-string">"Deleted {filename}"</span>}
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))

@app.post(<span class="hljs-string">"/clear-folder"</span>)
def clear_folder():
    <span class="hljs-keyword">if</span> not os.path.exists(BASE_PATH):
        <span class="hljs-built_in">return</span> {<span class="hljs-string">"message"</span>: <span class="hljs-string">"Folder does not exist, nothing to clear"</span>}
    try:
        <span class="hljs-keyword">for</span> f <span class="hljs-keyword">in</span> os.listdir(BASE_PATH):
            path = os.path.join(BASE_PATH, f)
            <span class="hljs-keyword">if</span> os.path.isfile(path):
                os.remove(path)
        <span class="hljs-built_in">return</span> {<span class="hljs-string">"message"</span>: <span class="hljs-string">"All files deleted"</span>}
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))

<span class="hljs-comment"># 로컬 실행용 코드 (Render 배포 시 필요 없음)</span>
<span class="hljs-keyword">if</span> __name__ == <span class="hljs-string">"__main__"</span>:
    uvicorn.run(app, host=<span class="hljs-string">"0.0.0.0"</span>, port=10000)</pre>
<pre id="code_1752052309002" class="bash hljs" contenteditable="false" data-ke-language="bash" data-ke-type="codeblock"><span class="hljs-comment"># render.yaml</span>
services:
  - <span class="hljs-built_in">type</span>: web
    name: mcp-server
    env: python
    buildCommand: <span class="hljs-string">""</span>
    startCommand: uvicorn main:app --host 0.0.0.0 --port 10000</pre>
<pre id="code_1752052474555" class="bash hljs" contenteditable="false" data-ke-language="bash" data-ke-type="codeblock"><span class="hljs-comment"># requirements.txt</span>
fastapi
uvicorn</pre>
<h2 id="render-deploy" style="font-size: 1.8rem; font-weight: bold; color: #4a148c; margin-top: 1.5em; margin-bottom: 0.8em; line-height: 1.2; border-left: 5px solid #9c27b0; padding-left: 0.8em; font-family: 'Noto Sans KR', sans-serif;" data-ke-size="size26">Render를 활용한 무료 배포 방법</h2>
<p style="font-size: 1rem; line-height: 1.8; margin-bottom: 1.2em; color: #333; font-family: 'Noto Sans KR', sans-serif;" data-ke-size="size16">Render는 GitHub 저장소를 연동해서 자동으로 웹 애플리케이션을 배포할 수 있는 아주 편리한 서비스예요. 무료로 월 750시간까지 쓸 수 있어서 MCP 테스트에는 딱이죠. 설정 방법은 다음과 같아요.</p>
<figure data-ke-type="image" data-ke-mobilestyle="widthOrigin" data-ke-style="alignCenter">
<p><figure id="attachment_28334" aria-describedby="caption-attachment-28334" style="width: 1374px" class="wp-caption aligncenter"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==" fifu-lazy="1" fifu-data-sizes="auto" fifu-data-srcset="https://i2.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.22.19.png?ssl=1&amp;w=75&amp;resize=75&amp;ssl=1 75w, https://i2.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.22.19.png?ssl=1&amp;w=100&amp;resize=100&amp;ssl=1 100w, https://i2.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.22.19.png?ssl=1&amp;w=150&amp;resize=150&amp;ssl=1 150w, https://i2.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.22.19.png?ssl=1&amp;w=240&amp;resize=240&amp;ssl=1 240w, https://i2.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.22.19.png?ssl=1&amp;w=320&amp;resize=320&amp;ssl=1 320w, https://i2.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.22.19.png?ssl=1&amp;w=500&amp;resize=500&amp;ssl=1 500w, https://i2.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.22.19.png?ssl=1&amp;w=640&amp;resize=640&amp;ssl=1 640w, https://i2.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.22.19.png?ssl=1&amp;w=800&amp;resize=800&amp;ssl=1 800w, https://i2.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.22.19.png?ssl=1&amp;w=1024&amp;resize=1024&amp;ssl=1 1024w, https://i2.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.22.19.png?ssl=1&amp;w=1280&amp;resize=1280&amp;ssl=1 1280w, https://i2.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.22.19.png?ssl=1&amp;w=1600&amp;resize=1600&amp;ssl=1 1600w" class="wp-image-28334 size-full" fifu-data-src="https://i2.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.22.19.png?ssl=1" alt="Custom GPT + MCP 서버 구축으로 ChatGPT 파일 시스템 제어하기" width="1384" height="611" title="Custom GPT + MCP 서버 구축으로 ChatGPT 파일 시스템 제어하기 5"><figcaption id="caption-attachment-28334" class="wp-caption-text">Custom GPT + MCP 서버 구축으로 ChatGPT 파일 시스템 제어하기</figcaption></figure></figure>
<p style="font-size: 1rem; line-height: 1.8; margin-bottom: 1.2em; color: #333; font-family: 'Noto Sans KR', sans-serif;" data-ke-size="size16"><a href="https://render.com/" target="_blank" rel="noopener noreferrer">https://render.com/</a></p>
<figure id="og_1752063483003" contenteditable="false" data-ke-type="opengraph" data-ke-align="alignCenter" data-og-type="website" data-og-title="Cloud Application Platform | Render" data-og-description="On Render, you can build, deploy, and scale your apps with unparalleled ease – from your first user to your billionth." data-og-host="render.com" data-og-source-url="https://render.com/" data-og-url="https://render.com/" data-og-image="https://scrap.kakaocdn.net/dn/f0eUN/hyZjtnu5lE/OV0YGve46FZxEzvh7ZBufk/img.png?width=1600&amp;height=894&amp;face=0_0_1600_894,https://scrap.kakaocdn.net/dn/bjWwV8/hyZfu2AGB0/x8tUtkrBEAWvbbNeF9fxck/img.png?width=1600&amp;height=894&amp;face=0_0_1600_894,https://scrap.kakaocdn.net/dn/M8PhH/hyZjBMAaSn/mcpV5gYIyHcEm76MPBJLj0/img.png?width=960&amp;height=621&amp;face=0_0_960_621">
<div class="og-image"></div>
<div class="og-text">
<p class="og-title">Cloud Application Platform | Render</p>
<p class="og-desc">On Render, you can build, deploy, and scale your apps with unparalleled ease – from your first user to your billionth.</p>
<p class="og-host">render.com</p>
</div>
</figure>
<ol style="margin-bottom: 1.2em; padding-left: 2em; color: #333; font-family: 'Noto Sans KR', sans-serif;" data-ke-list-type="decimal">
<li style="margin-bottom: 0.5em; position: relative;">Render 계정 생성 후 로그인</li>
<li style="margin-bottom: 0.5em; position: relative;">&#8220;+ New &gt; Web Service&#8221; 클릭</li>
<li style="margin-bottom: 0.5em; position: relative;">Public Git Repository에 GitHub URL 입력</li>
<li style="margin-bottom: 0.5em; position: relative;">Start Command에 <code style="background-color: #f5f5f5; padding: 0.2em 0.4em; border-radius: 3px; font-family: 'Consolas', 'Monaco', monospace; font-size: 0.9em; color: #6a1b9a;">uvicorn main:app --host 0.0.0.0 --port 10000</code> 입력</li>
<li style="margin-bottom: 0.5em; position: relative;">요금제는 Free 선택, &#8220;Deploy Web Service&#8221; 클릭</li>
</ol>
<figure data-ke-type="image" data-ke-mobilestyle="widthOrigin" data-ke-style="alignCenter">
<p><figure id="attachment_28336" aria-describedby="caption-attachment-28336" style="width: 1079px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==" fifu-lazy="1" fifu-data-sizes="auto" fifu-data-srcset="https://i1.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.28.55.png?ssl=1&amp;w=75&amp;resize=75&amp;ssl=1 75w, https://i1.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.28.55.png?ssl=1&amp;w=100&amp;resize=100&amp;ssl=1 100w, https://i1.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.28.55.png?ssl=1&amp;w=150&amp;resize=150&amp;ssl=1 150w, https://i1.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.28.55.png?ssl=1&amp;w=240&amp;resize=240&amp;ssl=1 240w, https://i1.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.28.55.png?ssl=1&amp;w=320&amp;resize=320&amp;ssl=1 320w, https://i1.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.28.55.png?ssl=1&amp;w=500&amp;resize=500&amp;ssl=1 500w, https://i1.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.28.55.png?ssl=1&amp;w=640&amp;resize=640&amp;ssl=1 640w, https://i1.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.28.55.png?ssl=1&amp;w=800&amp;resize=800&amp;ssl=1 800w, https://i1.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.28.55.png?ssl=1&amp;w=1024&amp;resize=1024&amp;ssl=1 1024w, https://i1.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.28.55.png?ssl=1&amp;w=1280&amp;resize=1280&amp;ssl=1 1280w, https://i1.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.28.55.png?ssl=1&amp;w=1600&amp;resize=1600&amp;ssl=1 1600w" class="wp-image-28336 size-full" fifu-data-src="https://i1.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.28.55.png?ssl=1" alt="Custom GPT + MCP 서버 구축으로 ChatGPT 파일 시스템 제어하기" width="1089" height="351" title="Custom GPT + MCP 서버 구축으로 ChatGPT 파일 시스템 제어하기 6"><figcaption id="caption-attachment-28336" class="wp-caption-text">Custom GPT + MCP 서버 구축으로 ChatGPT 파일 시스템 제어하기</figcaption></figure></figure>
<h2 id="custom-gpt-setting" style="font-size: 1.8rem; font-weight: bold; color: #4a148c; margin-top: 1.5em; margin-bottom: 0.8em; line-height: 1.2; border-left: 5px solid #9c27b0; padding-left: 0.8em; font-family: 'Noto Sans KR', sans-serif;" data-ke-size="size26">Custom GPT에서 MCP 연동 설정</h2>
<p style="font-size: 1rem; line-height: 1.8; margin-bottom: 1.2em; color: #333; font-family: 'Noto Sans KR', sans-serif;" data-ke-size="size16">이제 MCP 서버가 배포되었으니, 본격적으로 ChatGPT의 Custom GPT 기능을 통해 연동해볼 차례예요. 이 기능은 Free 요금제에서는 안 되고, 반드시 Plus 요금제 이상에서만 활성화돼요. GPT 설정 화면에서 &#8220;구성&#8221; 탭으로 이동해서 작업을 추가하고 OpenAPI 스키마를 붙여 넣으면 됩니다. 특히 스키마 작성은 처음엔 어렵게 느껴질 수 있는데, MCP 서버에 있는 FastAPI 코드 구조만 이해하면 의외로 간단해요.</p>
<h2 id="mcp-schema-guideline" style="font-size: 1.8rem; font-weight: bold; color: #4a148c; margin-top: 1.5em; margin-bottom: 0.8em; line-height: 1.2; border-left: 5px solid #9c27b0; padding-left: 0.8em; font-family: 'Noto Sans KR', sans-serif;" data-ke-size="size26">OpenAPI 스키마 작성 가이드</h2>
<p style="font-size: 1rem; line-height: 1.8; margin-bottom: 1.2em; color: #333; font-family: 'Noto Sans KR', sans-serif;" data-ke-size="size16">Custom GPT가 MCP 서버의 기능을 호출하려면, MCP API 구조를 명세하는 OpenAPI 스키마가 필요해요. 아래는 주요 엔드포인트와 요청 방식, 필수 파라미터를 간략히 정리한 표입니다.</p>
<table style="width: 100%; border-collapse: collapse; margin: 1.5em 0; font-family: 'Noto Sans KR', sans-serif;" data-ke-align="alignLeft">
<thead>
<tr>
<th style="border: 1px solid #e1bee7; padding: 0.5em; background-color: #9c27b0; color: white; font-weight: bold;">엔드포인트</th>
<th style="border: 1px solid #e1bee7; padding: 0.5em; background-color: #9c27b0; color: white; font-weight: bold;">요청 방식</th>
<th style="border: 1px solid #e1bee7; padding: 0.5em; background-color: #9c27b0; color: white; font-weight: bold;">기능 요약</th>
</tr>
</thead>
<tbody>
<tr>
<td style="border: 1px solid #e1bee7; padding: 0.5em;">/create-folder</td>
<td style="border: 1px solid #e1bee7; padding: 0.5em;">POST</td>
<td style="border: 1px solid #e1bee7; padding: 0.5em;">폴더 생성</td>
</tr>
<tr style="background-color: #f3e5f5;">
<td style="border: 1px solid #e1bee7; padding: 0.5em;">/write-file</td>
<td style="border: 1px solid #e1bee7; padding: 0.5em;">POST</td>
<td style="border: 1px solid #e1bee7; padding: 0.5em;">파일 쓰기</td>
</tr>
<tr>
<td style="border: 1px solid #e1bee7; padding: 0.5em;">/list-files</td>
<td style="border: 1px solid #e1bee7; padding: 0.5em;">GET</td>
<td style="border: 1px solid #e1bee7; padding: 0.5em;">폴더 내 파일 목록 조회</td>
</tr>
</tbody>
</table>
<h2 id="mcp-gpt-usecases" style="font-size: 1.8rem; font-weight: bold; color: #4a148c; margin-top: 1.5em; margin-bottom: 0.8em; line-height: 1.2; border-left: 5px solid #9c27b0; padding-left: 0.8em; font-family: 'Noto Sans KR', sans-serif;" data-ke-size="size26">실제 파일 제어 테스트 예시</h2>
<figure data-ke-type="image" data-ke-mobilestyle="widthOrigin" data-ke-style="alignCenter">
<p><figure id="attachment_28337" aria-describedby="caption-attachment-28337" style="width: 1301px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==" fifu-lazy="1" fifu-data-sizes="auto" fifu-data-srcset="https://i0.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.31.32.png?ssl=1&amp;w=75&amp;resize=75&amp;ssl=1 75w, https://i0.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.31.32.png?ssl=1&amp;w=100&amp;resize=100&amp;ssl=1 100w, https://i0.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.31.32.png?ssl=1&amp;w=150&amp;resize=150&amp;ssl=1 150w, https://i0.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.31.32.png?ssl=1&amp;w=240&amp;resize=240&amp;ssl=1 240w, https://i0.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.31.32.png?ssl=1&amp;w=320&amp;resize=320&amp;ssl=1 320w, https://i0.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.31.32.png?ssl=1&amp;w=500&amp;resize=500&amp;ssl=1 500w, https://i0.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.31.32.png?ssl=1&amp;w=640&amp;resize=640&amp;ssl=1 640w, https://i0.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.31.32.png?ssl=1&amp;w=800&amp;resize=800&amp;ssl=1 800w, https://i0.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.31.32.png?ssl=1&amp;w=1024&amp;resize=1024&amp;ssl=1 1024w, https://i0.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.31.32.png?ssl=1&amp;w=1280&amp;resize=1280&amp;ssl=1 1280w, https://i0.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.31.32.png?ssl=1&amp;w=1600&amp;resize=1600&amp;ssl=1 1600w" class="wp-image-28337 size-full" fifu-data-src="https://i0.wp.com/miracool.co.kr/wp-content/uploads/2025/07/스크린샷-2025-07-09-오후-9.31.32.png?ssl=1" alt="Custom GPT + MCP 서버 구축으로 ChatGPT 파일 시스템 제어하기" width="1311" height="692" title="Custom GPT + MCP 서버 구축으로 ChatGPT 파일 시스템 제어하기 7"><figcaption id="caption-attachment-28337" class="wp-caption-text">Custom GPT + MCP 서버 구축으로 ChatGPT 파일 시스템 제어하기</figcaption></figure></figure>
<p style="font-size: 1rem; line-height: 1.8; margin-bottom: 1.2em; color: #333; font-family: 'Noto Sans KR', sans-serif;" data-ke-size="size16">설정이 완료되었다면 이제 실제로 파일을 만들거나 읽는 테스트를 할 수 있어요. 아래는 ChatGPT에게 자연어로 요청하고, MCP 서버가 실제로 처리한 테스트 예시들입니다.</p>
<ul style="margin-bottom: 1.2em; padding-left: 2em; list-style-type: none; color: #333; font-family: 'Noto Sans KR', sans-serif;" data-ke-list-type="disc">
<li style="margin-bottom: 0.5em; position: relative;">&#8220;/tmp/test&#8221; 폴더 만들어줘 → 폴더 생성</li>
<li style="margin-bottom: 0.5em; position: relative;">&#8220;hello.txt에 안녕이라고 써줘&#8221; → 파일 작성</li>
<li style="margin-bottom: 0.5em; position: relative;">&#8220;hello.txt 내용 보여줘&#8221; → 파일 읽기l</li>
</ul>
<div style="margin: 1.5em 0; font-family: 'Noto Sans KR', sans-serif;">
<div style="font-weight: bold; color: #9c27b0; margin-bottom: 0.5em; font-size: 1.1rem;"><span style="display: inline-block; width: 24px; height: 24px; line-height: 24px; text-align: center; background-color: #9c27b0; color: white; border-radius: 50%; margin-right: 8px;">Q</span> MCP 서버 없이도 Custom GPT 설정이 가능한가요?</div>
<div style="margin-left: 32px; margin-bottom: 1em;">
<p style="margin: 0; line-height: 1.6;" data-ke-size="size16">불가능합니다. Custom GPT가 외부 시스템과 상호작용하려면 실제 서버가 있어야 하며, 그 서버는 OpenAPI 기반 API를 제공해야 합니다.</p>
</div>
<div style="font-weight: bold; color: #9c27b0; margin-bottom: 0.5em; font-size: 1.1rem;"><span style="display: inline-block; width: 24px; height: 24px; line-height: 24px; text-align: center; background-color: #9c27b0; color: white; border-radius: 50%; margin-right: 8px;">Q</span> MCP 서버는 로컬에서 테스트할 수 있나요?</div>
<div style="margin-left: 32px; margin-bottom: 1em;">
<p style="margin: 0; line-height: 1.6;" data-ke-size="size16">네, uvicorn으로 로컬 서버를 실행하면 동일한 API 테스트가 가능합니다. 단, Custom GPT와 연결하려면 외부에 노출된 주소가 필요합니다.</p>
</div>
<div style="font-weight: bold; color: #9c27b0; margin-bottom: 0.5em; font-size: 1.1rem;"><span style="display: inline-block; width: 24px; height: 24px; line-height: 24px; text-align: center; background-color: #9c27b0; color: white; border-radius: 50%; margin-right: 8px;">Q</span> Render 무료 요금제의 제약은 어떤 게 있나요?</div>
<div style="margin-left: 32px; margin-bottom: 1em;">
<p style="margin: 0; line-height: 1.6;" data-ke-size="size16">슬립 상태로 진입해 첫 요청 시 딜레이가 생길 수 있습니다. 또한, 월 750시간 사용 제한이 있으므로 장시간 서비스 운영에는 적합하지 않습니다.</p>
</div>
<div style="font-weight: bold; color: #9c27b0; margin-bottom: 0.5em; font-size: 1.1rem;"><span style="display: inline-block; width: 24px; height: 24px; line-height: 24px; text-align: center; background-color: #9c27b0; color: white; border-radius: 50%; margin-right: 8px;">Q</span> OpenAPI 스키마는 반드시 JSON이어야 하나요?</div>
<div style="margin-left: 32px; margin-bottom: 1em;">
<p style="margin: 0; line-height: 1.6;" data-ke-size="size16">Custom GPT에서는 JSON 형식으로 스키마를 정의하는 것이 가장 안정적이며, 시각적인 GUI에서 오류 없이 작동합니다.</p>
</div>
<div style="font-weight: bold; color: #9c27b0; margin-bottom: 0.5em; font-size: 1.1rem;"><span style="display: inline-block; width: 24px; height: 24px; line-height: 24px; text-align: center; background-color: #9c27b0; color: white; border-radius: 50%; margin-right: 8px;">Q</span> MCP 외에도 Custom GPT에 연동할 수 있는 예시가 있나요?</div>
<div style="margin-left: 32px; margin-bottom: 1em;">
<p style="margin: 0; line-height: 1.6;" data-ke-size="size16">물론입니다. 날씨 API, Google Calendar, Notion, OpenAI Functions 등 다양한 API를 연결하여 자신만의 도우미를 구성할 수 있습니다.</p>
</div>
<div style="font-weight: bold; color: #9c27b0; margin-bottom: 0.5em; font-size: 1.1rem;"><span style="display: inline-block; width: 24px; height: 24px; line-height: 24px; text-align: center; background-color: #9c27b0; color: white; border-radius: 50%; margin-right: 8px;">Q</span> MCP 서버 API가 변경되면 Custom GPT도 다시 설정해야 하나요?</div>
<div style="margin-left: 32px;">
<p style="margin: 0; line-height: 1.6;" data-ke-size="size16">네, 엔드포인트나 파라미터가 바뀌면 OpenAPI 스키마도 수정해야 하며, GPT 작업 설정에서도 업데이트가 필요합니다.</p>
</div>
</div>
<p style="font-size: 1rem; line-height: 1.8; margin-bottom: 1.2em; color: #333; font-family: 'Noto Sans KR', sans-serif;" data-ke-size="size16">여기까지 따라오셨다면 이제 여러분도 MCP 서버를 구축하고 Custom GPT로 제어할 수 있는 도우미를 직접 만들 수 있게 되셨을 거예요. 저도 처음엔 막막했는데 하나하나 시도하다 보니 생각보다 어렵지 않더라고요. 이 경험을 통해 얻은 가장 큰 깨달음은, 결국 중요한 건 &#8216;시도&#8217;라는 거예요. 누군가가 만들어둔 GPT를 쓰는 것도 좋지만, 나만의 GPT를 만들고 직접 제어할 수 있다는 자유도 엄청난 매력이 있답니다. 혹시 따라하면서 막히는 부분이 있었다면 댓글이나 커뮤니티에서 함께 해결해봐요!</p>
<p style="font-size: 0.9rem; color: #666; font-family: 'Noto Sans KR', sans-serif; margin-top: 2em;" data-ke-size="size16">태그: Custom GPT, MCP 서버, FastAPI, Render 무료 배포, ChatGPT 외부 API 연동, OpenAPI 스키마, GPT 플러그인, ChatGPT 파일 시스템, FastAPI 서버 배포, ChatGPT 도우미 설정</p>
<p style="font-size: 0.9rem; color: #666; font-family: 'Noto Sans KR', sans-serif; margin-top: 2em;" data-ke-size="size16"><a style="background-color: #e6f5ff; color: #0070d1; text-align: start;" href="https://aboda.kr/entry/MCPModel-Context-Protocol%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80" target="_blank" rel="noopener">2025.03.16 &#8211; [분류 전체보기] &#8211; MCP(Model Context Protocol)란 무엇인가?</a></p>
<p data-ke-size="size16"><a href="https://miracool.co.kr/?p=28265">AI 활용 설계가 핵심 ‘도입’보다 ‘워크플로우’가 답!</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://miracool.co.kr/custom-gpt-mcp-%ec%84%9c%eb%b2%84-%ea%b5%ac%ec%b6%95%ec%9c%bc%eb%a1%9c-chatgpt-%ed%8c%8c%ec%9d%bc-%ec%8b%9c%ec%8a%a4%ed%85%9c-%ec%a0%9c%ec%96%b4%ed%95%98/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<media:content url="https://miracool.co.kr/wp-content/uploads/2025/07/제목을-입력해주세요__-복사본-001-4.jpg" medium="image"></media:content>
				</item>
	</channel>
</rss>
