π Sample MCP Server
company-info-mcp ꡬ쑰λ₯Ό κΈ°λ°μΌλ‘ ν μν MCP μλ²μ λλ€.
μ΄ νλ‘μ νΈλ λ€λ₯Έ MCP νλ‘μ νΈλ₯Ό λ§λ€ λ μ°Έκ³ ν μ μλ ν νλ¦Ώμ λλ€.
β¨ μ£Όμ κΈ°λ₯
λλ€ λͺ μΈ μ‘°ν: λ¬΄λ£ Quote APIλ₯Ό μ¬μ©νμ¬ λλ€ λͺ μΈ κ°μ Έμ€κΈ°
λͺ μΈ κ²μ: ν€μλλ‘ λͺ μΈ κ²μ
IDλ‘ μ‘°ν: νΉμ IDμ λͺ μΈ μ‘°ν
π οΈ κΈ°μ μ€ν
MCP Framework: FastMCP
HTTP Server: FastAPI
Data Validation: Pydantic
HTTP Client: Requests
Caching: cachetools (TTL μΊμ)
Environment: Python-dotenv
π¦ μ€μΉ λ° μ€μ
1) μμ‘΄μ± μ€μΉ
2) νκ²½ λ³μ μ€μ (μ ν)
νλ‘μ νΈ λ£¨νΈμ .env νμΌμ μμ±:
.env νμΌ λ΄μ©:
π‘ μ΄ μμ λ λ¬΄λ£ APIλ₯Ό μ¬μ©νλ―λ‘ API ν€κ° νμ μμ΅λλ€.
3) μλ² μ€ν
MCP μλ² λͺ¨λ (stdio)
HTTP μλ² λͺ¨λ
HTTP μλ²λ κΈ°λ³Έμ μΌλ‘ http://localhost:8098μμ μ€νλ©λλ€.
π MCP ν΄λΌμ΄μΈνΈ μ€μ
Claude Desktop
claude_desktop_config.json νμΌμ λ€μμ μΆκ°:
μ€μ νμΌ μμΉ:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonMac:
~/Library/Application Support/Claude/claude_desktop_config.json
μ€μ μμ:
π§° μ¬μ© κ°λ₯ν MCP λꡬ
health
μλΉμ€ μν νμΈ
get_random_quote_tool
λλ€ λͺ μΈμ μ‘°νν©λλ€.
search_quotes_tool
ν€μλλ‘ λͺ μΈμ κ²μν©λλ€.
νλΌλ―Έν°:
keyword(νμ): κ²μν ν€μλlimit(μ ν): κ²°κ³Ό κ°μ (κΈ°λ³Έκ°: 10, μ΅λ: 50)
get_quote_by_id_tool
IDλ‘ νΉμ λͺ μΈμ μ‘°νν©λλ€.
νλΌλ―Έν°:
quote_id(νμ): μΈμ©κ΅¬ ID
π‘ HTTP API μλν¬μΈνΈ
HTTP λͺ¨λλ‘ μ€ν μ λ€μ μλν¬μΈνΈλ₯Ό μ¬μ©ν μ μμ΅λλ€:
Health Check
λꡬ λͺ©λ‘ μ‘°ν
λꡬ μ€ν
ποΈ νλ‘μ νΈ κ΅¬μ‘°
π μ΄ νλ‘μ νΈλ₯Ό μ°Έκ³ νμ¬ μ MCP λ§λ€κΈ°
μ΄ νλ‘μ νΈλ₯Ό 볡μ¬νμ¬ μ νλ‘μ νΈ μμ±
src/main.pyμμ λꡬ μ μ μμ src/tools.pyμμ μ€μ API νΈμΆ λ‘μ§ κ΅¬νpyproject.tomlμμ νλ‘μ νΈλͺ λ³κ²½requirements.txtμ νμν μμ‘΄μ± μΆκ°env.exampleμ νμν νκ²½ λ³μ μΆκ°
π API ν€ μ°μ μμ
MCP μλ²λ λ€μ μμλ‘ API ν€λ₯Ό μ°Ύμ΅λλ€:
μ°μ μμ 1:
arguments.env.QUOTE_API_KEY(λ©μΈ μλ²μμ λ°μ ν€)μ°μ μμ 2:
.envνμΌμQUOTE_API_KEY(λ‘컬 κ°λ°μ©)
π λΌμ΄μ μ€
MIT License
μ΄ νλ‘μ νΈλ MCP μλ² κ°λ° ν νλ¦Ώμ λλ€.
This server cannot be installed