소개
지금까지 이 시리즈의 모든 튜토리얼은 Quickchat AI Agent를 Telegram, Google Sheets, Discord 같은 무언가에 연결하는 내용이었습니다. 이번에는 방향을 뒤집습니다. 에이전트가 다른 AI가 연결하는 대상이 됩니다. 즉, 사용자가 에이전트만 아는 것을 물을 때 ChatGPT, Claude, Cursor가 호출하는 도구가 됩니다.
그 메커니즘은 MCP 서버이며, 설정은 의도적으로 단순합니다. 모든 Quickchat AI Agent에는 이미 https://app.quickchat.ai/mcp/your-agent-id 형식의 URL에 호스팅된 MCP 서버가 있습니다. 켜고, URL을 복사하고, AI 앱에 커넥터로 붙여 넣으면 됩니다. 이것이 전체 통합이며, 코드가 필요 없습니다. 액세스는 기본적으로 비공개입니다. 사용자가 다르게 결정하기 전까지, 연결하려면 Quickchat AI 계정으로 로그인해야 합니다.
이 가이드를 마치면 가상의 개발자 도구 회사용 지원 에이전트를 만들고, 실제 지식을 제공하고, MCP 서버로 노출하고, 실제 AI 앱에 연결하고, Inbox에서 진짜 새로운 장면을 보게 됩니다. 두 AI가 서로 대화하는 장면입니다. 그 과정에서 에이전트가 채팅 앱 안에서 영업 리드를 수집합니다. 또한 이 글에서 가장 흥미로운 발견이었던 호출하는 AI가 전달하는 것과 거부하는 것도 다룹니다.
필요한 것은 두 가지입니다.
- Quickchat AI Agent(여기에서 가입하고 무료로 사용, MCP는 Free 플랜에 포함)
- 하나 이상의 MCP 클라이언트: Claude(무료 플랜 가능), ChatGPT(유료 플랜, 개발자 모드), Cursor 또는 MCP 클라이언트 디렉터리의 앱
이 기능의 표준 참고 문서는 docs.quickchat.ai/channels/mcp에 있습니다. MCP 자체가 처음이라면, MCP 설명 글에서 프로토콜을 자세히 다룹니다. 이 글에는 아래의 한 단락 버전만 필요합니다.
만들게 될 것
가상의 회사 Orbit은 개발자에게 호스팅형 벡터 검색 API를 판매합니다. 지원 에이전트는 문서를 알고 있습니다. 플랜, 속도 제한, 리전, 인증, SDK입니다. 이 에이전트를 MCP 서버로 노출하고 실제 AI 앱에서 다섯 가지 동작을 실행합니다.
| # | AI 앱에 묻는 내용 | 에이전트가 하는 일 | 확인 위치 |
|---|---|---|---|
| 1 | ”What are Orbit’s rate limits on the free plan?” | Knowledge Base에서 답변 | 앱의 채팅 + Inbox |
| 2 | ”Does Orbit have a Ruby SDK?” | 모른다고 말함(해당 사실은 의도적으로 누락) | 앱이 정직한 부정을 전달 |
| 3 | ”Get me a demo, here are my details” | Smart Data Gathering으로 리드 수집 | Inbox의 연락처 정보 |
| 4 | ”Put me through to a human” | Human Handoff 트리거 | 대화가 팀에 재할당됨 |
| 5 | 후속 질문 | 같은 대화 계속 진행 | Inbox의 한 스레드 |
아래의 모든 내용은 실행 중인 제품에 대해 실제로 구축하고 테스트한 것이며, 모든 스크린샷은 실제 캡처입니다. 외부 앱 화면인 경우에는 정확히 어디를 클릭해야 하는지 설명합니다.
누가 누구를 호출하는가: MCP 클라이언트, MCP 서버, AI Agent, AI Action
이 네 용어는 MCP 서버를 직업적으로 배포하는 사람들 사이에서도 계속 혼동됩니다. 각각 한 문장으로 정리하면 다음과 같습니다.
- MCP 클라이언트는 사용자가 대화하는 AI 앱입니다(ChatGPT, Claude, Cursor). 도구를 언제 호출할지 결정합니다.
- MCP 서버는 도구를 제공하는 대상입니다. 여기서는 Quickchat AI가 에이전트마다 하나씩
https://app.quickchat.ai/mcp/<your-agent-id>에 호스팅합니다. - AI Agent는 에이전트 자체입니다. Knowledge Base, 프롬프트, 사용자가 구성한 동작입니다. MCP 서버는 그 소켓일 뿐입니다.
- AI Actions는 답변 중에 에이전트 자체가 할 수 있는 작업입니다(API 호출, 리드 수집, 사람에게 인계). 질문이 MCP를 통해 도착해도 계속 작동합니다.
이 안내에서는 명시적으로 연결된 MCP 클라이언트를 사용합니다. 서버 URL을 게시하거나 웹사이트 위젯을 추가하는 것만으로는 방문자의 ChatGPT 또는 Claude 계정이 해당 서버에 연결되지 않습니다. 연결되지 않은 어시스턴트가 웹사이트의 경로를 발견하고 사용할지는 별개의 문제입니다.
전체 체인입니다. 도구 호출을 결정하는 주체에 주목하세요. MCP 클라이언트이며, 사용자도 에이전트도 아닙니다.
MCP(Model Context Protocol)는 가운데 화살표가 작동하게 하는 표준입니다. AI 앱이 서버의 도구를 발견하고 호출하는 통일된 방식입니다. 전송은 일반 HTTPS입니다(전송 세부 사항이 궁금하다면 streamable HTTP). 그래서 URL 하나가 전체 통합 표면입니다.
내재화해야 할 중요한 반전은 이것입니다. 호출하는 모델은 도구의 이름과 설명을 읽고, 에이전트를 호출할 가치가 있는 시점을 스스로 결정합니다. 강제로 호출하게 할 수 없습니다. 튜닝 섹션의 모든 내용은 여기에서 나옵니다.
구축 전에 알아둘 세 가지
실습 전에 서버 동작에 관한 세 가지 사실을 알아두세요.
- 에이전트당 도구 하나. 서버는 단일 도구를 노출합니다(사용자가 이름을 지정하며, 여기서는
ask_orbit). 이 도구는 문자열 인수message하나를 받고 에이전트의 답변을 반환합니다. 답변 파이프라인은 외부 시스템을 변경하는 호출을 포함해 활성화된 Actions를 실행할 수 있습니다. - 세션은 대화에 매핑됩니다. 각 MCP 세션은 Inbox의 하나의 대화에 매핑됩니다. 클라이언트가 호출 간에 세션을 유지하면 후속 질문이 같은 대화에 스레드로 들어갑니다. 다만 많은 채팅 앱은 질문마다 새 세션을 열기 때문에, 실제로는 각 질문이 별도 대화로 들어오는 경우가 많습니다. 유휴 세션은 몇 시간 후 만료됩니다.
- 실제 에이전트입니다. 호출은 웹사이트 위젯과 동일한 답변 파이프라인을 거칩니다. Knowledge Base 검색, AI Actions, Smart Data Gathering, Human Handoff가 사이트에서와 정확히 동일하게 동작하며, 모든 답변은 동일한 AI 메시지 크레딧을 사용합니다.
1단계: Orbit 에이전트를 만들고 지식 제공하기
에이전트를 만들고(Getting Started flow는 몇 분이면 됩니다) 정체성을 설정합니다. Orbit의 기본 프롬프트는 한 단락입니다.
당신은 Orbit의 개발자 지원 어시스턴트입니다. Orbit은 개발자를 위한 호스팅형 벡터 검색 API입니다. Knowledge Base를 사용해 Orbit의 플랜, 속도 제한, 리전, 인증, SDK, 검색 기능에 관한 질문에 답하세요. 간결하고 기술적으로 답하세요. 지식에 포함되지 않은 내용은 모른다고 명확히 말하세요.
그런 다음 Knowledge Base를 열고 아티클을 추가합니다. Orbit에는 짧은 아티클 여섯 개가 있습니다. 플랜과 가격, 속도 제한, 리전과 데이터 레지던시, 인증과 API 키, SDK와 API 클라이언트, 하이브리드 검색입니다. 에이전트가 정확히 말해야 하는 실제 사실의 예는 다음과 같습니다.
플랜별 속도 제한: Free는 분당 60개의 쿼리와 분당 120개의 쓰기를 허용합니다. Pro는 분당 600개의 쿼리와 분당 1,200개의 쓰기를 허용합니다. Scale 제한은 사용자 지정입니다. 제한은 토큰 버킷으로 프로젝트별 적용됩니다. 제한을 초과하면 API는 Retry-After 헤더와 함께 HTTP 429를 반환합니다. 배치 upsert는 벡터 100개당 1개의 쓰기로 계산됩니다.
Orbit의 Knowledge Base입니다. 여섯 개 아티클이 제품을 다룹니다. SDK 아티클은 의도적으로 Python, TypeScript, Go는 나열하지만 Ruby는 나열하지 않습니다.
의도적인 공백에 주목하세요. SDK 아티클에는 Ruby가 없습니다. 의도된 것입니다. 지원 에이전트의 가장 중요한 동작은 모를 때 무엇을 하는지이며, 쉬운 질문만 던지는 대신 그것을 정직하게 테스트하려는 것입니다.
더 자세한 Knowledge Base 가이드가 필요하다면 효과적인 Knowledge Base 구축 문서 페이지에서 소스, 태그, 재학습을 다룹니다.
2단계: MCP 서버 켜기
사이드바에서 External Apps를 열고 MCP 타일을 클릭합니다.
MCP는 다른 외부 표면인 API와 플랫폼별 통합 옆에 있습니다.
MCP 패널에는 한 화면에 모든 것이 있습니다. Enable MCP 토글, Configure MCP 대화상자, Connect MCP 대화상자, Require sign-in (private) 토글입니다.
전체 MCP 표면입니다. 켜고, 에이전트를 설명하고, URL을 복사하세요.
Enable MCP를 켠 다음 Configure MCP를 엽니다. 이 대화상자는 보이는 것보다 더 중요합니다. 이유는 전체 섹션에서 다룹니다. 필드는 세 개입니다.
호출하는 AI가 읽는 세 문자열입니다. 에이전트와 연결되는 모든 AI 앱 사이의 인터페이스입니다.
- Name: AI 앱이 에이전트를 보는 방식입니다. 여기서는
Orbit Docs Assistant입니다. - Description: 에이전트가 알고 할 수 있는 것과 할 수 없는 것을 2, 3문장으로 설명합니다. 호출 모델은 이것을 사용해 에이전트를 호출할지 여부와 시점을 결정하므로, 마케팅 문구가 아니라 API 계약처럼 작성하세요. 여기서는 다음과 같습니다.
Orbit(호스팅형 벡터 검색 API)에 관한 개발자 질문에 답합니다. 플랜과 가격, 속도 제한, 리전, 인증, SDK를 다룹니다. Orbit 자체 문서에서만 답하며, 포함되지 않은 내용은 그렇다고 말합니다. 후속 요청(데모, Scale 플랜 가격, 속도 제한 상향)도 등록할 수 있습니다. 사용자의 연락처 정보를 전달하면 Orbit 팀이 연락합니다.
- Command: AI 앱이 보는 도구 이름이며, 문자와 밑줄을 사용합니다. 여기서는
ask_orbit입니다. 모델이 자연스럽게 선택할 이름을 고르세요.
그런 다음 Connect MCP를 열고 your MCP server URL을 복사합니다.
https://app.quickchat.ai/mcp/<your-agent-id>
전체 통합 표면입니다. URL 하나, Copy 버튼, 앱별 단계입니다. 복사하고, 붙여 넣으면 끝입니다.
같은 대화상자에는 다음에 따를 앱별 단계가 나열되어 있습니다. 지금은 **Require sign-in (private)**를 켜 둡니다. 기본값이며, Quickchat AI 워크스페이스에 로그인하지 않으면 누구도 MCP를 통해 에이전트를 사용할 수 없다는 의미입니다. 이 트레이드오프를 이해한 뒤 나중에 의도적으로 public으로 바꿉니다.
3단계: Claude에서 연결하기
Claude에서 Settings를 열고 Connectors를 찾습니다(현재 Customize 섹션 아래). Add를 클릭한 다음 Add custom connector를 클릭합니다. 이름을 지정하고 MCP 서버 URL을 붙여 넣습니다. Claude는 무료 플랜을 포함한 모든 플랜에서 사용자 지정 커넥터를 지원합니다(무료 계정은 사용자 지정 커넥터 1개를 추가할 수 있습니다).
Claude의 전체 설정입니다. 이름과 URL입니다. OAuth 필드는 비워 둡니다. Quickchat AI가 인증을 처리합니다.
서버가 비공개이므로, Claude는 처음에 로그인 단계를 거치게 합니다. 일반 Quickchat AI 로그인 페이지가 열리고, 로그인하면 커넥터가 완료됩니다. 워크스페이스 멤버가 아닌 사람은 여기서 멈춥니다.
Private 모드의 실제 동작입니다. AI 앱이 일반 Quickchat AI 로그인으로 이동시킵니다. 팀은 들어가고, 그 외에는 들어가지 못합니다.
이제 Claude에 Orbit만 알 수 있는 것을 물어봅니다.
What are Orbit's rate limits on the free plan?
Claude는 질문이 ask_orbit의 영역임을 인식하고 도구를 호출한 뒤, 에이전트의 답변을 전달합니다. 분당 60개 쿼리, 분당 120개 쓰기, 세 개의 리전입니다. 이 숫자들은 모델의 상상이 아니라 Knowledge Base 아티클에서 온 것입니다.
“Loaded tools, used Orbit integration”: Claude가 에이전트를 호출하고 Knowledge Base가 말하는 내용을 정확히 전달했습니다. 독자는 Claude와 대화하지만, 사실은 사용자의 것입니다.
그런 다음 함정 질문을 합니다.
Does Orbit have a Ruby SDK?
에이전트는 문서에 해당 내용이 없다고 말하고, Claude는 정직한 부정을 전달합니다. 우리의 실행에서는 Knowledge Base를 확인하고, 공식 Ruby SDK가 없다고 보고했으며, 실제로 존재하는 SDK(Python, TypeScript, Go)를 올바르게 나열하고, 대신 Ruby에서 일반 REST API를 호출하라고 제안했습니다.
유용한 대안을 포함한 정직한 부정입니다. Claude는 Ruby SDK를 지어내지 않았습니다. Knowledge Base가 실제로 말하는 내용을 전달하고 대신 REST 경로를 가리켰습니다.
같은 교환은 Inbox에서 일반 MCP 대화로 대기하고 있습니다. 따라서 에이전트가 받은 질문과 답변을 볼 수 있습니다.
같은 대화의 사용자 쪽입니다. 에이전트는 Knowledge Base에서 답했고, 다루지 않는 내용을 명확히 말했으며, 환각 SDK는 없습니다.
이것이 1단계의 의도적인 공백이 주는 효과입니다. 이제 에이전트에서 모델, 사용자까지 정직성 체인이 끝까지 작동하는 것을 확인했습니다.
4단계: ChatGPT에서 연결하기
ChatGPT는 사용자 지정 MCP 커넥터를 developer mode 뒤에 둡니다. 유료 플랜이 필요합니다. Settings로 이동한 다음 Apps, Advanced settings를 열고 Developer mode를 켭니다. ChatGPT는 이를 “elevated risk”라고 표시합니다. 개발자 모드에서는 커넥터가 도구가 허용하는 모든 것을 할 수 있으므로, ChatGPT는 사용자가 의도적으로 동의하기를 원합니다.
Developer mode는 ChatGPT에서 사용자 지정 커넥터를 잠금 해제합니다. 연결하기 전에 에이전트의 지식과 활성화된 Actions를 검토하세요.
이제 Create app을 클릭합니다. 연결을 Server URL로 설정하고, MCP 서버 URL을 붙여 넣고, (public 에이전트의 경우) No Auth를 선택합니다.
이름을 지정하고, URL을 붙여 넣고, 확인란을 선택한 다음 Create를 누릅니다. 위험 문구는 ChatGPT의 것이며, 타당합니다. 신뢰하는 서버만 추가하세요. 사용자의 서버는 사용자가 제어하는 것입니다.
ChatGPT가 최종 확인을 표시하고, 한 번 클릭하면 커넥터가 추가됩니다.
Connect를 누르면 Orbit은 이제 ChatGPT가 어떤 대화에서든 호출할 수 있는 도구입니다.
ChatGPT 관련 참고 사항 두 가지입니다.
- ChatGPT가 도구 호출 승인을 요청하면, 전송되는 질문뿐 아니라 에이전트의 활성화된 Actions도 함께 고려하세요. 해당 Actions는 연결된 서비스에서 변경을 수행할 수 있습니다.
- ChatGPT는 OpenAI 서버에서 연결하며, Claude가 Anthropic 서버에서 연결하는 것과 같습니다. Quickchat AI가 MCP 서버를 호스팅하므로 둘 다 접근할 수 있습니다. 이것이 더 이상 사용자가 구축하지 않아도 되는 부분입니다.
같은 속도 제한 질문을 하면, 이번에는 ChatGPT에서 동일하게 Knowledge Base에 근거한 답변을 받습니다.
“Called tool” 다음 같은 사실입니다. 60/120, 프로젝트별 제한, 세 리전입니다. ChatGPT는 아티클에 있으므로 HTTP 429 세부 정보도 전달합니다.
5단계: Cursor에서 연결하기
Cursor에서 Settings, Tools & MCPs로 이동하고 Add Custom MCP를 클릭합니다. Cursor가 편집할 ~/.cursor/mcp.json을 엽니다. 원격 MCP 서버는 하나의 "url" 항목입니다.
{
"mcpServers": {
"orbit": {
"url": "https://app.quickchat.ai/mcp/<your-agent-id>"
}
}
}
파일을 저장하면 Cursor가 인식합니다. orbit 서버가 Tools & MCPs 아래에 ask_orbit 도구와 함께 나타납니다. Agent 창에서 Orbit 질문을 하면, 처음 도구를 호출하려 할 때 Cursor가 승인을 요청합니다.
Cursor는 도구를 실행하기 전에 에이전트에 보내려는 정확한 메시지를 보여줍니다. 한 번 승인하면 인라인으로 답합니다.
Cursor는 에디터 안에서 같은 도구를 호출합니다. “These limits and regions come from Orbit’s own docs via the Orbit MCP server,“라고 별도 요청 없이 설명합니다.
Cursor에서는 개발자 대상의 효과가 명확해집니다. 코딩 중에 “속도 제한에 걸리면 Orbit이 무엇을 반환하지?”라고 묻고, 에디터를 떠나지 않고 Orbit의 실제 문서에서 온 답을 받습니다. 제품에 SDK가 있다면, 이것이 사용자의 새로운 문서 표면입니다.
보너스: 터미널 사용자를 위한 명령 하나
Claude Code(Anthropic의 CLI)는 단일 명령으로 원격 MCP 서버를 추가합니다. 서버 상태를 빠르게 확인하는 가장 빠른 방법이기도 합니다.
claude mcp add --transport http orbit https://app.quickchat.ai/mcp/<your-agent-id>
그런 다음 세션에서 Orbit 질문을 하면 ask_orbit을 호출하고, 데스크톱 클라이언트와 동일하게 에이전트의 답변을 전달합니다. 다른 사람에게 알리기 전에 서버가 살아 있는지 확인하는 가장 빠른 종단 간 검사이기도 합니다.
프로토콜 자체를 보고 싶다면, 서버는 HTTPS 위에서 일반 JSON-RPC를 말합니다. 다음은 모든 터미널에서 실행할 수 있는 전체 핸드셰이크입니다.
curl -X POST https://app.quickchat.ai/mcp/<your-agent-id> \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
응답에는 Configure MCP에서 작성한 이름, 설명, 입력 스키마와 함께 단일 도구가 나열됩니다. 호출은 요청 하나를 더 보내면 됩니다.
curl -X POST https://app.quickchat.ai/mcp/<your-agent-id> \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"ask_orbit","arguments":{"message":"What are Orbit rate limits on the free plan?"}}}'
답변은 도구 결과의 {"reply": "..."}로 돌아옵니다. 빠른 테스트에는 SDK도 세션 절차도 필요 없습니다. Mcp-Session-Id 헤더는 클라이언트가 후속 질문을 하나의 대화로 스레드 처리하려 할 때만 중요합니다.
Inbox에서 두 AI의 대화 보기
이 설정을 운영할 때 흥미로운 부분입니다. Inbox를 열고 MCP 트래픽이 만든 대화를 확인하세요. 일반 대화이며, MCP 소스로 표시되고, 위젯 및 채널 트래픽과 나란히 있습니다.
모든 MCP 교환은 Inbox의 일반 대화입니다. 전체 기록과 이미 추적하던 모든 것이 포함됩니다.
Inbox는 어떤 앱이 호출했는지도 기록합니다. 대화를 열고 Details를 확인하세요. Channel 필드에 클라이언트 이름이 표시됩니다. Cursor는 자신을 식별하므로 대화가 **“MCP Cursor”**로 표시됩니다. ChatGPT와 Claude는 구별 이름을 보내지 않으므로 일반 “MCP” 아래에 들어옵니다.
Cursor가 구동한 대화입니다. “MCP Cursor”로 태그되고, 다른 자동 답변처럼 AI Agent가 처리합니다.
이제 이것을 정말 새롭게 만드는 반전이 있습니다. “방문자”는 사람이 아닙니다. 호출하는 AI가 사용자 대신 자기 말로 작성한 것입니다. 사람은 Cursor나 Claude에 무언가를 입력했습니다. 에이전트에 도달하는 것은 그 AI가 다시 표현한 내용입니다. 때로는 사용자의 원문과 거의 같고, 때로는 AI가 완전히 새롭고 정돈된 메시지를 작성합니다. 실제 예 두 가지를 나란히 보겠습니다.
왼쪽: Cursor는 질문을 거의 그대로 전달했습니다. 오른쪽: Claude는 캐주얼한 데모 요청에서 정중한 전체 메시지를 작성했습니다. 어느 쪽이든 에이전트가 받은 텍스트는 아무도 직접 입력하지 않았습니다. 호출하는 AI의 말입니다.
이것이 Inbox가 이제 기록하는 내용입니다. 제품에 관한 두 AI 시스템 간의 협상이며, 묘하게 업무적입니다. 두 대화를 나란히 놓으면 손기술이 분명해집니다. 왼쪽은 개발자가 Claude에 입력한 내용과 Claude의 답변입니다. 오른쪽은 Quickchat AI Inbox 안의 같은 교환으로, Claude가 작성한 메시지가 “방문자”로 도착하고 에이전트가 다른 방문자처럼 답합니다.
두 공간, 하나의 대화입니다. 사용자는 Claude와 대화하고, Claude는 요청을 다시 작성해 에이전트와 대화합니다. 오른쪽의 다듬어진 “방문자” 메시지는 사람의 문장이 아니라 Claude의 문구이며, 에이전트는 “Jan”에게 감사하고 다른 방문자처럼 답합니다.
Inbox에서 이미 사용하는 모든 기능이 적용됩니다. Why AI said that 보기, 주제, 평점, 내보내기입니다. MCP 트래픽은 별도 세계가 아니라 하나의 채널입니다.
에이전트는 MCP에서도 강력한 기능을 유지합니다
MCP 호출은 웹사이트 위젯과 같은 답변 파이프라인을 실행하므로, 사이트용으로 설정한 기능은 ChatGPT나 Claude가 호출할 때도 작동합니다. 가장 명확한 시연은 리드 수집입니다. Orbit의 에이전트는 Smart Data Gathering을 사용합니다. Actions & MCPs 페이지에서 Smart Data Gathering 카드를 열고 Edit Action을 클릭한 뒤 구성합니다. 캠페인 이름은 “Demo and Scale plan leads”로 지정하고, 수집할 필드 두 개(email과 company)를 추가했으며, 일반 문서 질문이 아니라 개발자가 데모, Scale 가격 또는 속도 제한 상향을 요청할 때 only 묻도록 지시했습니다.
실제 편집기입니다. 캠페인 이름, 필드, “ask only when…” 설명은 모두 사용자가 설정합니다. 여기에서 리드 수집 동작이 나오며, 웹사이트에서 사용할 설정과 같습니다.
이제 종단 간으로 작동하는 것을 보겠습니다. 개발자가 Claude에서 세부 정보를 자발적으로 제공하고, 에이전트가 Knowledge Base에서 답하며, Smart Data Gathering이 같은 턴에서 대화에 연락처를 저장합니다. 메시지에 바로 표시됩니다.
Inbox의 Claude 작성 메시지이며, 다른 방문자처럼 답변되었습니다. 강조된 “1 action called” 표시는 Smart Data Gathering이 바로 같은 턴에서 리드를 수집했음을 나타냅니다.
그런 다음 팀은 Details 패널과 리드 내보내기에서 수집된 연락처를 봅니다.
대화의 Details 패널에 있는 수집된 리드입니다. 패널은 공간 때문에 긴 이메일을 줄입니다. 전체 주소는 메시지 자체에 있습니다.
Claude를 통해 영업 리드가 도착했습니다. 폼도, 위젯도, 웹사이트 방문도 없습니다.
에이전트 도구키트의 나머지도 마찬가지입니다. 사용자 지정 AI Actions는 질문이 MCP를 통해 도착해도 위젯에서와 정확히 동일하게 실행됩니다. 따라서 기능 요청을 스프레드시트에 기록하거나 내부 API를 호출하는 에이전트는 어떤 AI 앱이 질문했든 계속 그렇게 합니다. Inbox는 해당 호출도 같은 방식으로 표시합니다(메시지의 “N actions called”). 따라서 실행된 내용을 감사할 수 있습니다.
호출하는 AI가 전달하는 것과 전달하지 않는 것
이 섹션은 원래 작성할 계획이 없었습니다. 첫 테스트 실행에서 예상치 못한 결과가 나왔고, 그 놀라움이 이 글에서 가장 유용한 내용이기 때문에 존재합니다.
실행 1: 호출하는 AI가 문제를 지적했습니다. Orbit의 Smart Data Gathering은 연락처 정보를 적극적으로 요청하도록 설정되어 있었고, MCP Description에는 에이전트가 문서 질문에 답한다고만 적혀 있었습니다. 우리는 Claude에 무해한 속도 제한 질문을 했습니다. Claude는 사실을 올바르게 전달한 다음, 에이전트가 덧붙인 리드 수집 질문을 표시했습니다.

