Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ILP Drone Delivery MCP ServerPlan a 5kg delivery to Edinburgh Castle with cooling requirements"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ILP Drone Delivery MCP Server
Model Context Protocol server enabling Large Language Models to interact with the ILP Drone Delivery System through natural language
Overview
This MCP server allows AI assistants like Claude to plan drone deliveries, check availability, and visualize routes using natural language queries instead of manual API calls.
Example usage:
User: "Can you plan a delivery to Edinburgh Castle with 5kg capacity?"
Claude: [Uses MCP tools] "I can send Drone 3, estimated cost $12.50, 45 moves..."Features
Available Tools
list_available_drones - Get all drones with capabilities
get_drone_details - Get specific drone information
plan_delivery - Plan a single delivery with cost/time estimates
check_drone_availability - Check which drones can handle requirements
get_delivery_geojson - Generate GeoJSON for map visualization
plan_multiple_deliveries - Plan multi-drone delivery routes
Prerequisites
Node.js 18+ installed
ILP CW2 Service running on http://localhost:8080
Claude Desktop (for LLM integration) OR manual testing
π§ Installation
Step 1: Set Up Project
cd ilp-mcp-server
# Install dependencies
npm install
# Make server executable
chmod +x server.js
# Link globally (for Claude Desktop)
npm linkStep 2: Start Your ILP Service
cd ILPCW2
java -jar target/*.jar app.jarVerify it's running: curl http://localhost:8080/api/v1/dronesWithCooling/false
Step 3: Test the MCP Server
cd ilp-mcp-server
npm testExpected output:
π§ͺ Testing ILP MCP Server
1οΈβ£ Testing API connection...
β
Connected! Found 8 drones
2οΈβ£ Testing list_available_drones...
β
Success! Retrieved 8 drones
3οΈβ£ Testing plan_delivery...
β
Success! Planned delivery
Cost: $11.06
Moves: 26
Drone: 1
4οΈβ£ Testing get_delivery_geojson...
β
Success! Generated GeoJSON
Type: FeatureCollection
Features: 2
β
All tests passed! (4/4)π€ Claude Desktop Integration
Configuration
Edit your Claude Desktop config file:
Mac: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Add this configuration:
{
"mcpServers": {
"ilp-drone": {
"command": "node",
"args": ["/Users/rheabose/ilp-mcp-server/server.js"]
}
}
}π¬ Example Queries
Try these in Claude Desktop:
Basic Queries
"What drones are available?"
"Show me drones with cooling capability"
"Get details for drone 3"Planning Deliveries
"Plan a delivery to coordinates (-3.188, 55.945) with 4kg capacity"
"I need to deliver 5kg with heating to Edinburgh Castle"
"Can you plan a delivery to (lng: -3.19, lat: 55.94) requiring cooling?"Checking Availability
"Which drones can handle a 6kg delivery with heating?"
"Check if any drones are available for a 3kg cooled delivery"Visualization
"Generate a GeoJSON path for a delivery to (-3.188, 55.945) with 4kg capacity"
"Show me the route visualization for a delivery to Edinburgh"Multi-Delivery
"Plan deliveries to these locations:
1. (-3.188, 55.945) - 4kg
2. (-3.192, 55.943) - 3kg
3. (-3.185, 55.946) - 5kg"π§ͺ Manual Testing (Without Claude Desktop)
You can test the MCP server manually using the test script:
npm testOr test individual API calls:
# Test list drones
curl http://localhost:8080/api/v1/dronesWithCooling/false
# Test plan delivery
curl -X POST http://localhost:8080/api/v1/calcDeliveryPath \
-H "Content-Type: application/json" \
-d '[{"id":999,"requirements":{"capacity":4.0},"delivery":{"lng":-3.188,"lat":55.945}}]'ποΈ Architecture
βββββββββββββββββββ
β Claude Desktop β
β (LLM Client) β
ββββββββββ¬βββββββββ
β MCP Protocol (stdio)
β
ββββββββββΌβββββββββ
β MCP Server β
β (server.js) β
ββββββββββ¬βββββββββ
β HTTP REST API
β
ββββββββββΌβββββββββ
β ILP CW2 API β
β (Spring Boot) β
βββββββββββββββββββπ Tool Descriptions
list_available_drones
Purpose: Get all drones with capabilities
Parameters:
hasCooling(optional): Filter by cooling capability
Returns: List of drones with capacity, features, costs
plan_delivery
Purpose: Plan a complete delivery route
Parameters:
deliveryLng,deliveryLat: Delivery locationcapacity: Required capacity in kgheating,cooling(optional): Temperature requirementsdate(optional): Delivery date
Returns: Cost, moves, drone assignment, route summary
check_drone_availability
Purpose: Find drones matching specific requirements
Parameters:
capacity: Required capacityheating,cooling(optional): Temperature needsdate(optional): Date to check
Returns: List of available drone IDs
get_delivery_geojson
Purpose: Generate map visualization data
Parameters: Delivery location and requirements
Returns: GeoJSON with flight paths
π€ Author
RheaBose University of Edinburgh - Informatics Large Practical