Skip to main content
Glama

TAK Server MCP

by jfuginay
README.md8.72 kB
# TAK Server MCP (Model Context Protocol) A Model Context Protocol (MCP) server for integrating TAK Server with AI systems, enabling geospatial-aware deep research and analysis capabilities. [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![MCP Version](https://img.shields.io/badge/MCP-2024--11--05-blue.svg)](https://modelcontextprotocol.io) [![Node Version](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen.svg)](https://nodejs.org) ## 🚀 Features ### Multi-Transport Support - **stdio** - Standard input/output for CLI integration - **HTTP+SSE** - Server-Sent Events for web integration - **WebSocket** - Real-time bidirectional communication ### Complete Tool Suite (11 Tools) #### 📍 Geospatial Operations - `tak_spatial_query` - Query entities within geographic areas - `tak_calculate_distance` - Distance calculations with travel time estimates - `tak_find_nearest` - Find nearest entities with bearings - `tak_create_geofence` - Create geofenced areas with alerts - `tak_analyze_movement` - Track movements and detect anomalies #### 📡 Real-time Operations - `tak_get_cot_events` - Retrieve Cursor on Target events - `tak_send_cot_event` - Send CoT messages - `tak_subscribe_events` - Subscribe to live event streams - `tak_get_entities` - Get current entity states #### 🚨 Mission & Emergency - `tak_get_missions` - List and manage missions - `tak_get_alerts` - Retrieve and filter alerts - `tak_send_emergency` - Send emergency broadcasts - `tak_manage_data_packages` - Upload/download data packages ### Advanced Features - 🔐 Multiple authentication methods (OAuth 2.0, API tokens, certificates) - 📊 H3 hexagonal indexing for spatial queries - 🗺️ MGRS coordinate conversion - ⚡ Real-time WebSocket subscriptions - 💾 Intelligent caching with TTL - 🔍 Comprehensive error handling ## 📋 Prerequisites - Node.js >= 18.0.0 - TAK Server instance (one of): - [TAK Server](https://tak.gov/) (Official) - [FreeTAKServer](https://github.com/FreeTAKTeam/FreeTakServer) (Open Source) - [taky](https://github.com/tkuester/taky) (Lightweight, CoT only) ## 🛠️ Installation ### Using NPM ```bash npm install @skyfi/tak-server-mcp ``` ### From Source ```bash git clone https://github.com/skyfi/tak-server-mcp.git cd tak-server-mcp npm install npm run build ``` ### Using Docker ```bash docker pull skyfi/tak-server-mcp:latest ``` ## ⚙️ Configuration ### Environment Variables ```bash # TAK Server Connection TAK_SERVER_URL=https://your-tak-server.com TAK_SERVER_API_TOKEN=your-api-token TAK_SERVER_CLIENT_CERT=/path/to/cert.pem TAK_SERVER_CLIENT_KEY=/path/to/key.pem # MCP Configuration MCP_TRANSPORT=stdio MCP_PORT=3000 MCP_AUTH_ENABLED=false ``` ### Configuration File Create a `config.json`: ```json { "takServer": { "url": "https://your-tak-server.com", "apiToken": "your-token", "verifySsl": true }, "mcp": { "transport": "stdio", "port": 3000 }, "tools": { "enabledTools": ["tak_get_cot_events", "tak_spatial_query"] } } ``` ## 🚀 Quick Start ### 1. With Claude Desktop Add to your Claude Desktop config: ```json { "mcpServers": { "tak-server": { "command": "npx", "args": ["@skyfi/tak-server-mcp"], "env": { "TAK_SERVER_URL": "https://your-tak-server.com", "TAK_SERVER_API_TOKEN": "your-token" } } } } ``` ### 2. With Docker ```bash docker run -it --rm \ -e TAK_SERVER_URL=https://your-tak-server.com \ -e TAK_SERVER_API_TOKEN=your-token \ skyfi/tak-server-mcp:latest ``` ### 3. Command Line ```bash # Install globally npm install -g @skyfi/tak-server-mcp # Run with environment variables TAK_SERVER_URL=https://your-tak-server.com \ TAK_SERVER_API_TOKEN=your-token \ tak-server-mcp # Or with config file tak-server-mcp --config ./config.json ``` ## 📚 Usage Examples ### Calculate Distance Between Points ```json { "tool": "tak_calculate_distance", "arguments": { "from": { "coordinates": [37.7749, -122.4194] }, "to": { "coordinates": [37.7849, -122.4094] }, "units": "kilometers" } } ``` ### Find Nearest Friendly Units ```json { "tool": "tak_find_nearest", "arguments": { "point": { "coordinates": [37.7749, -122.4194] }, "maxDistance": 5000, "entityTypes": ["a-f-*"], "maxResults": 5 } } ``` ### Create Security Geofence ```json { "tool": "tak_create_geofence", "arguments": { "name": "Base Perimeter", "shape": { "type": "circle", "center": [37.7749, -122.4194], "radius": 2000 }, "alertLevel": "high", "triggers": { "onEntry": true, "onExit": true } } } ``` ## 🧪 Testing ### Run Tests ```bash # Run all tests npm test # Run with coverage npm run test:coverage # Run integration tests npm run test:integration ``` ### Test with TAK Server ```bash # Test connection ./test-all-tools.js # Run specific tool tests ./test-all-tools.js --tool tak_spatial_query ``` ## 🐳 Docker Deployment ### Build Image ```bash docker build -t tak-server-mcp . ``` ### Run Container ```bash docker run -d \ --name tak-mcp \ -e TAK_SERVER_URL=https://tak.example.com \ -e TAK_SERVER_API_TOKEN=your-token \ -p 3000:3000 \ tak-server-mcp ``` ### Docker Compose ```yaml version: '3.8' services: tak-mcp: image: skyfi/tak-server-mcp:latest environment: TAK_SERVER_URL: ${TAK_SERVER_URL} TAK_SERVER_API_TOKEN: ${TAK_SERVER_API_TOKEN} MCP_TRANSPORT: http MCP_PORT: 3000 ports: - "3000:3000" ``` ## 🤝 Integration Examples ### With LangChain ```python from langchain.tools import MCPTool tak_tool = MCPTool( name="tak-server", server_url="http://localhost:3000", auth_token="your-mcp-token" ) result = agent.run("Find all units within 10km of coordinates 37.7749, -122.4194") ``` ### With Anthropic SDK ```typescript import { MCPClient } from '@modelcontextprotocol/sdk'; const mcp = new MCPClient({ serverUrl: 'http://localhost:3000', transport: 'http' }); const tools = await mcp.listTools(); const result = await mcp.callTool('tak_spatial_query', { center: [37.7749, -122.4194], radius: 10000 }); ``` ## 🏗️ Architecture ``` ┌─────────────────┐ ┌──────────────┐ ┌─────────────┐ │ AI Systems │────▶│ MCP Server │────▶│ TAK Server │ │ (LLMs, Agents) │◀────│ │◀────│ │ └─────────────────┘ └──────────────┘ └─────────────┘ │ │ │ │ ▼ │ │ ┌──────────────┐ │ └─────────────▶│ Tool Handlers│◀─────────────┘ └──────────────┘ ``` ## 🔒 Security - TLS 1.2+ for all communications - OAuth 2.0 and certificate-based authentication - Input validation and sanitization - Rate limiting and access controls - Audit logging for all operations ## 📖 Documentation - [API Reference](docs/API.md) - [Tool Documentation](docs/TOOLS.md) - [Integration Guide](docs/INTEGRATION.md) - [Deployment Guide](docs/DEPLOYMENT.md) - [Troubleshooting](docs/TROUBLESHOOTING.md) ## 🤝 Contributing We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details. 1. Fork the repository 2. Create your feature branch (`git checkout -b feature/amazing-feature`) 3. Commit your changes (`git commit -m 'Add amazing feature'`) 4. Push to the branch (`git push origin feature/amazing-feature`) 5. Open a Pull Request ## 📄 License This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. ## 🙏 Acknowledgments - TAK Product Center for TAK Server documentation - Anthropic for the MCP specification - The open-source geospatial community ## 📞 Support - **Issues**: [GitHub Issues](https://github.com/skyfi/tak-server-mcp/issues) - **Discussions**: [GitHub Discussions](https://github.com/skyfi/tak-server-mcp/discussions) - **Email**: support@skyfi.com ## 🚦 Status - ✅ All 11 advertised tools implemented - ✅ Multi-transport support (stdio, HTTP, SSE) - ✅ Docker support - ✅ FreeTAKServer compatible - 🚧 Test coverage in progress - 🚧 Additional tool development ongoing --- Made with ❤️ by SkyFi

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/jfuginay/tak-server-mcp'

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