๊ธฐ์กด์ stdio ๋ฐฉ์์ผ๋ก ๋์ด ์๋ ์ ํ ํธ์คํ ํ๋ firecrawl-mcp๋ฅผ sse ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝํ๋ ์์ ์ ์งํํ์ต๋๋ค.
https://www.gpters.org/dev/post/private-cost-firecrawl-self-PSp0iLLwBupaVBf
stdio ๋ฐฉ์๊ณผ sse ๋ฐฉ์
STDIO (Standard Input/Output)
STDIO๋ ํ์ค ์ ๋ ฅ/์ถ๋ ฅ ์คํธ๋ฆผ์ ํตํด ํต์ ํ๋ ๋ฐฉ์์ ๋๋ค. ์ด ๋ฐฉ์์์ ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ํ์ ํ๋ก์ธ์ค๋ก ์คํ๋ฉ๋๋ค.
ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ stdin์ ํตํด JSON ๋ฉ์์ง๋ฅผ ๋ฐ๊ณ stdout์ ํตํด ์๋ตํฉ๋๋ค
๋ฉ์์ง๋ ์ค๋ฐ๊ฟ์ผ๋ก ๊ตฌ๋ถ๋์ด์ผ ํฉ๋๋ค
์๋ฒ๋ ๋ก๊น ์ ์ํด stderr๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค
์๋ฒ๋ ์ ํจํ MCP ๋ฉ์์ง๊ฐ ์๋ ๋ด์ฉ์ stdout์ ์ฐ๋ฉด ์ ๋๋ฉฐ, ํด๋ผ์ด์ธํธ๋ ์ ํจํ MCP ๋ฉ์์ง๊ฐ ์๋ ๋ด์ฉ์ ์๋ฒ์ stdin์ ์ฐ๋ฉด ์ ๋ฉ๋๋ค
SSE (Server-Sent Events)
SSE๋ HTTP ์์ฒญ์ ํตํด ํต์ ํ๋ ๋ฐฉ์์ผ๋ก, ํด๋ผ์ด์ธํธ-์๋ฒ ํต์ ์๋ HTTP POST ์์ฒญ์, ์๋ฒ-ํด๋ผ์ด์ธํธ ํต์ ์๋ Server-Sent Events๋ฅผ ์ฌ์ฉํฉ๋๋ค.
ํด๋ผ์ด์ธํธ๋ ํ์ค HTTP POST ์์ฒญ์ ํตํด ๋ช ๋ น์ ์๋ฒ์ ์ ์กํฉ๋๋ค
์๋ฒ๋ SSE ์ฐ๊ฒฐ์ ์ ์งํ์ฌ ํด๋ผ์ด์ธํธ์ ๋ฉ์์ง๋ฅผ ํธ์ํฉ๋๋ค
๋ถ์ฐ ์ํคํ ์ฒ์ ์ฌ๋ฌ ๋์ ํด๋ผ์ด์ธํธ๋ฅผ ์ง์ํฉ๋๋ค
ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ ๋ถ๋ฆฌ๋ ํ๋ก์ธ์ค๋ก ์คํ๋ ์ ์์ผ๋ฉฐ, ์ฌ์ง์ด ๋ถ๋ฆฌ๋ ๋ ธ๋์์๋ ์คํ ๊ฐ๋ฅํฉ๋๋ค
๊ฐ๋ฐ์ Windsurf๋ก ์งํ
MCP ๊ณต์ python SDK ๋ด์ฉ ์ค sse ๊ด๋ จ ์ฝ๋, md ํ์ผ๋ง Windsurf์ ์ถ๊ฐํ๊ณ ์ง์ ์ฐธ์กฐํ๋ ๋ฐฉ์์ผ๋ก ์งํ
ํฐ ๋ฌด๋ฆฌ ์์ด ์๋ฃ
๊ฐ๋ฐ์ด ์๋ฃ๋์ผ๋ ํ ์คํธ
MCP ์๋ฒ ์คํ
python firecrawl_mcp.py --transport sse --port 8000
MCP Inspector๋ ๊ฐ๋ฐ์๊ฐ MCP ์๋ฒ ๊ตฌํ์ ํ ์คํธํ๊ณ ๋๋ฒ๊น ํ ์ ์๊ฒ ํด์ฃผ๋ ๋๊ตฌ
์ค์นํ ํ์ ์์ด ๋ค์ ๋ช ๋ น์ด๋ก ๋ฐ๋ก ์ฌ์ฉ ๊ฐ๋ฅ
npx @modelcontextprotocol/inspector node build/index.js
ํ์๋๋ ์ฃผ์๋ก ์ ์
Transport Type์ SSE๋ก ๋ณ๊ฒฝ
๊ตฌ๋์ํจ MCP ์๋ฒ ์ฃผ์ ์ ๋ ฅ
Connect
๋ฒํผ์ผ๋ก MCP ์๋ฒ ์ฐ๊ฒฐTools
ํญ ์ ํList Tools
๋ก ์ฌ์ฉํ ์ ์๋ Tool ๋ฆฌ์คํธ ํ์ธํ ์คํธํ Tool ์ ํ
์ฃผ์ ์ ๋ ฅ
์คํ ํ ์คํธ
Claude Desktop ์ฐ๋
๊ธฐ๋ณธ์ ์ผ๋ก Claude Desktop์ stdio ๋ฐฉ์๋ง ์ง์
mcp-remote ๋ฅผ ์ฌ์ฉ sse ๋ฐฉ์ ์ ์ฉ ๊ฐ๋ฅ
์ค์น
npm install -g mcp-remote
์ค์
"mcpServers": {
"firecrawl_mcp": {
"command": "npx",
"args": [
"mcp-remote",
"http://localhost:8000/firecrawl/sse"
]
}
}
๊ฒฐ๋ก
์๊ฐ ๋ณด๋ค ์ฝ๊ฒ ์งํ๋์ผ๋ฉฐ ์์ผ๋ก sse ๋ฐฉ์์ผ๋ก ๊ธฐ์กด์ ๊ฐ๋ฐํด์ ์ฌ์ฉํ๋ Obsidisan MCP ์๋ฒ๋ sse ๋ฐฉ์์ผ๋ก ๊ต์ฒดํ ์์ ์ ๋๋ค.