# MCP Usage Guide This guide explains how to use the MCP (Model Context Protocol) integration for the RTS Commander game. ## Understanding MCP MCP (Model Context Protocol) is a standardized way for AI systems to interact with applications. It defines how AI agents can: 1. Access information about an application (resources) 2. Perform actions in an application (tools) 3. Maintain a persistent connection for ongoing interaction ## Our Implementation We've implemented an MCP server for the RTS Commander game that: - Runs on port 8001 - Exposes game state information - Provides tools for performing game actions - Integrates with the existing AI analysis system ## Available Tools The MCP server provides the following tools: 1. **get_game_state()** - Returns the current game state as JSON 2. **get_ai_analysis(language)** - Returns AI tactical analysis in the specified language 3. **move_units(unit_ids, target_x, target_y)** - Moves units to a target position 4. **attack_unit(attacker_ids, target_id)** - Commands units to attack an enemy unit 5. **build_building(building_type, position_x, position_y, player_id)** - Builds a structure 6. **send_game_command(command_type, **kwargs)** - Sends a generic command to the game ## Available Resources The MCP server provides the following resources: 1. **game_documentation** - Provides the game's README documentation 2. **game_rules** - Provides the game's architecture and rules documentation ## How to Use the MCP Server ### 1. Start the Servers First, you need to start both the main game server and the MCP server: ```bash # Terminal 1: Start main game server cd /home/luigi/rts/web python start.py # Terminal 2: Start MCP server cd /home/luigi/rts/web python mcp_server.py ``` Or you can start both with a single command: ```bash cd /home/luigi/rts/web python start_with_mcp.py ``` ### 2. Verify the Server is Running Check that the MCP server is listening on port 8001: ```bash netstat -tlnp | grep :8001 ``` You should see output showing that a process is listening on port 8001. ### 3. Connect an MCP-Compatible Client To actually use the MCP server, you need an MCP-compatible client. Some options include: #### Option 1: Use a Generic MCP Client You can create a simple Python client to test the connection: ```python # mcp_test_client.py import asyncio import json from mcp.client.stdio import stdio_client from mcp.types import InitializeRequest async def test_mcp_client(): # This is a simplified example print("Connecting to MCP server...") # In practice, you would connect to localhost:8001 if __name__ == "__main__": asyncio.run(test_mcp_client()) ``` #### Option 2: Use an AI Framework with MCP Support Some AI frameworks have built-in MCP support. You would typically configure them to connect to: - Host: localhost - Port: 8001 #### Option 3: Manual Testing with curl You can test basic connectivity with curl: ```bash curl -v http://localhost:8001 ``` Note that MCP typically uses a more complex protocol than simple HTTP requests, so full functionality requires an actual MCP client. ## Common Issues and Troubleshooting ### "Connection refused" Error If you get a connection refused error: 1. Make sure both servers are running 2. Check that the MCP server is listening on port 8001: ```bash netstat -tlnp | grep :8001 ``` 3. Verify firewall settings if running on a remote machine ### "claude: command not found" The `claude` command is not a standard command. It would only exist if you had installed a specific AI client that provides this command. Our implementation provides the MCP server, but you need to separately obtain an MCP client. ### Port Conflicts If port 8001 is already in use: 1. You can modify the port in `mcp_server.py` 2. Or stop the process using port 8001: ```bash lsof -i :8001 kill -9 ``` ## Example Usage Scenarios ### Scenario 1: Getting Game State An AI agent could call the `get_game_state()` tool to understand the current situation: ```json { "tool": "get_game_state" } ``` ### Scenario 2: Moving Units An AI agent could move units to a position: ```json { "tool": "move_units", "arguments": { "unit_ids": ["unit1", "unit2"], "target_x": 100, "target_y": 200 } } ``` ### Scenario 3: Building a Structure An AI agent could build a barracks: ```json { "tool": "build_building", "arguments": { "building_type": "barracks", "position_x": 150, "position_y": 150, "player_id": 0 } } ``` ## Security Considerations The MCP server runs on a separate port (8001) from the main game server (7860) to isolate AI access from player connections. In a production environment, you should consider: 1. Adding authentication for MCP clients 2. Implementing rate limiting for commands 3. Adding input validation for all commands 4. Running the server in a secure network environment ## Extending the Integration To add new tools or resources: 1. Add new methods to the `_register_tools` or `_register_resources` methods in `RTSGameMCP` in `mcp_server.py` 2. Implement the functionality using existing game infrastructure 3. Test the new functionality ## Conclusion The MCP integration provides a robust foundation for AI agents to interact with the RTS Commander game. While you need an MCP-compatible client to actually use it, the server is fully functional and ready for integration with AI systems.