File size: 5,438 Bytes
551ad28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
# 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 <PID>
   ```

## 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.