๐ Darkwood ๊ธฐ์ฌ ๊ฒ์์ฉ PHP MCP ์ ํ๋ฆฌ์ผ์ด์ ์์ฑ
Source: Dev.to
๋ํ ์ธ์ด ๋ชจ๋ธ์ ์ด๋ฏธ ํ
์คํธ ์์ฑ์ ์์ด ๋ฐ์ด๋ ์ฑ๋ฅ์ ๋ณด์ฌ์ค๋๋ค.
๋ง์ ํ๋ก์ ํธ์์ ์์ง ๋ถ์กฑํ ๊ฒ์ ์ด ์์ฑ ๊ณผ์ ์ ์ง์ ํ ์ํฌํ๋ก์ฐ๋ก ์ ํํ๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์
๋๋ค: ์ด์์ ์์ฑํ๊ณ , ๊ฒํ ํ๊ณ , ๊ต์ ํ๊ณ , ๊ฒ์ํ๊ณ , AI ํด๋ผ์ด์ธํธ ์ ํ๋ฆฌ์ผ์ด์
์ ์ง๊ด์ ์ผ๋ก ํตํฉํ๋ ๊ฒ.
๋ฐ๋ก ์ฌ๊ธฐ์ MCP(ModelโCentered Programming) ์ ํ๋ฆฌ์ผ์ด์ ์ด ํฅ๋ฏธ๋ก์์ง๋๋ค.
MCP ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ค์ํ ์ด์
MCP ์ ํ๋ฆฌ์ผ์ด์
์ ๋ ์ค์ฉ์ ์ธ ๊ธฐ๋ฅ์ ์ถ๊ฐํฉ๋๋ค: ๋๊ตฌ๊ฐ ์์ฒด ๋ด์ฅ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ํตํฉํ ์ ์๊ฒ ํฉ๋๋ค.
์ด๋ ์ํธ์์ฉ ๋ชจ๋ธ์ ํฌ๊ฒ ๋ณ๊ฒฝํฉ๋๋ค:
- ํ ์คํธ๋ง ๋ฐํํ๋ ๋์ , ๋๊ตฌ๋ ์ด์ ํธ์คํธ ์์คํ ๋ด์์ ์ ์ฉ ์ธํฐํ์ด์ค๋ฅผ ์ด ์ ์์ต๋๋ค.
- ์ด ์ธํฐํ์ด์ค๋ ์ ๋ ฅ ์ํ๋ฅผ ํ์ํ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ์ ์ํ๋ฉฐ, ์ฌ์ฉ์๋ฅผ ์ ์ฒด ํ๋ฆ์ ๊ฑธ์ณ ์๋ดํ๊ณ , ์ถ๊ฐ ๋๊ตฌ ํธ์ถ์ ํธ๋ฆฌ๊ฑฐํ ์ ์์ต๋๋ค.
- ๋๊ตฌ๋ ๋จ์ํ ์๊ฒฉ ํจ์๊ฐ ์๋๋ผ ์์ ํ ์ ํ๋ฆฌ์ผ์ด์ ์ธํฐํ์ด์ค์ฒ๋ผ ๋์ํ๊ฒ ๋ฉ๋๋ค.
ํธ์ง ์ํฌํ๋ก์ฐ์์๋ ์ด ๋ชจ๋ธ์ด ๋จ์ํ ์์ ํ ์คํธ๋ณด๋ค ํจ์ฌ ์ ํฉํฉ๋๋ค.
์ฌ์ฉ ์ฌ๋ก: Darkwood ๋ธ๋ก๊ทธ ๊ธ ๊ฒ์
์ด MCP ์ ํ๋ฆฌ์ผ์ด์ ์ Darkwood์ ๋ธ๋ก๊ทธ ๊ธ์ ๊ฒ์ํ๋ ๊ณผ์ ์ ์ฉ์ดํ๊ฒ ํฉ๋๋ค. ์์ ํ๋ฆ์ ๋ ๊ฐ์ง ์ฃผ์ ๋จ๊ณ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค:
- GenerateDraft โ ์ฃผ์ ๋ ์ปจํ ์คํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ด๊ธฐ ์ด์์ ์์ฑํฉ๋๋ค.
- PublishDraft โ ๊ฒ์ ๊ณผ์ ์ ๊ด๋ฆฌํฉ๋๋ค.
Note: ์ด์์ด ์์ง ๋ง์กฑ์ค๋ฝ์ง ์๋ค๋ฉด, ํ๋ก์ธ์ค๋ฅผ ๊ณ์ ์งํํ ์ ์์ต๋๋ค. ์๋ก ๊ฒ์๋ฅผ ์๋ํ๊ธฐ ์ ์ ๋ค๋ก ๋์๊ฐ ์์ ํ๊ฑฐ๋ ์ฌ๊ฒํ ํ ์ ์์ต๋๋ค. ์ด ๋ฐ๋ณต ๋ฃจํ๋ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ฒซ ๋ฒ์งธ ์ด์์ ์ข ์ข ๋๋ฌด ์กฐ์กํ๊ณ , ์ผ๋ฐ์ ์ด๋ฉฐ, ๊ธธ์ด๊ฐ ๊ธธ๊ฑฐ๋ ํธ์ง ์๋์ ๋ง์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
MCP ์๋ฒ, ํ์ฉ ๋ฐฉ๋ฒ ์ฌ๋ฌ ๊ฐ์ง
์๋ฒ๋ ๋ค์ํ ์ ์ก ๋ฐฉ์์ ํตํด ์ฌ์ฉํ ์ ์์ต๋๋ค:
| ์ ์ก ๋ฐฉ์ | ์ค๋ช | ์ ํ์ ์ธ ์ฌ์ฉ ์ฌ๋ก |
|---|---|---|
| Stdio | ํธ์คํธ๊ฐ ์๋ฒ๋ฅผ ์คํํ๊ณ , ํ์ค ์ ๋ ฅ์ ํตํด JSONโRPC ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ฉฐ ํ์ค ์ถ๋ ฅ์ ํตํด ์๋ต์ ์ฝ์ต๋๋ค. | Claude Desktop ํ์ฅ, ๋ก์ปฌ ํตํฉ, Claude Desktop ํจํค์ง. |
| HTTP | ์๋ฒ๊ฐ HTTP API๋ฅผ ๋ ธ์ถํฉ๋๋ค. ์ ์ฉ ๋ฐ ์ง์์ ์ธ ํ๋ก์ธ์ค(์: flow worker)์ ์ํด ์ ๊ณต๋ ์ ์์ต๋๋ค. | ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฐ ํธ์คํธ, ๋ก์ปฌ ํ ์คํธ, HTTP ์ ํ์ด ์์ ํ๋ก์ธ์ค๋ณด๋ค ํธ๋ฆฌํ ํ๊ฒฝ. |
์ฐธ๊ณ : MCP ์ ํ๋ฆฌ์ผ์ด์ ์ด ํฌํจ๋ ๊ฒฝ์ฐ, ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ ๋ค๋ฅธ JSONโRPC ์ฑ๋(๋ณดํต
postMessage)์ ํตํด ํธ์คํธ์ ํต์ ํฉ๋๋ค. ๋ฐ๋ผ์ ๋ ๋จ๊ณ์ ํต์ ์ด ์กด์ฌํฉ๋๋ค:
- ํธ์คํธ โ ์๋ฒ via MCP,
- UI ์ธํฐํ์ด์ค โ ํธ์คํธ via
postMessage.
MCP ์ฐ๊ฒฐ์ ์๋ช ์ฃผ๊ธฐ
- ์ด๊ธฐํ โ ํธ์คํธ๊ฐ ์ฐ๊ฒฐ์ ์ด๊ธฐํํ๊ณ ์๋ฒ์ ๊ธฐ๋ฅ์ ํ์ํฉ๋๋ค.
- ๋์ค์ปค๋ฒ๋ฆฌ โ ํธ์คํธ๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ๋๊ตฌ์ ๋ฆฌ์์ค๋ฅผ ๋์ดํฉ๋๋ค.
- ํธ์ถ โ ์ฌ์ฉ์๊ฐ ๋๊ตฌ๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ฉด ํธ์คํธ๊ฐ ์๋ฒ์์ ํด๋น ๋๊ตฌ๋ฅผ ํธ์ถํฉ๋๋ค.
- UI ๋ฆฌ์์ค โ ๋๊ตฌ์ ์ธํฐํ์ด์ค ๋ฆฌ์์ค(
ui://โฆ)๊ฐ ์๋ ๊ฒฝ์ฐ, ํธ์คํธ๊ฐ ํด๋น ๋ฆฌ์์ค๋ฅผ ๋ก๋ํ๊ณ ๊ฒฉ๋ฆฌ๋ iframe์ ํ์ํฉ๋๋ค. - ์ํธ์์ฉ โ MCP ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ธํฐ๋ํฐ๋ธํด์ง๋๋ค: ์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ํ์ํ๋ฉฐ, ํธ์คํธ๋ฅผ ํตํด ์ถ๊ฐ ์์ ์ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค.
Darkwood ์์ ํ๋ฆ์์๋ ์ฌ์ฉ์๊ฐ(๋๋ ์ด์์คํดํธ๊ฐ) ์ด์ ์์ฑ์์ ๊ฒ์๋ก ์ด๋ํ ๋ค, ์์ ๋ฃจํ๋ก ๋ค์ ๋์๊ฐ ์ ์์ผ๋ฉฐ, ์ ์ฒด ๊ณผ์ ์ด MCP ์ธํฐ๋์ ๋ชจ๋ธ์ ๋ ๋์ง ์๊ณ ์ด๋ฃจ์ด์ง๋๋ค.
์ํคํ ์ฒ
๊ฐ์
+-------------------+ +-------------------+
| Hรดte MCP | | Serveur PHP |
| (client) | | (MCP server) |
+-------------------+ +-------------------+
^ ^
| |
| JSONโRPC (Stdio / HTTP) |
| |
v v
+-------------------+ +-------------------+
| Interface UI | | Ressources UI |
+-------------------+ +-------------------+
Un hรดte MCP se connecte au serveur PHP.
MCP ํธ์คํธ๊ฐ PHP ์๋ฒ์ ์ฐ๊ฒฐํฉ๋๋ค.
Cette sรฉparation permet de conserver une interface utilisateur portable sur les hรดtes compatibles tout en prรฉservant un contrat MCP propre cรดtรฉ serveur.
์ด ๋ถ๋ฆฌ๋ฅผ ํตํด ํธํ ๊ฐ๋ฅํ ํธ์คํธ์์ ํด๋ ๊ฐ๋ฅํ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์ ์งํ๋ฉด์ ์๋ฒ ์ธก์์ MCP ๊ณ์ฝ์ ๊น๋ํ๊ฒ ๋ณด์กดํ ์ ์์ต๋๋ค.
์์ธ ์ ์ก ๋ฐฉ์
Stdio
- Idรฉal pour les extensions Claude Desktop.
Claude Desktop ํ์ฅ์ ์ด์์ ์ ๋๋ค. - Lโhรดte lance le serveur, รฉchange des messages JSONโRPC via
stdin/stdout.
ํธ์คํธ๊ฐ ์๋ฒ๋ฅผ ์คํํ๊ณstdin/stdout์ ํตํด JSONโRPC ๋ฉ์์ง๋ฅผ ๊ตํํฉ๋๋ค. - Simple, local et efficace lorsque le client gรจre les processus.
ํด๋ผ์ด์ธํธ๊ฐ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ ๋ ๊ฐ๋จํ๊ณ ๋ก์ปฌ์ด๋ฉฐ ํจ์จ์ ์ ๋๋ค.
HTTP
- Utile pour les hรดtes orientรฉs navigateur, les tests locaux ou toute configuration oรน une limite HTTP est plus pratique.
๋ธ๋ผ์ฐ์ ๊ธฐ๋ฐ ํธ์คํธ, ๋ก์ปฌ ํ ์คํธ ๋๋ HTTP ์ ํ์ด ๋ ํธ๋ฆฌํ ๋ชจ๋ ๊ตฌ์ฑ์ ์ ์ฉํฉ๋๋ค. - Deux modes dโimplรฉmentationโฏ:
- Processus dรฉdiรฉ et persistant (ex.โฏ: flow worker).
์ ์ฉ ์ง์ ํ๋ก์ธ์ค (์: flow worker). - Serveur HTTP classique (ex.โฏ: Symfony Server).
์ ํต์ ์ธ HTTP ์๋ฒ (์: Symfony Server).
- Processus dรฉdiรฉ et persistant (ex.โฏ: flow worker).
Importantโฏ: ยซโฏprend en charge HTTPโฏยป ne signifie pas automatiquement ยซโฏprend en charge le mรชme modรจle dโexรฉcution partoutโฏยป.
์ค์: โHTTP๋ฅผ ์ง์ํ๋คโ๋ ๊ฒ์ด ์๋์ผ๋ก โ๋ชจ๋ ๊ณณ์์ ๋์ผํ ์คํ ๋ชจ๋ธ์ ์ง์ํ๋คโ๋ ์๋ฏธ๋ ์๋๋๋ค.
- Avec Stdio ou un worker HTTP persistant, on peut envisager un processus persistant, ouvrant la voie ร des fonctionnalitรฉs asynchrones, des boucles dโรฉvรฉnements et une orchestration continue.
Stdio ๋๋ ์ง์ HTTP ์์ปค๋ฅผ ์ฌ์ฉํ๋ฉด ์ง์ ํ๋ก์ธ์ค๋ฅผ ๊ณ ๋ คํ ์ ์์ผ๋ฉฐ, ๋น๋๊ธฐ ๊ธฐ๋ฅ, ์ด๋ฒคํธ ๋ฃจํ ๋ฐ ์ง์์ ์ธ ์ค์ผ์คํธ๋ ์ด์ ์ ๊ตฌํํ ์ ์์ต๋๋ค.- Avec Symfony Server, chaque requรชte est traitรฉe dans un cycle HTTP synchroneโฏ: plus simple ร mettre en ลuvre, mais lโorchestration du workflow doit รชtre dรฉlรฉguรฉe (ex.โฏ: couche Flow ou coordination externe).
Symfony Server๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ๊ฐ ์์ฒญ์ด ๋๊ธฐ HTTP ์ฌ์ดํด์์ ์ฒ๋ฆฌ๋ฉ๋๋ค: ๊ตฌํ์ ๋ ๊ฐ๋จํ์ง๋ง ์ํฌํ๋ก ์ค์ผ์คํธ๋ ์ด์ ์ (์: Flow ๋ ์ด์ด ๋๋ ์ธ๋ถ ์กฐ์ )์ผ๋ก ์์ํด์ผ ํฉ๋๋ค.
ํธ์ง ํ๋ฆ ๊ด๋ฆฌ
- ์ด๊ธฐํ โ ํธ์คํธ๋ ์ ์ก, ๋ ๋๋ง ๋ฐ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ์๋ฒ ๊ฐ์ ์ฐ๊ฒฐ์ ๊ด๋ฆฌํฉ๋๋ค.
- ์ค์ผ์คํธ๋ ์ด์ โ Flow ๋ ์ด์ด๋ ์ฌ๋ฌ ์์ ๋ฐ ์ํ ์ ํ์ด ํฌํจ๋ ์ํฌํ๋ก๋ฅผ ์กฐ์ ํฉ๋๋ค.
ํธ์ง ํ๋ฆ์ ์ข ์ข ํ๋ ์ด์์ ์์ ๋ฐ ํ๋ ์ด์์ ์ํ ์ ํ์ ํฌํจํฉ๋๋ค; Flow ๋ ์ด์ด๋ ์ด๋ฌํ ๋จ๊ณ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์กฐ์ ๋๋๋ก ๋ณด์ฅํฉ๋๋ค.
๊ฒฐ๋ก
MCP ์ ํ๋ฆฌ์ผ์ด์
์ ํตํฉ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ์ฌ ๋จ์ ํ
์คํธ ์์ฑ์ ์ ์ฒด ์ํฌํ๋ก๋ก ์ ํํฉ๋๋ค: ์์ฑ, ๊ฒํ , ์ถํ ๋ฐ ๋ฐ๋ณต.
Darkwood ์ํฉ์์ ์ด๋ ๋ค์์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค:
- ์ฒซ ๋ฒ์งธ ์ด์์ ๋น ๋ฅด๊ฒ ์์ฑํฉ๋๋ค.
- MCP ํ๊ฒฝ์ ๋ ๋์ง ์๊ณ ์ฝ๊ฒ ๋ฐ๋ณต(์์ , ๊ฒํ )ํฉ๋๋ค.
- ์ต์ข ์ฝํ ์ธ ๋ฅผ ์ํํ๊ฒ ์ถํํฉ๋๋ค.
Stdio์ HTTP ์ ์ก ๋ฐฉ์์ ๋ช ํํ ์ํคํ ์ฒ(ํธ์คํธ โ ์๋ฒ โ UI)์ ๊ฒฐํฉํจ์ผ๋ก์จ, ๊ฐ๋ฐ์๋ ํ๋ถํ๊ณ ๋ฐ์์ฑ์ด ๋ฐ์ด๋๋ฉฐ ์ฝ๊ฒ ํ์ฅ ๊ฐ๋ฅํ ํธ์ง ๊ฒฝํ์ ๋ง๋ค ์ ์์ต๋๋ค.
์ด ์ค๊ณ๊ฐ ์ถํ ์ํฌํ๋ก์ ํจ๊ณผ์ ์ธ๊ฐ?
๋จ์ํ ํจ์ ํธ์ถ๋ ์๋๊ณ , ์์ ํ ๋ฐฑ์คํผ์ค ์ ํ๋ฆฌ์ผ์ด์
๋ ์๋๋๋ค.
์ํ์ ์์ฌ๊ฒฐ์ ์ ๊ด๋ฆฌํ ์ถฉ๋ถํ ๊ตฌ์กฐ๊ฐ ํ์ํ๋ฉด์๋, AI์์ ๋ํ๋ก ํธ๋ฆฌ๊ฑฐ๋ ์ ์์ ๋งํผ ๊ฐ๋ฒผ์์ผ ํฉ๋๋ค.
๋ฐ๋ก MCP ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฌ๊ธฐ์ ์๋ฒฝํ๊ฒ ๋ง๋ ์ด์ ์ ๋๋ค.
๊ฐ ๊ณ์ธต์ ์ญํ
- ๋๊ตฌ ์ธํฐํ์ด์ค โ ๋ชจ๋ธ์ ์ํธ์์ฉ ํ๋ฉด์ ์ ๊ณตํฉ๋๋ค.
- ์ฌ์ฉ์ ์ธํฐํ์ด์ค โ ์ฌ์ฉ์ ๋๋ ํด๋ผ์ด์ธํธ์๊ฒ ์ํฌํ๋ก์ ์ ์ด๋ ๋ทฐ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ํ๋ก์ฐ ์ค์ผ์คํธ๋ ์ด์ โ ์์คํ ์ด ๋ค๋จ๊ณ ์ ํ์ ๊ด๋ฆฌํ๋๋ก ํฉ๋๋ค.
์ด ์กฐํฉ์ด ํจ๊ณผ์ ์ธ ์ด์ ๋ ๊ฐ ๊ณ์ธต์ด ๋ช ํํ ๋ชฉ์ ์ ์ง์คํ๊ธฐ ๋๋ฌธ์ ๋๋ค:
- ๋ชจ๋ธ์ด ์ธ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ์ง ๊ฒฐ์ ํ๊ณ ,
- ํ๋ก์ ํธ๊ฐ ๋จ์ํ ๋ก์ปฌ ํ๋กํ ํ์ ์ด๋ ๋ธ๋ผ์ฐ์ ๋ฐ๋ชจ์ ๊ทธ์น์ง ์๊ณ ; Claude์ ์ค์น๋์ด ์ค์ ๋๊ตฌ ํตํฉ์ผ๋ก ํ์ฉ๋ ์ ์์ต๋๋ค.
๊ตฌ์ฑ
- ํ์ฅ ํ๋ก๊ทธ๋จ ๋งค๋ํ์คํธ โ Claude๊ฐ ์๋ฒ๋ฅผ ์คํํ๋ ๋ฐฉ์์ ์ ์ํฉ๋๋ค.
- ํ๋กํ ํ์
์์ ์ค์ ํธ์ง ๋๊ตฌ๋ก โ ํ๋ก์ ํธ๋ ์ด๋ฏธ ํธ์ง ๋๊ตฌ๋ฅผ ์ํ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ํํ๋ฅผ ์ ์ํ๊ณ ์์ต๋๋ค:
- ์ด์์ ๋ง๋ค๊ธฐ ์ํ ๋๊ตฌ,
- ์ด ๊ตฌ์กฐ๊ฐ ๋ง๋ จ๋๋ฉด ์์
ํ๋ฆ ๊ฐ์ ์ด ํจ์ฌ ๊ฐ๋จํด์ง๋๋ค:
- ์์ฑ ํ์ง ์ต์ ํ,
- ์ถํ ๋ฉํ๋ฐ์ดํฐ ๊ฐํ,
- ๊ฒ์ฆ ์ถ๊ฐ,
- ์ค์ CMS ํตํฉ.
ํธ์คํ ์ ๊ณต์, ์ฌ์ฉ์ ์ธํฐํ์ด์ค ๋ฐ ์๋ฒ ๊ฐ์ ๊ณ์ฝ์ ์์ ์ ์ผ๋ก ์ ์ง๋ฉ๋๋ค.
์คํ ์์ค
https://github.com/darkwood-com/darkwood-publish-article-mcp-apps
๊ฒฐ๋ก
Darkwood์ ๊ฒฝ์ฐ ๊ฐ์ฅ ํฅ๋ฏธ๋ก์ด ์ ์ PHP๊ฐ MCP์ ํต์ ํ ์ ์๋ค๋ ๊ฒ์ด ์๋๋ผ,
PHP MCP ์๋ฒ๊ฐ ์ด์ AI ํด๋ผ์ด์ธํธ์์ ์ ๊ทผ ๊ฐ๋ฅํ ์์ ํธ์ง ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฐฑ์๋ ์ญํ ์ ํ ์ ์๋ค๋ ์ ์ด๋ค. ์ด๋:
- ๋๊ตฌ์ ์๋ฏธ๋ก ,
- ํตํฉ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค
๋ฅผ ๋์์ ์ ๊ณตํ๋ค.
์ด๋ โ๋ชจ๋ธ์ด ํจ์๋ฅผ ํธ์ถํ ์ ์๋คโ๋ ํตํฉ์ โ๋ชจ๋ธ์ด ์ ์ด๋ ์ถํ ์ํฌํ๋ก์ ์ฐธ์ฌํ ์ ์๋คโ๋ ์์ค์ผ๋ก ๋์ด์ฌ๋ฆฐ๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ ํจ์ฌ ๋ ์ ์ฉํ ์์ญ์ด๋ค.
์ถ์ฒ
- MCP ์ ํ๋ฆฌ์ผ์ด์
๋น ๋ฅธ ์์ โ
README.md - phpโmcpโapps์ MVP ์ํคํ
์ฒ โ
php-mcp-apps-mvp-architecture.md