About Tak Server MCP
Tak Server MCP is an MCP server published by jfuginay in the AI category: model Context Protocol (MCP) server for TAK Server integration with geospatial support.
The repository has 11 stars and 10 forks, with the last commit a year ago. Six months or more without a commit doesn't mean the server is broken, but check the open issues before depending on it in production.
Install
git clone https://github.com/jfuginay/tak-server-mcpThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Ask AI
Ask AI about Tak Server MCP
Powered by Claude · Grounded in docs
Security checks
Static checks derived from the repository yesterday. Heuristics on the source, not an audit.
- ✓README presentThe repository ships documentation.
- ✓License declaredUsable under a stated license.
- !Tests presentNo tests found. Behaviour changes may go unnoticed between versions.
- ✓Dependencies pinnedA lockfile pins dependency versions.
- ✓No dynamic code executionSource scan found no eval, dynamic Function, or shell execution.
- !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.
Releases
README
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.
🚀 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 areastak_calculate_distance- Distance calculations with travel time estimatestak_find_nearest- Find nearest entities with bearingstak_create_geofence- Create geofenced areas with alertstak_analyze_movement- Track movements and detect anomalies
📡 Real-time Operations
tak_get_cot_events- Retrieve Cursor on Target eventstak_send_cot_event- Send CoT messagestak_subscribe_events- Subscribe to live event streamstak_get_entities- Get current entity states
🚨 Mission & Emergency
tak_get_missions- List and manage missionstak_get_alerts- Retrieve and filter alertstak_send_emergency- Send emergency broadcaststak_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 (Official)
- FreeTAKServer (Open Source)
- taky (Lightweight, CoT only)
🛠️ Installation
Using NPM
npm install @skyfi/tak-server-mcp
From Source
git clone https://github.com/skyfi/tak-server-mcp.git
cd tak-server-mcp
npm install
npm run build
Using Docker
docker pull skyfi/tak-server-mcp:latest
⚙️ Configuration
Environment Variables
# 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:
{
"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:
{
"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
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
# 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
{
"tool": "tak_calculate_distance",
"arguments": {
"from": { "coordinates": [37.7749, -122.4194] },
"to": { "coordinates": [37.7849, -122.4094] },
"units": "kilometers"
}
}
Find Nearest Friendly Units
{
"tool": "tak_find_nearest",
"arguments": {
"point": { "coordinates": [37.7749, -122.4194] },
"maxDistance": 5000,
"entityTypes": ["a-f-*"],
"maxResults": 5
}
}
Create Security Geofence
{
"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
# Run all tests
npm test
# Run with coverage
npm run test:coverage
# Run integration tests
npm run test:integration
Test with TAK Server
# Test connection
./test-all-tools.js
# Run specific tool tests
./test-all-tools.js --tool tak_spatial_query
🐳 Docker Deployment
Build Image
docker build -t tak-server-mcp .
Run Container
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
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
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
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
🤝 Contributing
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
📄 License
This project is licensed under the MIT License - see the 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
- Discussions: GitHub 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
README fetched from the repository yesterday. The original is authoritative.