ð MCP Game Server
ãªã¢ãŒãð MCP Game Server ã«ã€ããŠ
MCPlayerOneã¯ãMCPã¯ã©ã€ã¢ã³ããããã¬ã€ããAIçæã®è¿·è·¯ã¢ããã³ãã£ãŒã²ãŒã ã§ããæ¢åã®ã¹ããŒãªãŒãæ¢çŽ¢ããããããŒããæå®ããŠã²ãŒã ãäœæãããã§ããŸãã
äž»ãªæ©èœ
- 01ããŒãã«åºã¥ãã¹ããŒãªãŒãšãããã®çæ
- 02ã²ãŒã ã®éå§ãšé²è¡ç¶æ³ã®åé
- 03å Žæã®æ¢çŽ¢ãšãã¬ã€ã€ãŒã®ç§»å
- 04ã¢ã€ãã ã®ååŸãšèª¿æ»
- 05ã¹ããŒãªãŒãšã©ã³ãã³ã°ã®ç¢ºèª
掻çšã·ãŒã³
- 01ãšãŒãžã§ã³ãçµç±ã§çæãããè¿·è·¯ããã¬ã€
- 02ãŠã§ããµã€ãããªããžããªãã¢ã€ãã¢ã顿ã«ã²ãŒã ãäœæ
MCP 察å¿
ã²ãŒã äœæãã»ãã·ã§ã³ç®¡çãæ¢çŽ¢ãã©ã³ãã³ã°ç¢ºèªã®ããŒã«ãæäŸããMCPãµãŒããŒã§ããã¯ã©ã€ã¢ã³ãã¯SSEã§æ¥ç¶ããŸãã
èšå®
ãªã¢ãŒããµãŒããŒã¯ã€ã³ã¹ããŒã«äžèŠã§ããã¯ã©ã€ã¢ã³ããéžãã§èšå®ãã³ããŒããããã¯ã³ã¯ãªãã¯ã§å°å ¥ã§ããŸãã
https://mcplayerone.onrender.com/api/v1/mcp/sseclaude mcp add --transport http game-server https://mcplayerone.onrender.com/api/v1/mcp/sse{"mcpServers":{"game-server":{"type":"http","url":"https://mcplayerone.onrender.com/api/v1/mcp/sse"}}}Cursor ã§éã{"servers":{"game-server":{"type":"http","url":"https://mcplayerone.onrender.com/api/v1/mcp/sse"}}}VS Code ã§éã{"mcpServers":{"game-server":{"type":"http","url":"https://mcplayerone.onrender.com/api/v1/mcp/sse"}}}{"mcpServers":{"game-server":{"serverUrl":"https://mcplayerone.onrender.com/api/v1/mcp/sse"}}}ã³ãã³ãã¯ã¿ãŒããã«ã§å®è¡ããJSON ã¯åã¯ã©ã€ã¢ã³ãã® MCP èšå®ã«è²Œãä»ããŠåèµ·åããŸããèªå¯ãå¿ èŠãªãµãŒããŒã¯ååæ¥ç¶æã«ãã°ã€ã³ãæ±ããŸãã
ããŒã«
詳现

ð MCPlayerOne
æ³ååã AI çæã²ãŒã ã«å€ããŸããã
MCPlayerOne ãžãããããã·ã³ã»ãŠã§ãŒããè¿·å®®æ¢çŽ¢ãã¯ãŒã«ãæ§ç¯ã楜ãããã¢ããã³ãã£ãŒãã©ãããã©ãŒã ã§ããAI ãçæããèªç±ãªäžçãäœæããæ¢çŽ¢ããŠãã¬ã€ããŸããããNext.jsãLangflowããããŠããªãã®æ³ååã«ãã£ãŠå®çŸããŸãã

