https://www.gpters.org/nocode/post/mcp-organize-pretending-learned-rXXvKZgwgxifwlc
코드를 보면서 어떻게 MCP 서버가 동작하는지 찾아본 사례 입니다.
🧱 MCP 핵심 구성요소
🔁 전체 흐름 요약(유저 -> AI -> MCP)
🔍 Firecrawl MCP 코드 구조
1. 🧰 Client – 도구 정의
const SCRAPE_TOOL: Tool = {
name: 'firecrawl_scrape',
description: '웹페이지 스크랩 도구',
inputSchema: {
type: 'object',
properties: {
url: { type: 'string' },
formats: { type: 'array', items: { type: 'string' } },
...
},
required: ['url']
}
};
📌 이 정의는 MCP 서버가 Host에게 알려주는 도구 설명서 역할을 합니다.
2. 🖥️ Server – 도구 요청 처리
server.setRequestHandler(CallToolRequestSchema, async (request) => {
if (request.params.name === 'firecrawl_scrape') {
const { url, ...options } = request.params.arguments;
const response = await client.scrapeUrl(url, options);
return {
content: [{ type: 'text', text: response.markdown }],
isError: false,
};
}
});
📌 이 부분이 MCP Server의 핵심:
- Host의 호출 요청을 받아서
- Firecrawl SDK로 API 호출
- 응답을 MCP 형식으로 가공해 반환
3. 🔧 Firecrawl Client – 내부 API 실행
const client = new FirecrawlApp({
apiKey: process.env.FIRECRAWL_API_KEY,
});
- 실제 Firecrawl 기능(API)을 호출하는 SDK 인스턴스
- MCP Server 내부에서 도구 호출 시 사용됨
✅ Host, Client, Server 매핑 요약
|MCP 역할|코드 내 요소|
🧾 결론 정리
- Firecrawl은 MCP Server로 구현되어, 다양한 웹 크롤링 기능을 도구처럼 제공한다.
- 코드 상에서는:
- Tool 정의 → Client
- 호출 처리 → Server
- 실제 기능 → Firecrawl SDK
발표 요점: AI에게 Firecrawl을 "자연어로 부를 수 있는 도구"로 바꿔주는 구조