Skip to main content
Glama
mcp-routes.ts5.32 kB
import { Express, Request, Response } from 'express'; import { GeoFSController } from '../controllers/geofs-controller'; /** * Setup MCP routes for the GeoFS server */ export function setupMCPRoutes(app: Express, geofsController: GeoFSController): void { // MCP standard endpoint for server capabilities app.get('/mcp', (req: Request, res: Response) => { res.json({ name: 'geofs-mcp-server', version: '0.1.0', description: 'Model Context Protocol server for GeoFS flight simulator', capabilities: [ 'aircraft-control', 'flight-data', 'navigation', 'simulation-control' ], endpoints: [ { path: '/mcp/aircraft', methods: ['GET', 'POST'] }, { path: '/mcp/flight-data', methods: ['GET'] }, { path: '/mcp/navigation', methods: ['GET', 'POST'] }, { path: '/mcp/simulation', methods: ['GET', 'POST'] } ] }); }); // Aircraft control endpoints app.get('/mcp/aircraft', async (req: Request, res: Response) => { try { const flightData = await geofsController.executeCommand('getFlightData', {}); res.json({ status: 'success', data: flightData }); } catch (error) { res.status(500).json({ status: 'error', message: 'Failed to get aircraft data', error: (error as Error).message }); } }); app.post('/mcp/aircraft', async (req: Request, res: Response) => { try { const { action, params } = req.body; if (!action) { return res.status(400).json({ status: 'error', message: 'Missing required parameter: action' }); } let result; switch (action) { case 'setThrottle': result = await geofsController.executeCommand('setThrottle', { value: params.value }); break; case 'selectAircraft': result = await geofsController.executeCommand('selectAircraft', { aircraftId: params.aircraftId }); break; default: return res.status(400).json({ status: 'error', message: `Unknown action: ${action}` }); } res.json({ status: 'success', data: result }); } catch (error) { res.status(500).json({ status: 'error', message: 'Failed to execute aircraft command', error: (error as Error).message }); } }); // Flight data endpoints app.get('/mcp/flight-data', async (req: Request, res: Response) => { try { const flightData = await geofsController.executeCommand('getFlightData', {}); res.json({ status: 'success', data: flightData }); } catch (error) { res.status(500).json({ status: 'error', message: 'Failed to get flight data', error: (error as Error).message }); } }); // Navigation endpoints app.get('/mcp/navigation', async (req: Request, res: Response) => { try { const position = await geofsController.executeCommand('getPosition', {}); res.json({ status: 'success', data: position }); } catch (error) { res.status(500).json({ status: 'error', message: 'Failed to get navigation data', error: (error as Error).message }); } }); app.post('/mcp/navigation', async (req: Request, res: Response) => { try { const { action, params } = req.body; if (!action) { return res.status(400).json({ status: 'error', message: 'Missing required parameter: action' }); } let result; switch (action) { case 'setHeading': result = await geofsController.executeCommand('setHeading', { degrees: params.degrees }); break; default: return res.status(400).json({ status: 'error', message: `Unknown action: ${action}` }); } res.json({ status: 'success', data: result }); } catch (error) { res.status(500).json({ status: 'error', message: 'Failed to execute navigation command', error: (error as Error).message }); } }); // Simulation control endpoints app.post('/mcp/simulation', async (req: Request, res: Response) => { try { const { action, params } = req.body; if (!action) { return res.status(400).json({ status: 'error', message: 'Missing required parameter: action' }); } let result; switch (action) { case 'takeOff': result = await geofsController.executeCommand('takeOff', {}); break; case 'land': result = await geofsController.executeCommand('land', {}); break; default: return res.status(400).json({ status: 'error', message: `Unknown action: ${action}` }); } res.json({ status: 'success', data: result }); } catch (error) { res.status(500).json({ status: 'error', message: 'Failed to execute simulation command', error: (error as Error).message }); } }); }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/lobstercare/geofs-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server