https://community.openai.com/t/how-mcp-servers-will-be-supported-with-chatgpt-can-we-guess/1229249
How MCP servers will be supported with ChatGPT? Can we guess?
Hello. I started to learn how MCP works. It would be nice to know how exactly will OpenAI add this support to ChatGPT. In the tweet Sam says “support for chatgpt desktop app”. So, maybe the plan is to support it similar way like Clause Desktop does. Bu
community.openai.com
MCP 서버가 ChatGPT와 어떻게 호환될까요? 우리가 추측해볼 수 있을까요?
태그: ChatGPT, Feature requests, chatgpt
- 조회수: 42,300
- 좋아요: 35
- 링크 수: 2
- 참여자 수: 7명
gelembjuk – 4월 10일
안녕하세요.
저는 MCP가 어떻게 동작하는지 배우기 시작했습니다.
OpenAI가 ChatGPT에 MCP 지원을 어떻게 추가할지 정확히 알 수 있다면 좋을 것 같습니다.
샘(Sam Altman)의 트윗에 따르면 “ChatGPT 데스크탑 앱 지원”이라고 합니다.
그래서 아마도 Clause Desktop이 MCP를 지원하는 방식과 비슷하게 될 것이라 예상해봅니다.
하지만 저는 OpenAI가 좀 더 풍부하게 지원해주길 바랍니다.
MCP 서버에는 두 가지 유형이 있습니다:
- STDIO 서버
- SSE 서버
SSE 서버는 **“원격 서버”**로, 어떤 호스트에서도 실행할 수 있습니다.
반면 STDIO는 LLM 앱과 동일한 머신에서 실행되어야 합니다.
저는 OpenAI가 SSE MCP 서버를 지원해주길 바라며,
ChatGPT 데스크탑 앱뿐만 아니라 웹 버전에도 연결이 가능하길 바랍니다.
여러분은 이것이 가능하다고 생각하시나요?
그렇다면 정말 환상적일 것 같아요!
jlvanhulst – 4월 15일
저는 SSE MCP가 API (또는 데스크탑 앱 등)에서 지원될 것이라고 100% 확신합니다.
이렇게 되면 대시보드 상에서 툴 호출 등 많은 작업들이 훨씬 쉬워질 겁니다.
vb (Leader) – 4월 15일
OpenAI Agents SDK는 이미 두 가지 유형의 서버(STDIO, SSE)를 모두 지원합니다.
이 기능이 데스크탑 앱에 도입될 때도, 이게 제한 사항이 되지는 않을 것이라 생각합니다.
또한, 지금도 커스텀 GPT와 함께 MCP를 사용하는 것이 가능합니다.
[openai.github.io 링크: Model context protocol (MCP) - OpenAI Agents SDK]
marcelojimenezr – 4월 24일
ChatGPT 데스크탑 앱이 MCP 클라이언트로 작동하게 되는 시점은 언제쯤일까요?
대략적인 예상이라도 알고 싶습니다.
dongho-jung – 4월 25일
저도 MCP를 사용하고 싶습니다.
하지만 MCP 때문에 ChatGPT 앱에서 Claude 앱으로 바꾸고 싶지는 않습니다.
저는 주로 ChatGPT 앱을 통해 작업하기 때문에,
여기에 MCP가 도입된다면 훨씬 효율적으로 될 것 같습니다.
Dale_Bertrand – 5월 3일
MCP는 제가 Claude를 사용하는 유일한 이유입니다.
ChatGPT에도 MCP 지원이 생기면 정말 좋겠네요.
Elvis_Oliveira – (22일 전)
현재는 MCP 서버를 OpenAI 프롬프트와 연결하는 것이 가능합니다.
다만 현재는 툴(Tools) 기능으로만 지원됩니다.
(아래는 이미지 설명 – AI 캡션에 의해 추가된 설명입니다)
사용자 인터페이스에는 'Tools' 및 'Create...' 메뉴가 있고,
플러스 버튼과 'MCP Server', 'Function' 항목이 있는 드롭다운이 일부 표시됩니다.
1328×222 11.9 KB
https://openai.github.io/openai-agents-python/mcp/
Model context protocol (MCP) - OpenAI Agents SDK
Model context protocol (MCP) The Model context protocol (aka MCP) is a way to provide tools and context to the LLM. From the MCP docs: MCP is an open protocol that standardizes how applications provide context to LLMs. Think of MCP like a USB-C port for AI
openai.github.io
Model Context Protocol (MCP)
**Model Context Protocol(MCP)**는 LLM에게 도구(tool)와 컨텍스트(context)를 제공하는 방식입니다. MCP 문서에 따르면:
MCP는 애플리케이션이 LLM에 컨텍스트를 제공하는 표준화된 오픈 프로토콜입니다.
MCP는 AI 애플리케이션을 위한 USB-C 포트와 비슷하다고 생각하면 됩니다. USB-C가 다양한 주변기기 및 액세서리를 연결하는 표준 방식을 제공하는 것처럼, MCP는 AI 모델을 다양한 데이터 소스와 도구에 연결하는 표준 방식을 제공합니다.
Agents SDK는 MCP를 지원합니다.
이로 인해 다양한 MCP 서버를 사용하여 Agent에게 도구와 프롬프트를 제공할 수 있습니다.
MCP 서버 종류
현재 MCP 명세는 전송 방식에 따라 세 가지 유형의 서버를 정의합니다:
- stdio 서버
- 애플리케이션의 서브 프로세스로 실행됩니다.
- "로컬에서 실행되는" 서버라고 보면 됩니다.
- SSE(Send Server Events) 기반 HTTP 서버
- 원격 서버로 실행됩니다.
- URL을 통해 연결됩니다.
- Streamable HTTP 서버
- MCP 명세에 정의된 Streamable HTTP 전송 방식을 사용하는 원격 서버입니다.
각 서버는 다음과 같은 클래스를 사용하여 연결할 수 있습니다:
MCPServerStdio, MCPServerSse, MCPServerStreamableHttp.
예제: MCP 파일 시스템 서버 사용법
from agents.run_context import RunContextWrapper
async with MCPServerStdio(
params={
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", samples_dir],
}
) as server:
run_context = RunContextWrapper(context=None)
agent = Agent(name="test", instructions="test")
tools = await server.list_tools(run_context, agent)
※ 실제로는 server를 Agent에 추가하고 프레임워크가 자동으로 list_tools()를 호출하게 하는 것이 일반적입니다.
MCP 서버 사용법
MCP 서버는 Agent에 추가할 수 있습니다.
Agent가 실행될 때마다 MCP 서버의 list_tools()가 호출되어 LLM에게 사용할 수 있는 도구 목록을 알립니다.
LLM이 MCP 서버의 도구를 호출하면, SDK는 해당 서버의 call_tool()을 호출합니다.
agent = Agent(
name="Assistant",
instructions="Use the tools to achieve the task",
mcp_servers=[mcp_server_1, mcp_server_2]
)
도구 필터링 (Tool Filtering)
Agent에서 사용할 도구를 필터링하려면 MCP 서버에 도구 필터를 설정할 수 있습니다.
SDK는 정적(static) 필터링과 동적(dynamic) 필터링을 모두 지원합니다.
정적 도구 필터링 (Static Tool Filtering)
허용 목록 또는 차단 목록을 단순하게 설정하려면 아래와 같이 사용할 수 있습니다.
from agents.mcp import create_static_tool_filter
# 특정 도구만 허용
server = MCPServerStdio(
params={
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", samples_dir],
},
tool_filter=create_static_tool_filter(
allowed_tool_names=["read_file", "write_file"]
)
)
# 특정 도구만 차단
server = MCPServerStdio(
params={
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", samples_dir],
},
tool_filter=create_static_tool_filter(
blocked_tool_names=["delete_file"]
)
)
동시 설정 시 우선순위:
- allowed_tool_names(허용 목록)를 먼저 적용하여 지정된 도구만 남깁니다.
- 그 후 blocked_tool_names(차단 목록)를 적용하여 제외할 도구를 제거합니다.
예:
allowed_tool_names=["read_file", "write_file", "delete_file"]
blocked_tool_names=["delete_file"]
→ 최종 사용 가능 도구는 read_file, write_file입니다.
동적 도구 필터링 (Dynamic Tool Filtering)
보다 복잡한 필터링 로직이 필요할 경우 함수 기반 필터링을 사용할 수 있습니다.
from agents.mcp import ToolFilterContext
# 간단한 동기 필터
def custom_filter(context: ToolFilterContext, tool) -> bool:
return tool.name.startswith("allowed_prefix")
# 에이전트와 서버 정보를 고려한 필터
def context_aware_filter(context: ToolFilterContext, tool) -> bool:
agent_name = context.agent.name
server_name = context.server_name
return some_filtering_logic(agent_name, server_name, tool)
# 비동기 필터
async def async_filter(context: ToolFilterContext, tool) -> bool:
result = await some_async_check(context, tool)
return result
# 서버에 필터 적용
server = MCPServerStdio(
params={
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", samples_dir],
},
tool_filter=custom_filter # 또는 context_aware_filter, async_filter
)
ToolFilterContext는 다음에 접근할 수 있도록 해줍니다:
- run_context: 현재 실행 컨텍스트
- agent: 도구를 요청한 에이전트
- server_name: MCP 서버 이름
프롬프트 (Prompts)
MCP 서버는 Agent의 instructions를 동적으로 생성할 수 있는 프롬프트도 제공합니다.
이를 통해 재사용 가능한 템플릿을 만들고, 매개변수를 기반으로 사용자 정의할 수 있습니다.
프롬프트 사용법
MCP 서버가 프롬프트를 지원하는 경우 다음 두 가지 메서드를 제공합니다:
- list_prompts(): 서버에서 제공하는 모든 프롬프트 목록 반환
- get_prompt(name, arguments): 특정 프롬프트를 인자로 받아 사용
# 프롬프트 목록 가져오기
prompts_result = await server.list_prompts()
for prompt in prompts_result.prompts:
print(f"Prompt: {prompt.name} - {prompt.description}")
# 특정 프롬프트 사용
prompt_result = await server.get_prompt(
"generate_code_review_instructions",
{"focus": "security vulnerabilities", "language": "python"}
)
instructions = prompt_result.messages[0].content.text
# Agent에 프롬프트에서 생성한 instructions 적용
agent = Agent(
name="Code Reviewer",
instructions=instructions,
mcp_servers=[server]
)
캐싱 (Caching)
Agent가 실행될 때마다 MCP 서버의 list_tools()가 호출되는데,
서버가 원격일 경우 이 과정이 지연(latency)을 초래할 수 있습니다.
이런 경우 cache_tools_list=True를 설정하면 도구 목록을 자동으로 캐싱합니다:
MCPServerStdio(..., cache_tools_list=True)
※ 도구 목록이 변경되지 않을 때만 사용하세요.
※ 캐시 무효화는 invalidate_tools_cache()로 수동으로 수행할 수 있습니다.
엔드 투 엔드 예제
전체 작동 예시는 다음 경로에서 확인할 수 있습니다:
examples/mcp
트레이싱 (Tracing)
MCP 관련 작업은 자동으로 트레이싱됩니다:
- MCP 서버에 도구 목록을 요청한 내역
- 함수 호출 중 MCP 관련 정보
'Tools' 카테고리의 다른 글
| [Claude Code] Context 관리 (1) | 2025.07.25 |
|---|---|
| Claude & Intellij 연동하기, Claude 사용 꿀팁 (1) | 2025.07.22 |
| Obsidian이 뜬다던데... (0) | 2025.07.22 |
| [intellij] (톰캣) 한글깨짐 해결 (0) | 2023.04.19 |
| [tistory] 티스토리 hELLO 스킨 변경, highlight-line-number추가 (9) | 2023.02.17 |