다시 읽어보세요. 호출하는 AI가 우리 자신의 리드 수집을 프롬프트 인젝션 시도로 표시했습니다. 데모를 위해 세부 정보를 전달해 달라고 명시적으로 요청했을 때는 더 분명하게 거부했습니다. 문서 Q&A 도구가 갑자기 개인 정보를 요청하는 것은 합법적인 채널이 아니었습니다.
진단은 한 번 보면 유지해야 할 사고 모델이 됩니다. 호출 모델에게 도구의 선언된 Description은 계약이고 도구의 출력은 데이터입니다. 우리의 계약에는 “문서 질문에 답한다”고 되어 있었으므로, 데이터 안에 묻힌 연락처 정보 요청은 약속된 적이 없었고 인젝션 공격처럼 보였습니다. 계약의 한 문장을 바꾸자 같은 답변이 무시 대상에서 신뢰 대상으로 바뀌었습니다.
실행 2에서는 Description에 한 문장을 추가했습니다(“it can also register a follow-up request: pass along the user’s contact details”). 같은 데이터지만 이제 계약 안에 있으므로, Claude가 전달했고 리드가 수집되었습니다.
한 가지 성가신 점이 남았습니다. 캠페인이 여전히 적극적으로 묻도록 설정되어 있으면, 일반 질문에도 리드 수집 유도가 붙었습니다. 그래서 실행 3에서는 개발자가 데모, 가격 또는 제한 상향을 명시적으로 요청할 때 only 묻도록 캠페인 설명의 범위를 좁혔습니다. 그 뒤에는 일반 질문에는 일반 답변이 나오고, 호출하는 AI가 자체 문구로 후속 경로를 제안하기 시작했습니다. “If you outgrow these limits, I can pass along a request to Orbit’s team for a rate limit increase or Scale plan pricing.”

