Skip to main content

jetson-mcp

A MCP (Model Context Protocol) server for using natural language to monitor and remotely control a Nvidia Jetson board from clients on the same network.

Nvidia Jetson

This project uses the FastMCP library to create the server.

MCP Server Connected:

MCP Server Connected

Features

  • Provides MCP tools accessible by network clients using the SSE (Server-Sent Events) transport.
  • get_jetson_hw_info: Reads /etc/nv_boot_control.conf to identify module/carrier board info.
  • get_jetson_sw_info: Reads /etc/nv_tegra_release (for Jetpack version) and /proc/version (for Linux kernel version).
  • Includes scripts for easy installation and systemd service setup.

Setup and Installation (on the Jetson)

  1. Clone the repository:
    git clone https://github.com/Zalmotek/jetson-mcp
    cd jetson-mcp
    
  2. Run the installation script: This script creates a Python virtual environment (venv/) and installs dependencies from requirements.txt.
    chmod +x install.sh
    ./install.sh
    

Running the Server (on the Jetson)

The recommended way to run the server is as a background service managed by systemd.

  1. (Optional) Find Jetson IP/Hostname: You'll need the Jetson's IP address or hostname to connect from other devices. Use commands like ip addr or hostname -I.

  2. Run the service setup script: This script creates and enables a systemd service file (/etc/systemd/system/jetson-mcp.service) configured to run the server as the user who invoked the script, listening on port 8000.

    chmod +x setup_service.sh
    sudo ./setup_service.sh
    
  3. Start the service:

    sudo systemctl start jetson-mcp.service
    
  4. Verify Service:

    sudo systemctl status jetson-mcp.service
    # Check logs for errors
    sudo journalctl -u jetson-mcp.service -f
    
  5. Firewall: Ensure your Jetson's firewall (if active, e.g., ufw) allows incoming connections on port 8000 (or your chosen port). Example for ufw:

    sudo ufw allow 8000/tcp
    

Running Manually (for testing)

The server is best run directly using the Python interpreter, which will invoke the mcp.run() method configured within the script:

source venv/bin/activate
# The script itself now calls mcp.run() with SSE, host, and port settings
python app/main.py

Connecting from a Remote Client

Once the server is running on the Jetson and accessible on the network (port 8000 allowed through firewall):

  1. Identify the Server Address: Find the Jetson's IP address (e.g., 192.168.1.105) or its hostname (e.g., jetson-nano.local) on your LAN.
  2. Configure Your Client: In your MCP client application (which could be a custom script, a UI like MCP Inspector, or potentially Cursor/Claude if they support network endpoints), configure it to connect to the MCP server at its network address.
    • The specific connection method depends on the client, but it will likely involve specifying a URL for the SSE endpoint:
      • http://<jetson_ip_or_hostname>:8000/sse (Common pattern for SSE)

Note: Cursor's mcp.json file is primarily designed for launching local servers via stdio transport. Connecting Cursor to this networked SSE server might require different configuration steps or might not be directly supported without a proxy. Consult your specific client's documentation for how to connect to a network MCP SSE endpoint.

Examples / Screenshots

Hardware Info Tool:

Hardware Info Tool

Software Info Tool:

Software Info Tool

Metadata

Release files for iflow-mcp_zalmotek-jetson-mcp 0.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for iflow-mcp_zalmotek-jetson-mcp 0.3.1
File Size Uploaded
iflow_mcp_zalmotek_jetson_mcp-0.3.1.tar.gz 411.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for iflow-mcp_zalmotek-jetson-mcp 0.3.1
File Interpreter ABI Platform
iflow_mcp_zalmotek_jetson_mcp-0.3.1-py3-none-any.whl Python 3 none any Details

Total release size: 418.2 kB

Release files / iflow_mcp_zalmotek_jetson_mcp-0.3.1.tar.gz

Download URL iflow_mcp_zalmotek_jetson_mcp-0.3.1.tar.gz
Size 411.9 kB
Tags Source
SHA-256 checksum
How to use checksums
f084186864bfaa48f1aca6b48b93ee56e2ded0e0fb09acdca8ed7846dbb2dfae
BLAKE2b-256 checksum
How to use checksums
fa46d08c2ed2ccbe92a790d3860a5ec9b928eacc2a19e0e1fbf62c368e07514a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / iflow_mcp_zalmotek_jetson_mcp-0.3.1-py3-none-any.whl

Download URL iflow_mcp_zalmotek_jetson_mcp-0.3.1-py3-none-any.whl
Size 6.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3d387b1623c6c35ccd7316d153ac718a19ad3af8c745e670cc19e522d7c80e2c
BLAKE2b-256 checksum
How to use checksums
1bc48354dae5d0d41258fa479ddaab9025d6545c071aa188dff595bfd90bdbfc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.3.1 This release

2 release files

0.3.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page