satellitetracking-mcp-server
This project is a Model Context Protocol (MCP) server that provides satellite tracking data through the N2YO API. It supports tools to access real-time positions, predict satellite passes, and search for satellites using various criteria. Key functionality includes integration with the Claude desktop app and VSCode extension.
Satellite Tracking MCP Server
A Model Context Protocol (MCP) server that provides access to satellite tracking data using the N2YO API.
Features
This MCP server provides the following capabilities:
Tools
- get_satellite_position: Get real-time position of a satellite by NORAD ID
- get_satellite_tle: Get TLE (Two-Line Element) data for a satellite by NORAD ID
- predict_visual_passes: Predict visible passes of a satellite over a location
- predict_radio_passes: Predict radio frequency passes of a satellite over a location
- get_satellites_above: Get satellites currently above a specified location
- search_satellites: Search for satellites by name or category
Resources
- satellite://{norad_id}: Information about a satellite by NORAD ID
- satellites://category/{category_id}: List of satellites in a specific category
- satellites://above/{lat}/{lon}/{radius}: List of satellites above a specified location
Installation
Prerequisites
- Node.js 18 or higher
- A N2YO API key (available from N2YO API Services)
Setup
- Clone this repository or download the source code
- Install dependencies:
cd satellite-tracking-server
npm install
- Build the server:
npm run build
Configuration
The server requires a N2YO API key to function. You can provide this through the environment variable N2YO_API_KEY
.
MCP Settings Configuration
To use this server with Claude, add it to your MCP settings configuration file:
For Claude Desktop App (macOS)
Edit ~/Library/Application Support/Claude/claude_desktop_config.json
:
{
"mcpServers": {
"satellite-tracking": {
"command": "node",
"args": ["/path/to/satellite-tracking-server/build/index.js"],
"env": {
"N2YO_API_KEY": "your-api-key-here"
},
"disabled": false,
"autoApprove": []
}
}
}
For Claude VSCode Extension
Edit ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
:
{
"mcpServers": {
"satellite-tracking": {
"command": "node",
"args": ["/path/to/satellite-tracking-server/build/index.js"],
"env": {
"N2YO_API_KEY": "your-api-key-here"
},
"disabled": false,
"autoApprove": []
}
}
}
Usage Examples
Once the server is configured and running, you can use it with Claude to access satellite tracking data:
Get Satellite Position
<use_mcp_tool>
<server_name>satellite-tracking</server_name>
<tool_name>get_satellite_position</tool_name>
<arguments>
{
"norad_id": 25544,
"observer_lat": 40.7128,
"observer_lng": -74.0060
}
</arguments>
</use_mcp_tool>
Get Satellite TLE Data
<use_mcp_tool>
<server_name>satellite-tracking</server_name>
<tool_name>get_satellite_tle</tool_name>
<arguments>
{
"norad_id": 25544
}
</arguments>
</use_mcp_tool>
Predict Visual Passes
<use_mcp_tool>
<server_name>satellite-tracking</server_name>
<tool_name>predict_visual_passes</tool_name>
<arguments>
{
"norad_id": 25544,
"observer_lat": 40.7128,
"observer_lng": -74.0060,
"days": 7
}
</arguments>
</use_mcp_tool>
Search for Satellites
<use_mcp_tool>
<server_name>satellite-tracking</server_name>
<tool_name>search_satellites</tool_name>
<arguments>
{
"query": "ISS"
}
</arguments>
</use_mcp_tool>
Get Satellites Above Location
<use_mcp_tool>
<server_name>satellite-tracking</server_name>
<tool_name>get_satellites_above</tool_name>
<arguments>
{
"observer_lat": 40.7128,
"observer_lng": -74.0060,
"search_radius": 45
}
</arguments>
</use_mcp_tool>
Access Satellite Resource
<access_mcp_resource>
<server_name>satellite-tracking</server_name>
<uri>satellite://25544</uri>
</access_mcp_resource>
Satellite Categories
The server supports the following satellite categories:
Category ID | Description |
---|---|
0 | All |
1 | Amateur |
2 | CubeSat |
3 | Education |
4 | Engineering |
5 | Galileo |
6 | GLO-OPS |
7 | GPS-OPS |
8 | Military |
9 | Radar |
10 | Resource |
11 | SARSAT |
12 | Science |
13 | TDRSS |
14 | Weather |
15 | XM/Sirius |
16 | Iridium-NEXT |
17 | Globalstar |
18 | Intelsat |
19 | SES |
20 | Telesat |
21 | Orbcomm |
22 | Gorizont |
23 | Raduga |
24 | Molniya |
25 | DMC |
26 | Argos |
27 | Planet |
28 | Spire |
29 | Starlink |
30 | OneWeb |
API Key Limitations
The N2YO API has usage limits based on your subscription plan. The free tier allows:
- 1,000 requests per hour
- Basic functionality across all endpoints
Be aware of these limits when using the server to avoid exceeding your quota.
Troubleshooting
- API Key Errors: Ensure your N2YO API key is valid and correctly set in the environment variables.
- Rate Limiting: If you encounter rate limiting errors, the server will automatically retry with exponential backoff, but you may need to wait before making additional requests.
- No Data Found: Some satellites may not have real-time tracking data available, especially older or inactive satellites.
License
This project is licensed under the ISC License.