이를 묶는 규칙은 다음과 같습니다. 세 Configure MCP 문자열(Name, Description, Command)은 에이전트가 호출되는지와 언제 호출되는지를 결정하고, 에이전트 자체 구성은 호출된 뒤 무엇을 말하는지를 결정합니다. 동작이 잘못된 것처럼 보이면 먼저 두 레이어 중 어느 쪽이 만든 결과인지 물어보세요.
Human handoff: AI 앱을 떠나지 않고 에스컬레이션하기
Human Handoff도 MCP에서 작동하며, 실제로 유용합니다. 사람이 필요한 질문이 사용자가 ChatGPT나 Claude를 떠나지 않아도 팀에 도달할 수 있습니다. 우리는 Claude에 문서가 답할 수 없는 내용을 물었습니다(방위 산업 고객을 위한 서명된 DPA와 온프레미스 배포). Orbit은 자신의 한계를 인식하고, 그렇게 말한 다음, 인계했습니다.
에이전트는 모르는 것을 알고 깔끔하게 에스컬레이션했습니다. 요청과 수집한 연락처 정보는 팀이 처리할 수 있도록 Inbox에 미할당 대화로 들어갑니다.
이것이 이점입니다. 사람이 필요한 리드가 이제 큐에 있으며, 수집되어 있고, 팀이 후속 조치하는 데 필요한 모든 것이 있습니다. MCP는 하나의 질문과 하나의 답변이므로, 후속 조치 자체는 AI 앱 안이 아니라 사용자 쪽에서(이메일, 통화) 일어납니다. 그래서 handoff가 연락처 정보를 수집합니다. 빠르고 문서화된 답변이면 충분한 많은 질문은 에이전트가 처리하고, 사람이 필요한 소수는 사용자에게 라우팅합니다.
안전한가요?
짧게 말하면 웹사이트 위젯만큼 안전하며, 기본값은 더 엄격합니다. 도구 목록이 경계이고 프롬프트가 경계가 아닌 이유는 패키지 관리자 내부의 70,000개 메시지를 참고점으로 삼으세요.
- 기본적으로 비공개입니다. 새 MCP 서버는 로그인을 요구합니다. AI 앱은 표준 Quickchat AI 로그인으로 리디렉션하고, 워크스페이스 멤버만 통과합니다. 어떤 것도 노출하지 않고 내부 문서 오라클을 구축, 테스트, 사용할 수 있습니다. 인증되지 않은 요청은 일반 401 challenge를 받습니다.
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer error="invalid_token",
resource_metadata="https://app.quickchat.ai/.well-known/oauth-protected-resource/mcp/<id>"
- URL은 비밀이 아니라 주소입니다. URL의 에이전트 id는 웹사이트 위젯이 공개적으로 노출하는 것과 같은 식별자입니다. 그것을 안다고 충분한 것은 아닙니다. visibility 토글이 액세스 제어입니다.
- 도구는 에이전트에 질문합니다. 그 효과는 에이전트의 기능에 따라 달라집니다. 이 채널은 별도의 계정 관리 도구를 노출하지 않습니다. 대화를 저장하고, AI 크레딧을 사용하고, Knowledge Base에서 답하고, 활성화된 Actions를 실행합니다. Action은 외부 시스템을 변경할 수 있으므로, 액세스를 공유하기 전에 권한과 에이전트가 사용할 수 있는 지식을 검토하세요. 질문 답변 인터페이스가 읽기 전용 동작을 보장하지는 않습니다.
- public으로 전환하는 것은 청구 결정이기도 합니다. **Require sign-in (private)**를 끄면 링크를 가진 누구나 로그인 없이 에이전트를 사용할 수 있습니다. 이것이 public 도구 공유의 목적이며, 위젯과 같은 규칙이 적용됩니다. 모든 답변은 플랜의 메시지 크레딧을 사용하고, 모든 호출자가 에이전트의 속도 제한을 공유합니다(한 호출자가 모두 소모하지 못하도록 당사 측에서 분당 및 일일 상한을 둡니다). 크레딧이 소진되면 도구는 조용히 실패하지 않고 에이전트를 현재 사용할 수 없다고 답하기 시작합니다.
- 들어오는 질문은 신뢰할 수 없는 입력으로 취급하세요. 호출 모델은 에이전트의 예상치 못한 요청을 필터링할 수 있지만, 이는 사용자의 Actions에 대한 보안 경계가 아닙니다. 연결된 서비스의 범위를 제한하고 해당 호출을 받는 시스템에서 권한 부여를 강제하세요. public 호출자는 에이전트의 활성화된 기능이 허용하는 모든 것을 요청할 수 있습니다. 지시문만으로는 private 데이터나 권한 있는 작업을 보호해서는 안 됩니다.
운영 시작
출시 체크리스트는 순서대로 다음과 같습니다.
- 지식이 먼저입니다. 에이전트가 다른 사람들의 AI 앱 안에서 인용될 예정입니다. Knowledge Base가 반복되기를 원하는 사실을 명시하는지 확인하고 배포하세요.
- 세 문자열을 API 계약처럼 작성하세요. Name, Description, Command입니다. 리드 수집을 사용한다면 후속 기능을 선언하세요.
- 비공개로 테스트하세요. Require sign-in을 켜 둔 채 자신의 Claude 또는 ChatGPT를 연결하고, 위 표의 다섯 가지 동작을 실행하세요. 다루는 질문, 다루지 않는 질문, 리드, handoff, 후속 질문입니다.
- Inbox를 하루 동안 관찰하세요. Inbox는 MCP 트래픽을 표시하고(Cursor는 구체적으로 이름을 표시), 기록은 호출하는 AI가 어떤 식으로 표현하는지 알려줍니다. 어떤 사양보다 실제 교환 10개에서 더 많이 배웁니다.
- 그런 다음 public 여부를 결정하세요. 링크를 가진 누구에게나 사용자의 크레딧으로 제공하고 싶을 때만 토글을 바꾸세요. 제품 뒤의 문서 어시스턴트라면 public이 보통 맞습니다. 내부 지식 오라클이라면 private 자체가 기능입니다.
- 사용자가 이미 있는 곳에 URL을 공유하세요: 문서 페이지, README, Discord. URL이 전체 온보딩입니다.
관련 가이드
- 원격 MCP 서버에서 Agent에 실시간 도구 제공하기: 반대 방향, 실습
- AI Agent를 Google Sheets에 연결하기
- AI Discord moderation bot 만들기
- 반대 방향: Shopify의 MCP를 소비하는 에이전트
- Notion의 MCP 서버를 소비하는 헬프 센터 에이전트
자주 묻는 질문
AI Agent용 MCP 서버란 무엇인가요?
MCP(Model Context Protocol) 서버는 AI Agent의 기능을 다른 AI 앱이 호출할 수 있는 도구로 노출하는 표준 엔드포인트입니다. 사용자가 Quickchat AI Agent의 서버를 ChatGPT, Claude, Cursor 같은 호환 앱에 연결하면, 앱은 질문 답변 도구를 발견하고 Knowledge Base에서 답변을 요청할 수 있습니다. 웹사이트 위젯과 같은 개념이지만, 호출자가 사람이 아니라 다른 AI 앱이고 전체 연결이 호스팅된 URL 하나라는 점이 다릅니다.
AI Agent에 MCP 서버를 제공하려면 코딩하거나 호스팅해야 하나요?
아니요. 모든 Quickchat AI Agent에는 호스팅된 MCP 서버가 내장되어 있습니다. 대시보드에서 켜고, https://app.quickchat.ai/mcp/your-agent-id 형식의 URL을 복사한 다음 ChatGPT, Claude, Cursor 또는 다른 MCP 클라이언트에 붙여 넣으면 됩니다. 호스팅과 유지 관리는 대신 처리되며, 연결에는 코드가 필요 없습니다.
ChatGPT, Claude 또는 Cursor가 제 지식 베이스에서 질문에 답할 수 있나요?
예. Quickchat AI Agent의 MCP 서버 URL을 커넥터로 연결하면 AI 앱은 에이전트에 질문하는 도구 하나를 받습니다. 에이전트는 Knowledge Base에서 답하고 앱은 그 답변을 전달하므로, 사용자는 모델의 추측이 아니라 문서화된 사실을 받습니다.
AI Agent를 MCP 서버로 노출하는 것은 무료인가요?
예. MCP는 Free 플랜을 포함한 모든 Quickchat AI 플랜에 포함되어 있으므로, 무료 계정으로 이 가이드 전체를 따라 할 수 있습니다. 에이전트가 생성하는 각 답변은 웹사이트 위젯의 답변과 동일하게 플랜의 AI 메시지 크레딧을 사용합니다.
어떤 ChatGPT 플랜이 사용자 지정 MCP 커넥터를 지원하나요?
사용자 지정 MCP 커넥터는 ChatGPT의 개발자 모드 뒤에 있으며, 유료 ChatGPT 플랜이 필요합니다. Claude는 무료 플랜에서 사용자 지정 커넥터를 지원하고(1개로 제한), Cursor는 모든 플랜에서 원격 MCP 서버를 지원합니다. 어떤 앱이 연결하든 Quickchat AI 쪽 동작은 동일합니다.
MCP 서버는 실제로 무엇을 할 수 있나요? 제 Quickchat AI 계정을 변경할 수 있나요?
에이전트에 질문하는 도구 하나를 노출합니다. 설정 편집, Knowledge Base 관리 또는 다른 에이전트 관리를 위한 별도의 계정 관리 도구는 노출하지 않습니다. 에이전트는 Knowledge Base에서 답하고, 대화를 저장하고, AI 크레딧을 사용하며, 외부 시스템을 변경하는 호출을 포함해 활성화된 Actions를 실행할 수 있습니다. 액세스를 공유하기 전에 이 에이전트가 사용할 수 있는 지식과 Actions를 검토하세요. 메시지 크레딧 제한과 속도 제한은 계속 적용됩니다.
MCP 서버 URL은 비밀인가요? 누군가 발견하면 어떻게 되나요?
URL에는 에이전트의 공개 scenario id가 포함됩니다. 이는 웹사이트 위젯이 이미 노출하는 것과 같은 식별자이므로, 비밀이 아니라 주소로 취급하세요. 액세스는 Require sign-in (private) 토글로 제어됩니다. Private(기본값)은 로그인한 팀 멤버만 연결할 수 있음을 의미합니다. Public은 링크를 가진 누구나 에이전트를 사용할 수 있고, 모든 답변 비용이 귀하에게 청구되며, 호출자가 에이전트의 속도 제한을 공유한다는 뜻입니다.
에이전트가 MCP를 통해 호출될 때도 AI Actions와 human handoff가 작동하나요?
예. MCP 호출은 웹사이트 위젯과 동일한 답변 파이프라인을 거치므로, ChatGPT, Claude 또는 Cursor가 에이전트를 호출할 때 Knowledge Base 답변, 사용자 지정 AI Actions, Smart Data Gathering(리드 수집), Human Handoff가 모두 실행됩니다. 예를 들어 handoff는 사용자가 AI 앱을 떠나지 않아도 대화와 수집된 연락처 정보를 Inbox에 넣어 팀이 후속 조치를 할 수 있게 합니다.
제 데이터나 지식 베이스를 ChatGPT에 연결하려면 어떻게 하나요?
데이터를 Quickchat AI Agent의 Knowledge Base에 넣고, MCP 서버를 켠 다음, 서버 URL을 ChatGPT에 커넥터로 추가하세요. 그러면 ChatGPT는 에이전트에 질문하는 도구를 받으며, 에이전트는 귀하의 데이터에서 답합니다. 코드는 필요 없습니다. Knowledge Base가 데이터 소스이고 MCP 서버가 연결이므로, 추가로 배선할 것이 없습니다. 같은 URL은 Claude와 Cursor에서도 작동합니다.
코드를 작성하지 않고 MCP 서버를 만들려면 어떻게 하나요?
직접 만들 필요가 없습니다. 모든 Quickchat AI Agent는 이미 호스팅된 MCP 서버입니다. 대시보드에서 지식을 추가하고, MCP 서버를 켜고, 단일 질문 도구의 이름을 지정한 뒤 URL을 복사하면 됩니다. Quickchat AI가 서버를 실행하고 유지 관리하므로, 노코드 MCP 서버는 몇 분이면 준비됩니다.
ChatGPT 또는 Claude가 제 에이전트의 후속 질문 전달을 거부하는 이유는 무엇인가요?
호출하는 AI가 도구의 설명을 계약처럼 취급하기 때문입니다. 에이전트가 연락처 정보를 요청하지만 MCP 설명에는 문서 질문에만 답한다고 되어 있으면, 호출 모델은 그 예상치 못한 요청을 가능한 프롬프트 인젝션으로 읽고 필터링합니다. MCP Description 필드에 해당 기능을 설명하고 데이터 수집을 명시적 요청으로 제한하면 클라이언트가 의도된 동작을 이해하는 데 도움이 됩니다. 그래도 후속 질문을 전달할지 또는 권한을 요청할지는 클라이언트가 결정합니다.
에이전트를 MCP 서버로 노출하는 것과 MCP 서버에 연결하는 것의 차이는 무엇인가요?
방향입니다. 이 가이드는 제공에 관한 것입니다. 에이전트가 ChatGPT, Claude, Cursor가 호출하는 도구가 됩니다. 반대 방향은 소비입니다. 예를 들어 에이전트가 Shopify의 MCP 서버 같은 다른 사람의 MCP 서버를 도구로 호출해 실시간 스토어 데이터에 따라 동작합니다. Quickchat AI Agent는 두 가지를 동시에 할 수 있습니다.
ChatGPT 또는 Claude가 실제로 제 에이전트에 무엇을 물었는지 어떻게 확인하나요?
Quickchat AI Inbox를 여세요. 모든 MCP 교환은 MCP 소스 배지가 있는 대화로 기록되며, 방문자 메시지는 호출하는 AI가 쓴 문장입니다. 보통 해당 AI의 사용자가 입력한 내용을 바꿔 쓴 것입니다. 같은 세션의 후속 질문은 같은 대화에 들어갑니다.
요약
이제 Quickchat AI Agent는 양방향으로 작동합니다. 사용자의 채널에서 사용자와 대화하고, 다른 AI에게 도구로 답합니다. 전체 통합은 호스팅된 URL 하나이며, 기본적으로 비공개이고, 무료 티어가 포함됩니다. 이미 유지 관리하는 지식은 사용자가 제품에 대해 물을 때 ChatGPT, Claude, Cursor가 인용하는 대상이 됩니다. 리드는 다른 사람들의 AI 앱 안에서 도착하고, 모든 교환은 두 AI 사이의 읽을 수 있는 대화로 Inbox에 남습니다.
구축에는 30분이 걸립니다. 늘 그렇듯 흥미로운 작업은 단어입니다. 호출 모델에게 에이전트의 용도를 알려주는 세 문자열과, 전달할 가치가 있는 답변을 만드는 지식입니다.
설정 참고: 문서에서 MCP 서버 URL 가져오기를 확인하세요.