Hello World Tangle Blueprint ð
ããŒã«ã«Hello World Tangle Blueprint ð ã«ã€ããŠ
Tangle Networkåãã®ãã«ãŒããªã³ãã§ãPythonãJavaScriptãDockerã®ç°å¢ã«èšå®æžã¿ã®ãªã¢ãŒãMCPãµãŒãã¹ããããã€ããŸããããŒããèªåå²ãåœãŠããstdioãSSEã«å€æããŠãããŒã¯ã³èªèšŒä»ãã®HTTPãšã³ããã€ã³ããæäŸããŸãã
äž»ãªæ©èœ
- 01PythonãJavaScriptãDockerã«å¯Ÿå¿
- 02ããŒãã®èªåå²ãåœãŠãšPORTã®æ³šå ¥
- 03stdioãã©ã³ã¹ããŒããSSEã«å€æ
- 04HTTPãšã³ããã€ã³ããšåæ¹åã¡ãã»ãŒãžè»¢é
- 05ãã£ã¬ã³ãžã¬ã¹ãã³ã¹æ¹åŒã§ã¢ã¯ã»ã¹ããŒã¯ã³ãçæ
掻çšã·ãŒã³
- 01Tangle Networkãžã®ãªã¢ãŒãMCPãµãŒãã¹ã®ãããã€
- 02stdioãµãŒãã¹ãšHTTPã¯ã©ã€ã¢ã³ãã®æ¥ç¶
- 03è€æ°ã®å®è¡ç°å¢ã§ã®MCPãµãŒãã¹èšå®ãšèµ·å
MCP 察å¿
èšå®ã«åºã¥ããŠMCPãµãŒãã¹ã®ã€ã³ã¹ã¿ã³ã¹ããããã€ããMCPã¯ã©ã€ã¢ã³ãåãã«SSEçµç±ã§å ¬éããŸããã¢ã¯ã»ã¹ã¯ããŒã¯ã³èªèšŒã§ä¿è·ãããŸãã
èšå®
ããŒã«ã«ãµãŒããŒã®èšå®ã¯ã©ã®ã¯ã©ã€ã¢ã³ãã§ãå ±éã§ããã³ããŒããŠã¯ã©ã€ã¢ã³ãã® MCP èšå®ãã¡ã€ã«ã«è²Œãä»ããŠãã ããã
ãã®ãµãŒããŒã®ããã±ãŒãžããªã¢ãŒããšã³ããã€ã³ãã¯ãŸã ååŸã§ããŠããŸããããããžã§ã¯ãã® README ã®æé ã«åŸã£ãŠãã ããã
ããŒã«
ããŒã«ã«ãµãŒããŒã®ããŒã«ã¯ãã·ã³äžã§èµ·åããŠåããŠååŸã§ããŸããã¡ã³ãããŒã¯ãŸã ããŒã«äžèЧãæäŸããŠããŸããã
詳现
Tangle Network åã MCP ãã«ãŒããªã³ã ð
ᅵ ãããžã§ã¯ãã®æŠèŠãšç®ç
ãã®ãããžã§ã¯ãã¯ããªã¢ãŒã MCPïŒModel Context ProtocolïŒãµãŒãã¹ãå®è¡ããããã«èšèšããããTangle Network åãã®ãã«ãŒããªã³ãã§ãããã®ãã«ãŒããªã³ãã®æ°ããã€ã³ã¹ã¿ã³ã¹ããªã¯ãšã¹ããããšããŠãŒã¶ãŒã¯æå®ããæ§æãã¡ã€ã«ãæã€æ°ãããµãŒãã¹ã€ã³ã¹ã¿ã³ã¹ãååŸã§ããMCP ãµãŒããŒãã·ãŒã ã¬ã¹ã«ãããã€ããŠç®¡çã§ããŸãã
ãã«ãŒããªã³ãã¯ãTangle Network äžã® AVS ã®ä»æ§ã§ããAVS ãšã¯ããŠãŒã¶ãŒãæå®ããæéãä»»æã®èšç®ãå®è¡ãããªããã§ãŒã³ãµãŒãã¹ã§ãããã® MCP ãã«ãŒããªã³ãã¯ãããŸããŸãªã©ã³ã¿ã€ã ç°å¢ã§ MCP ãµãŒããŒããããã€ããŠç®¡çããããã®åŒ·åãªæœè±¡åãæäŸããéçºè ãåå©çšå¯èœãª MCP ãµãŒãã¹ã€ã³ãã©ã¹ãã©ã¯ãã£ãäœæã§ããããã«ããŸãã
Tangle Network ã®ãã«ãŒããªã³ãã®è©³çްã«ã€ããŠã¯ããããžã§ã¯ãã®ããã¥ã¡ã³ããåç §ããŠãã ããã
âïž æ§æã®è©³çް
ãã®ãã«ãŒããªã³ãã¯ãããŒããèªå管çããªãããããŸããŸãªã©ã³ã¿ã€ã ã®æ§æããµããŒãããŸãããã¹ãŠã®ã©ã³ã¿ã€ã ã¯ãHTTP ããŒã¹ã®éä¿¡ãè¡ãããã«å éšã§ SSEïŒServer-Sent EventsïŒã«å€æãããŸãã
ãµããŒããããã©ã³ã¿ã€ã
- JavaScriptïŒbun ã©ã³ã¿ã€ã ïŒã§ã® STDIO ãã©ã³ã¹ããŒãïŒå¿
èŠã«å¿ã㊠bun ãèªåã€ã³ã¹ããŒã«ãã
bunxã䜿çšã㊠MCP ãµãŒããŒãå®è¡ããŸã - PythonïŒpython3ïŒã§ã® STDIO ãã©ã³ã¹ããŒãïŒå¿
èŠã«å¿ã㊠uv ãèªåã€ã³ã¹ããŒã«ãã
uvxã䜿çšã㊠MCP ãµãŒããŒãå®è¡ããŸã - Docker ã³ã³ããïŒã€ã³ããªãžã§ã³ããªããŒãæ€åºãããŒãã®èªåå²ãåœãŠãç°å¢å€æ°ã®æ³šå ¥ã«ãããDocker ã³ã³ããå ã§ MCP ãµãŒããŒãå®è¡ããŸã
ããŒã管çãšãã©ã³ã¹ããŒã倿
ãã®ãã«ãŒããªã³ãã¯ããŒãã®å²ãåœãŠãèªåã§ç®¡çãããã¹ãŠã®ã©ã³ã¿ã€ã æ§æã SSE ãã©ã³ã¹ããŒãã«å€æããŸãã
ããŒãã®èªå管çïŒ
- ã·ã¹ãã ã§å©çšå¯èœãªããŒããæ€åºããŠãèªåçã«ããŒããå²ãåœãŠãŸã
- ãã¹ãŠã® MCP ãµãŒããŒã«
PORTç°å¢å€æ°ãèªåçã«æ³šå ¥ããŸã - MCP ãµãŒããŒã¯ã
PORTç°å¢å€æ°ã§æå®ãããããŒãã«å¿ ããã€ã³ãããå¿ èŠããããŸã - ãã«ãŒããªã³ãã®ãªã¯ãšã¹ãã§ããŒããæåèšå®ããå¿ èŠã¯ãããŸãã
ãã©ã³ã¹ããŒã倿ïŒ
- Web ã¯ã©ã€ã¢ã³ãåãã® HTTP ããŒã¹ã®éä¿¡
- STDIO ãã©ã³ã¹ããŒããš SSE ãã©ã³ã¹ããŒãéã§ã®åæ¹åã¡ãã»ãŒãžè»¢é
- Server-Sent Events ã«ãããªã¢ã«ã¿ã€ã ã¹ããªãŒãã³ã°
- ã¯ã©ã€ã¢ã³ããã¡ãã»ãŒãžãéä¿¡ããããã® POST ãšã³ããã€ã³ã
ð èªèšŒã¯ãŒã¯ãããŒ
èªèšŒã¯ãŒã¯ãããŒã§ã¯ãã¹ã¯ãªãã generate-auth-token.ts ã䜿çšãããã£ã¬ã³ãžã¬ã¹ãã³ã¹æ¹åŒã§ã¢ã¯ã»ã¹ããŒã¯ã³ãçæããŸãã
- ãã£ã¬ã³ãžãªã¯ãšã¹ãïŒã¯ã©ã€ã¢ã³ããå
¬ééµãšéµã®çš®é¡ã
/v1/auth/challengeã«éä¿¡ããŸã - ãã£ã¬ã³ãžã¬ã¹ãã³ã¹ïŒãµãŒããŒãæå¹æéä»ãã®æå·åŠçãã£ã¬ã³ãžãè¿ããŸã
- 眲åã®çæïŒã¯ã©ã€ã¢ã³ããèªèº«ã®ç§å¯éµã䜿çšããŠãã£ã¬ã³ãžã«çœ²åããŸã
- ããŒã¯ã³ã®æ€èšŒïŒã¯ã©ã€ã¢ã³ãã眲åã
/v1/auth/verifyãšã³ããã€ã³ãã«éä¿¡ããŸã - ã¢ã¯ã»ã¹ããŒã¯ã³ïŒãµãŒããŒãæå¹æéä»ãã®ã¢ã¯ã»ã¹ããŒã¯ã³ãè¿ããŸã
MCP ãµãŒããŒã® URL ã«ã¢ã¯ã»ã¹ãããšããèªèšŒã¯ Authorization ããããŒãä»ããŠè¡ããŸããããŒã¯ã³ã®åœ¢åŒã¯ {token_id}|{token_string} ã§ãã
ð 倿Žå±¥æŽãšç Žå£ç倿Ž
â ïž ç Žå£ç倿ŽïŒæè¿ã®æŽæ°ã§ãããŒãã®èªå管çãå°å
¥ãããŸãããç§»è¡æé ãšäŸã«ã€ããŠè©³ããã¯ãCHANGELOG.md ãåç
§ããŠãã ããã
äž»ãªå€æŽç¹ïŒ
- æ§æãã
portBindingsãã£ãŒã«ããåé€ PORTç°å¢å€æ°ã®èªåæ³šå ¥ã远å- MCP ãµãŒããŒã¯
PORTç°å¢å€æ°ããããŒããèªã¿åãå¿ èŠããããŸã
ð 䜿çšäŸãšãã¢
ãµã³ãã«èšå®
fixtures ãã£ã¬ã¯ããªã«ã¯ãããŸããŸãªã©ã³ã¿ã€ã ã¿ã€ãã®ãµã³ãã«èšå®ãå«ãŸããŠããŸãã
fixtures/00_mcp_python3.jsonïŒPython MCP ãµãŒããŒã®èšå®fixtures/01_mcp_js.jsonïŒContext7 ããã±ãŒãžã䜿çšãã JavaScript MCP ãµãŒããŒfixtures/02_mcp_local_docker.jsonïŒRedis ç°å¢ã䜿çšããããŒã«ã« Docker MCP ãµãŒããŒfixtures/03_tangle_mcp_docker.jsonïŒTangle å°çšã® Docker MCP èšå®
泚ïŒãã¹ãŠã®ãµã³ãã«èšå®ã§ã¯ãæ°ãã圢åŒã䜿çšãããŠããã
portBindingsã¯å«ãŸããŠããŸãããããŒãã®å²ãåœãŠã¯ãã«ãŒããªã³ãã«ãã£ãŠèªåçã«åŠçãããŸãã
ããŒã«ã«ã§ã®ã»ããã¢ãã
ããŒã«ã«ã§ã»ããã¢ãããå®è¡ããã«ã¯ãDEMO.md ã®è©³çŽ°ãªæé ã«åŸã£ãŠãã ããããã¢ã§ã¯ã以äžã®å
容ã説æããŸãã
- Tangle ãããã¯ãŒã¯ãããŒã«ã«ã§èµ·åãã
- ãã«ãŒããªã³ããµãŒãã¹ãèµ·åãã
- æ°ãããã«ãŒããªã³ãã€ã³ã¹ã¿ã³ã¹ããªã¯ãšã¹ããã
- ãµãŒãã¹ãªã¯ãšã¹ããæ¿èªãã
- MCP ãµãŒããŒãèµ·åãã
- èªèšŒããŒã¯ã³ãçæãã
- MCP Inspector ã§ãã¹ããã
å éšã¯ãŒã¯ãããŒ
å
éšã¯ãŒã¯ãããŒã®è©³çްã«ã€ããŠã¯ãå
æ¬çãªãããŒãã£ãŒããæ²èŒãã mcp-blueprint-flowchart.md ãã芧ãã ããããããŒãã£ãŒãã§ã¯ã以äžã®å
容ã瀺ããŠããŸãã
- ãŠãŒã¶ãŒãªã¯ãšã¹ãã®æµããšèšå®ã®åŠç
- ã©ã³ã¿ã€ã ã®æ€åºãšããã±ãŒãžç®¡ç
- STDIO ãã SSE ãžã®ãã©ã³ã¹ããŒã倿
- ãµãŒããŒã®åæåãšãšã³ããã€ã³ãã®æäŸ
- èªèšŒãšã¯ã©ã€ã¢ã³ãæ¥ç¶ã®åŠç
ð ã¯ãŒã¯ãããŒã®èª¬æ
ãã«ãŒããªã³ãã®ããã»ã¹ã¯ã次ã®å€§ãŸããªã¯ãŒã¯ãããŒã«åŸããŸãã
- ãªã¯ãšã¹ãã®åä¿¡ïŒèšå®ãã©ã¡ãŒã¿ãŒãå«ããªã¢ãŒã MCP ãªã¯ãšã¹ããåä¿¡ããŸã
- èšå®ã®åŠçïŒã©ã³ã¿ã€ã ã¿ã€ããããã±ãŒãžïŒã€ã¡ãŒãžãç°å¢å€æ°ãåæããŸã
- ããŒãã®å²ãåœãŠïŒäœ¿çšå¯èœãªããŒããèªåçã«å²ãåœãŠãç°å¢å€æ°
PORTãšããŠèšå®ããŸã - ã©ã³ã¿ã€ã ã®åæåïŒ
- PythonïŒããã±ãŒãžç®¡çãšå®è¡ã«
uvãã€ã³ã¹ããŒã«ïŒäœ¿çšããŸã - JavaScriptïŒããã±ãŒãžç®¡çãšå®è¡ã«
bunãã€ã³ã¹ããŒã«ïŒäœ¿çšããŸã - DockerïŒã€ã¡ãŒãžããã«ããå ¬éããŒããæ€æ»ããŠãã€ã³ããªãžã§ã³ããªããŒããã€ã³ãã£ã³ã°ã䜿çšããŠã³ã³ãããŒãäœæããŸã
- PythonïŒããã±ãŒãžç®¡çãšå®è¡ã«
- ãã©ã³ã¹ããŒãã®ã»ããã¢ããïŒSTDIO éä¿¡ã HTTP äºæã® SSE ã«å€æããŸã
- ãšã³ããã€ã³ãã®å
¬éïŒ
/sseããã³/messageãšã³ããã€ã³ããå«ã HTTP URL ãæäŸããŸã - èªèšŒïŒããŒã¯ã³ããŒã¹ã®èªèšŒã·ã¹ãã ã«ãã£ãŠã¢ã¯ã»ã¹ãä¿è·ããŸã
- ã¯ã©ã€ã¢ã³ããšã®éä¿¡ïŒMCP ã¯ã©ã€ã¢ã³ãã HTTPïŒSSE çµç±ã§æ¥ç¶ããéä¿¡ã§ããããã«ããŸã
ð åææ¡ä»¶
ãã®ãããžã§ã¯ããå®è¡ããã«ã¯ããã·ã³ã«ä»¥äžã®ãœãããŠã§ã¢ãã€ã³ã¹ããŒã«ããŠããå¿ èŠããããŸãã
ãŸããTangle Blueprints ã®äœæãšãããã€ã«äœ¿çšãã CLI ããŒã«ãcargo-tangle ãã€ã³ã¹ããŒã«ããå¿ èŠããããŸãã
Tangle CLI ãã€ã³ã¹ããŒã«ããã«ã¯ã次ã®ã³ãã³ããå®è¡ããŠãã ããã
LinuxãMacOSãWindowsïŒWSL2ïŒã§ãµããŒããããŠããŸã
cargo install cargo-tangle --git https://github.com/tangle-network/blueprint
âš äž»ãªæ©èœ
èªåããŒã管ç
- èšå®äžèŠïŒèšå®ãã¡ã€ã«ã§ããŒããã€ã³ãã£ã³ã°ãæå®ããå¿ èŠã¯ãããŸãã
- ç«¶åã®é²æ¢ïŒããŒããèªåçã«å²ãåœãŠãããŒãã®ç«¶åãé²ããŸã
- ç°å¢å€æ°ã®èšå®ïŒ
PORTç°å¢å€æ°ã MCP ãµãŒããŒã«èªåçã«èšå®ãããŸã - å¹ åºãäºææ§ïŒãã¹ãŠã®ã©ã³ã¿ã€ã ã¿ã€ãïŒPythonãJavaScriptãDockerïŒã§åäœããŸã
- ã€ã³ããªãžã§ã³ã㪠Docker åŠçïŒDocker ã€ã¡ãŒãžããå ¬éããŒããèªåçã«æ€åºããå¿ èŠãªå Žåã«ã®ã¿ããŒããããã³ã°ãèšå®ããŸã
ã»ãã¥ãªãã£ãšä¿¡é Œæ§ã®åŒ·å
- èšå®ã®ç°¡çŽ åïŒããŒã管çã®èªååã«ãããæ»æå¯Ÿè±¡é åãçž®å°ããŸã
- ããã»ã¹ã®ã©ã€ããµã€ã¯ã«ïŒé©åãªã¯ãªãŒã³ã¢ãããšã³ã³ãããŒç®¡çãè¡ããŸã
- ãšã©ãŒåŠçïŒããŒãã®å²ãåœãŠã«å€±æããå Žåã®å æ¬çãªãšã©ãŒåŠç
ð ïž éçº
åææ¡ä»¶ãã€ã³ã¹ããŒã«ãããããããžã§ã¯ãããã«ãããŠãããã€ã§ããŸãã
cargo build
ãããžã§ã¯ãããã«ãããã«ã¯ã次ãå®è¡ããŸãã
cargo tangle blueprint deploy
ãã«ãŒããªã³ãã Tangle ãããã¯ãŒã¯ã«ãããã€ããã«ã¯ã次ãå®è¡ããŸãã
MCP ãµãŒããŒéçºè åãã¯ã€ãã¯ãªãã¡ã¬ã³ã¹
ãã®ãã«ãŒããªã³ãçšã® MCP ãµãŒããŒãéçºããéã¯ã次ã®ç¹ã«ã泚æãã ããã
- ç°å¢å€æ°ããããŒããèªã¿èŸŒãïŒå¿
ã
process.env.PORTïŒJSïŒãŸãã¯os.environ['PORT']ïŒPythonïŒã䜿çšããŸãã - ãã¹ãŠã®ã€ã³ã¿ãŒãã§ãŒã¹ã«ãã€ã³ãããïŒãã¹ãã«ã¯
0.0.0.0ãŸãã¯127.0.0.1ã䜿çšããŸãã - ããŒããèšå®ããªãïŒãµãŒããŒã«ããŒãã³ãŒããããããŒããããã°åé€ããŸãã
- ããŒã«ã«ã§ãã¹ãããïŒããŒã«ã«ãã¹ãã§ã¯ç°å¢å€æ°
PORT=3000ãèšå®ããŸãã
# Testing your MCP server locally
export PORT=3000
your-mcp-server-command
ð ã©ã€ã»ã³ã¹
以äžã®ããããã®ã©ã€ã»ã³ã¹ã®äžã§ã©ã€ã»ã³ã¹ãããŠããŸãã
- Apache License, Version 2.0 (LICENSE-APACHE ãŸã㯠http://www.apache.org/licenses/LICENSE-2.0)
- MIT ã©ã€ã»ã³ã¹ (LICENSE-MIT ãŸã㯠http://opensource.org/licenses/MIT)
ã©ã¡ããéžæãããã¯ä»»æã§ãã
ð¬ ãã£ãŒãããã¯ãšã³ã³ããªãã¥ãŒã·ã§ã³
ãã®ãã«ãŒããªã³ãã®æ¹åã«åãããã£ãŒãããã¯ãã³ã³ããªãã¥ãŒã·ã§ã³ããåŸ ã¡ããŠããŸãã GitHub ãªããžããªã§ã€ã·ã¥ãŒãäœæãããããã«ãªã¯ãšã¹ããéä¿¡ããŠãã ããã ãã®ãã«ãŒããªã³ãããã©ãŒã¯ããŠæ¡åŒµããå Žåãããã²ãç¥ãããã ããã
å¥éæç€ºãããªãéããApache-2.0 ã©ã€ã»ã³ã¹ã§å®çŸ©ãããŠãããšãããããªããæ¬äœåãžã®åé²ãç®çãšããŠæå³çã«æåºããã³ã³ããªãã¥ãŒã·ã§ã³ã¯ã远å ã®æ¡ä»¶ãå¶çŽãªãã«ãäžèšã®ãã¥ã¢ã«ã©ã€ã»ã³ã¹ã®äžã§ã©ã€ã»ã³ã¹ãããŸãã
ã³ã¡ã³ã
MCP ã¯åããŠã§ããïŒ
ãããã³ã«ã®æŠèŠããæåã®ãµãŒããŒã®å°å ¥ãŸã§ãããããçåã«ãŸãšããŠçããŸãã
AI ã¢ããªã±ãŒã·ã§ã³ãå€éšã®ããŒã«ãããŒã¿ãœãŒã¹ã«çµ±äžçãªæ¹æ³ã§æ¥ç¶ããããã®ãªãŒãã³ãªãããã³ã«ã§ããã¯ã©ã€ã¢ã³ãã¯ã¢ãã«ãšã®å¯Ÿè©±ãæ ããMCP ãµãŒããŒã¯ããŒã«ã»ãªãœãŒã¹ã»ããã³ãããã³ãã¬ãŒããæäŸããŸããæšæºã¡ãã»ãŒãžã§ããåãããããã1 ã€ã®ãµãŒããŒãè€æ°ã®ã¯ã©ã€ã¢ã³ãã§åå©çšã§ããŸãã