äžçãæ¢çŽ¢ããŸãããïŒã²ãŒã ãã¬ã€äŸ
ð® MCP ããŒã«ã§æ¥ç¶ããŠãã¬ã€
ãæ°ã«å ¥ãã®ãšãŒãžã§ã³ãããŒã«ã䜿ã£ãŠå ¬é MCP ã²ãŒã ãµãŒããŒã«æ¥ç¶ããã°ããµãŒããŒãã»ããã¢ããããããšãªããããã«ãã¬ã€ã§ããŸãïŒ
𧪠Warp PreviewïŒã¿ãŒããã«ïŒ
- Warp Preview ãããŠã³ããŒãããŠã€ã³ã¹ããŒã«ããŸã
- Warp Preview ãéããŸã
SettingsâManage MCP serversâ+Addã®é ã«é²ã¿ãŸã- 次ã®å
容ããSSE endpoint URLããã£ãŒã«ãã«è²Œãä»ããŸãïŒ
https://mcplayerone.onrender.com/api/v1/mcp/sse - ä¿åããŠæ¥ç¶ããŸãïŒ
- Warp Preview ãã MCP ã²ãŒã ãµãŒããŒãçŽæ¥æäœã§ããããã«ãªããŸãã
ð¥ïž CursorïŒAI IDEïŒ
- Cursor IDE ãã€ã³ã¹ããŒã«ããŸã
- MCP ã²ãŒã ãµãŒããŒãããŒã«ãµãŒããŒãšããŠè¿œå ããŸãïŒ
- Cursor ãéããExtensions/Integrations ã«é²ã¿ãŸãã
- 次ã®èšå®ã§æ°ãã MCP ããŒã«ãµãŒããŒã远å ããŸãïŒ
{ "MCPlayerOne": { "transportType": "sse", "url": "https://mcplayerone.onrender.com/api/v1/mcp/sse", "openapi": "https://mcplayerone.onrender.com/api/v1/mcp/openapi.json" } }
- ãã¬ã€ãéå§ããŸãïŒ Cursor ã®ãã£ãããã³ãŒãããŒã«ã䜿ã£ãŠ MCP ã³ãã³ããéä¿¡ããããç§»åãèªååããããã²ãŒã ããŒã¿ãåæãããã§ããŸãã
ð€ ClaudeïŒAI ãã£ãããããïŒãã¹ã¯ãããïŒ
- Python ãš pip ãã€ã³ã¹ããŒã«ããŸã
- uv ãã€ã³ã¹ããŒã«ããŸãïŒ
pip install uv - mcp-proxy ãã€ã³ã¹ããŒã«ããŸãïŒ
uvx install mcp-proxy - 次ã®å
容ã Claude Desktop ã®èšå®ã«è¿œå ããŸãïŒ
{ "mcpServers": { "MCPlayerOne": { "command": "uvx", "args": ["mcp-proxy", "https://mcplayerone.onrender.com/api/v1/mcp/sse"] } } } - Claude Desktop ãåèµ·åããMCPlayerOne ãµãŒããŒãéžæããŠãã¬ã€ãéå§ããŸãïŒ
ð ïž ãã©ãã«ã·ã¥ãŒãã£ã³ã°
- 404 ãŸãã¯æ¥ç¶ãšã©ãŒãçºçããŸããïŒ äžèšã®æ£ãã Render URL ã䜿çšããŠããããšã確èªããŠãã ããã
- ãšãŒãžã§ã³ããå¿çããŸãããïŒ æ£ãã SSE ãšã³ããã€ã³ããš OpenAPI URL ã䜿çšããŠããããšã確èªããŠãã ããã
- ã»ãã·ã§ã³ãã¿ã€ã ã¢ãŠãããŸããïŒ SSE ã»ãã·ã§ã³ã¯ãæäœããªãç¶æ ã 1 æéç¶ããšçµäºããŸããå¿ èŠã«å¿ããŠåæ¥ç¶ããŠãã ããã
ðŠ ã¯ããã«
ããã«ã²ãŒã ãå§ãããå Žåããèªåã®ãµãŒããŒãã»ããã¢ãããããå ŽåããMCPlayerOne ã¯ç°¡åã«å§ããããŸãïŒ
ããã«ãã¬ã€ãã
- äžèšã®æ¹æ³ïŒWarp PreviewãCursorãClaude ãªã©ïŒã䜿ã£ãŠå ¬é MCP ã²ãŒã ãµãŒããŒã«æ¥ç¶ããŸãã
æ¥ç¶ãããããšãŒãžã§ã³ãã« MCPlayerOne ã®ã²ãŒã ããã¬ã€ããããšäŒããŠãã ããã
ããšã¯ããã¬ã€ãããã²ãŒã ããšãŒãžã§ã³ãã«äŒããã ãã§ããå¿ èŠã«å¿ããŠãŠãŒã¶ãŒåãæå®ã§ããŸãïŒæå®ããªãå Žåã¯ããšãŒãžã§ã³ããéžã³ãŸãïŒã
èªåã®ã²ãŒã ãäœæãã
èªåã§ã²ãŒã ãäœæããçæããŠãã¬ã€ããããšãã§ããŸãã
èªç±ã«æ¥œãã¿ãŸãããããŠã§ããµã€ãã GitHub ãªããžããªãããŒãã«ããããããŒãã ããæå®ãããã§ããŸããåµé åãæ³ååãçºæ®ããã»ã©ãã²ãŒã ã¯é¢çœããªããŸããAI çæã®ç䟡ãçºæ®ãããã®ã¯ããŸãã«ããã§ãã
ããšãã°ããšãŒãžã§ã³ãã«ãæ°ãã MCPlayerOne ã²ãŒã ãäœããŸããããããŒãã«ã¯ github https://github.com/SonicDMG/mcp-game-server ã䜿ã£ãŠãã ãããããDOOM ãããŒãã«ããŠãå®å®æµ·å µéå¡ãšããŠãã¬ã€ããæ°ãã MCPlayerOne ã²ãŒã ãäœã£ãŠãã ããããšäŒããŠã¿ãŠãã ããã
ã²ãŒã ã®äœæã«ã¯çŽ 2ïœ3 åããããŸãã®ã§ããåŸ ã¡ãã ããã
ð² ã²ãŒã ãã¬ã€
ðïž å©çšå¯èœãª MCP ããŒã«
以äžã¯ãããªãïŒãŸãã¯ãšãŒãžã§ã³ãïŒãã²ãŒã ããã¬ã€ããããã«äœ¿çšã§ãã䞻㪠MCP ããŒã«ã§ããã»ãšãã©ã®ãšãŒãžã§ã³ãã¯ãå ¥åãç®æšã«åºã¥ããŠã¢ã¯ã·ã§ã³ãéžæããŸãã
| ããŒã«å | æ©èœ |
|---|---|
| listStories | ãã¬ã€å¯èœãªãã¹ãŠã®ã²ãŒã ã¹ããŒãªãŒãäžèŠ§è¡šç€ºããŸãã |
| createGame | ããŒãã«åºã¥ããŠãæ°ããã²ãŒã ã¹ããŒãªãŒããã±ãŒã·ã§ã³ãã¢ã€ãã ãã«ããŒç»åãçæããŸãã |
| startGame | ç¹å®ã®ã¹ããŒãªãŒã§ãŠãŒã¶ãŒã®æ°ããã²ãŒã ã»ãã·ã§ã³ãéå§ããŸãããã§ã«éå§æžã¿ã®å Žåã¯åéããŸãã |
| getGameState | ãŠãŒã¶ãŒãšã¹ããŒãªãŒã®çŸåšã®ã²ãŒã ç¶æ ïŒãã¬ã€ã€ãŒãšãã±ãŒã·ã§ã³ïŒãååŸããŸãã |
| lookAround | ãã¬ã€ã€ãŒã®çŸåšã®ãã±ãŒã·ã§ã³ã®è©³çްïŒèª¬æãã¢ã€ãã ãåºå£ïŒãååŸããŸãã |
| movePlayer | æå¹ãªå Žåãæå®ããã¿ãŒã²ãã ID ã®ãã±ãŒã·ã§ã³ã«ãã¬ã€ã€ãŒãç§»åããŸãã |
| takeItem | çŸåšã®ãã±ãŒã·ã§ã³ã«ããæå®ã¢ã€ãã ãæŸããŸãã |
| examineTarget | çŸåšã®éšå±ã«ããç¹å®ã®ã¢ã€ãã ãç¹åŸŽã®è©³çްãªèª¬æãååŸããŸãã |
| getLeaderboard | ç¹å®ã®ã¹ããŒãªãŒã®ãªãŒããŒããŒãããŒã¿ãååŸããŸãã |
| getStoryById | è«ç ID ãæå®ããŠãç¹å®ã®ã¹ããŒãªãŒã®è©³çްãååŸããŸãã |
âš ç¹åŸŽ
- ðª AI çæã¯ãŒã«ãïŒæ°ããã¹ããŒãªãŒãè¿·è·¯ãããã«äœæ
- ðŸ ASCII ã¢ãŒããšãã¯ã»ã«ã¢ãŒãïŒã¬ãããªããžã¥ã¢ã«ãšã°ãªããããŒã¹ã®ã¬ã€ã¢ãŠã
- ð ãªãŒããŒããŒãïŒæ å ãç®æããŠç«¶ããåè ãšæè ã確èª
- ð ã¢ãŒãã£ãã¡ã¯ããšéšå±ïŒåéãæ¢çŽ¢ã亀æµ
- ð ã·ã³ã»ãŠã§ãŒãããŒãïŒããªã³ã«ã©ãŒããã¯ã»ã«ãã©ãŽã³ãªã©
- ð§âð» Langflow ãæŽ»çšïŒæ¬¡äžä»£ã® AI çµ±å
ð ïž ããŒã«ã«éçº
ç¬èªã®ãµãŒããŒãå®è¡ããããéçºã«è²¢ç®ãããããŸããïŒä»¥äžã®æé ã«åŸã£ãŠãã ããïŒ
npm install
npm run dev
http://localhost:3000 ãéããšãããŒã«ã«ã§ãã¬ã€ã§ããŸãã
- å¿
èŠã«å¿ããŠ
.envãç·šéããAPI ããŒããšã³ããã€ã³ããããŒã«ãžã®ã¢ã¯ã»ã¹ãèšå®ããŸãã - Astra DBãLangflowããã®ä»ã®çµ±åã«ã€ããŠã¯ã
.env.exampleå ã®ã³ã¡ã³ãã«åŸã£ãŠãã ããã
MCP ããŒã«ã®ã»ããã¢ããïŒããŒã«ã«éçºåãïŒ
- ããŒã«ã«éçºã§ã¯ã以äžã䜿çšããŸãïŒ
http://localhost:3000/api/v1/mcp/sseïŒSSE ãšã³ããã€ã³ãïŒhttp://localhost:3000/api/v1/mcp/openapi.jsonïŒOpenAPI 仿§ïŒ
- ããŒã«ã«éçºã§ã¯ããã¹ãŠã® MCP ããŒã«ãããã©ã«ãã§æå¹ã«ãªã£ãŠããŸãã
ð ã³ã³ããªãã¥ãŒã·ã§ã³
ãã«ãªã¯ãšã¹ããæè¿ããŸãïŒIssue ãäœæãããã©ãŒã¯ããŠãã¡ã¿ããŒã¹ã§æãã¯ã€ã«ããªäžçãäžç·ã«äœããŸãããã
- ãªããžããªã«ã¹ã¿ãŒãä»ãã â
ð ãªã³ã¯
ð ãšã©ãŒãšã¹ããŒã¿ã¹ã³ãŒãã®ãªãã¡ã¬ã³ã¹ïŒè£éºïŒ
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãMCP Game Server API ããã³ SSE/JSON-RPC ã€ã³ã¿ãŒãã§ãŒã¹ã§äœ¿çšãããäž»ãªãšã©ãŒã³ãŒããšã¹ããŒã¿ã¹ã³ãŒãããããã«åç §ã§ããããã«èª¬æããŸãïŒ
HTTP ã¹ããŒã¿ã¹ã³ãŒã
| ã³ãŒã | çºçæ¡ä»¶ | æå³ |
|---|---|---|
| 200 | ãªã¯ãšã¹ãã®æåïŒã²ãŒã ããžãã¯ã®ãšã©ãŒãæ¬æã«å«ãŸããå ŽåããããŸãïŒ | OK |
| 400 | ãªã¯ãšã¹ãã®åœ¢åŒäžæ£ããã©ã¡ãŒã¿ãŒã®æ¬ èœãŸãã¯ç¡å¹ | Bad Request |
| 403 | èš±å¯ãããŠããªãã¢ã¯ã·ã§ã³ïŒäŸïŒèŠä»¶ãæºãããŠããªãïŒ | Forbidden |
| 404 | ãªãœãŒã¹ãèŠã€ãããªãïŒãã¬ã€ã€ãŒãã¹ããŒãªãŒããã±ãŒã·ã§ã³ãã¢ã€ãã ïŒ | Not Found |
| 409 | ç«¶åïŒäŸïŒåã ID ã®ã¹ããŒãªãŒããã§ã«ååšããïŒ | Conflict |
| 500 | å éšãµãŒããŒãšã©ãŒ | Server Error |
JSON-RPC ãšã©ãŒã³ãŒãïŒSSE/ããŒã«ãããã·ïŒ
| ã³ãŒã | çºçæ¡ä»¶ | æå³ |
|---|---|---|
| -32000 | äžè¬çãªãµãŒããŒãšã©ãŒïŒãããã·ã®å€±æãJSON 以å€ã®ã¬ã¹ãã³ã¹ãªã©ïŒ | ãµãŒããŒãšã©ãŒïŒJSON-RPC 2.0 äºçŽæžã¿ïŒ |
| -32601 | ããŒã«ãŸãã¯ã¡ãœãããèŠã€ãããªã | ã¡ãœãããèŠã€ãããªãïŒJSON-RPC 2.0ïŒ |
| -32602 | ããŒã«ãŸãã¯ã¡ãœããã®ãã©ã¡ãŒã¿ãŒãç¡å¹ | ãã©ã¡ãŒã¿ãŒãç¡å¹ïŒJSON-RPC 2.0ïŒ |
| -32603 | å éš JSON-RPC ãšã©ãŒ | å éšãšã©ãŒïŒJSON-RPC 2.0ïŒ |
ã²ãŒã ããžãã¯ïŒã¬ã¹ãã³ã¹ãã£ãŒã«ã
| ãã£ãŒã«ã | 衚瀺ãããæ¡ä»¶ | æå³ |
|---|---|---|
| success | ãã¹ãŠã®ã¬ã¹ãã³ã¹ | æäœãæåããå Žåã¯trueãããã§ãªãå Žåã¯false |
| error | å€±ææ | ãŠãŒã¶ãŒïŒãšãŒãžã§ã³ãåãã®ãšã©ãŒã¡ãã»ãŒãž |
| hint | å Žåã«ãã | ãŠãŒã¶ãŒïŒãšãŒãžã§ã³ãåãã®ä»»æã®ãã³ã |
| needsPlayer | ãã¬ã€ã€ãŒãèŠã€ãããªãå Žå | ã¯ã©ã€ã¢ã³ãã/startãåŒã³åºãå¿ èŠãããããšã瀺ããŸã |
泚æäºé
- ã²ãŒã ããžãã¯ã®ãšã©ãŒïŒäŸïŒäžæ£è§£ãã¢ã€ãã äžè¶³ïŒã§ã¯ãHTTP 200ãšãšãã«ãæ¬æã«
success: falseãšerrorã¡ãã»ãŒãžãè¿ãããããšããããŸãã - ãšãŒãžã§ã³ããšã®äºææ§ã®ãããSSEããã³ããŒã«ã®ãããã·ã§ã¯JSON-RPCãšã©ãŒã³ãŒãã䜿çšãããŸãã
- ã¹ããŒãã®è©³çްã«ã€ããŠã¯ãOpenAPI仿§ãåç §ããŠãã ããã
ã蚪åããããšãããããŸããæ¢æ€è ããïŒ è¿·è·¯ãå ¥ãçµã¿ãã¢ãŒãã£ãã¡ã¯ããèŒããŸãããã«ã ðªðŠð©ð§ðšð«
ã³ã¡ã³ã
MCP ã¯åããŠã§ããïŒ
ãããã³ã«ã®æŠèŠããæåã®ãµãŒããŒã®å°å ¥ãŸã§ãããããçåã«ãŸãšããŠçããŸãã
AI ã¢ããªã±ãŒã·ã§ã³ãå€éšã®ããŒã«ãããŒã¿ãœãŒã¹ã«çµ±äžçãªæ¹æ³ã§æ¥ç¶ããããã®ãªãŒãã³ãªãããã³ã«ã§ããã¯ã©ã€ã¢ã³ãã¯ã¢ãã«ãšã®å¯Ÿè©±ãæ ããMCP ãµãŒããŒã¯ããŒã«ã»ãªãœãŒã¹ã»ããã³ãããã³ãã¬ãŒããæäŸããŸããæšæºã¡ãã»ãŒãžã§ããåãããããã1 ã€ã®ãµãŒããŒãè€æ°ã®ã¯ã©ã€ã¢ã³ãã§åå©çšã§ããŸãã