SkillSpector MCP Server Transport Options: stdio vs HTTP Configuration
The NVIDIA SkillSpector MCP server supports two transport modes—stdio for local agent communication and http for remote network access—controlled by the transport parameter in the skillspector.mcp_server.run() function.
The NVIDIA/SkillSpector repository provides a Model Context Protocol (MCP) server for scanning and analyzing AI skills. When deploying this server in production or development environments, selecting the correct transport mechanism determines how MCP-compatible agents communicate with the underlying scan_skill tool functionality.
Available Transport Modes
The transport layer is configured via the transport argument passed to the entry point function in src/skillspector/mcp_server.py.
stdio (Standard Input/Output)
stdio is the default transport mode and uses standard input/output streams to communicate with locally-run MCP-compatible agents such as Claude Code or Codex CLI. When activated, the server invokes FastMCP.run(transport="stdio") internally, establishing a persistent connection over stdin/stdout pipes. This mode is ideal for local development scenarios where the agent and server run on the same machine without network overhead.
http (Streamable HTTP)
http exposes the MCP server as a network-accessible endpoint using FastMCP’s streamable HTTP transport. While callers specify transport="http", the implementation internally sets transport="streamable-http" to enable HTTP streaming capabilities. This mode supports remote agent-to-agent (A2A) scenarios and distributed runtime environments. The host and port parameters customize the binding address, defaulting to 0.0.0.0:9000 if unspecified.
Transport Selection Logic
The transport routing occurs in src/skillspector/mcp_server.py within the run() function. The code explicitly branches based on the transport string value:
- Lines 71-73 handle the
stdiocase by callingserver.run(transport="stdio") - Lines 74-77 configure the HTTP mode by setting
server.settings.hostandserver.settings.portbefore executing with the internal streamable HTTP transport - Lines 77-79 implement validation logic that raises a
ValueErrorif any transport value other than"stdio"or"http"is provided
Starting the Server with stdio Transport
Use the default stdio transport when integrating with local CLI agents:
from skillspector.mcp_server import run
# Starts the MCP server in stdio mode (default)
run()
Configuring HTTP Transport for Remote Access
Specify the transport, host, and port parameters to expose the server over the network:
from skillspector.mcp_server import run
# Starts the MCP server listening on 0.0.0.0:9000
run(transport="http", host="0.0.0.0", port=9000)
Building Servers Programmatically
For advanced use cases requiring pre-configuration before transport initialization, use the build_server() factory function:
from skillspector.mcp_server import build_server
# Build the FastMCP server (no transport started yet)
server = build_server(name="my_skillspector")
# Register the server with a custom transport
server.run(transport="stdio")
This approach instantiates the FastMCP instance defined in src/skillspector/mcp_server.py without immediately binding to a transport, allowing middleware registration or custom logging configuration via src/skillspector/logging_config.py before the server starts accepting connections.
Summary
- Two transport modes:
stdiofor local process communication andhttpfor networked remote access - Default behavior: The server runs in
stdiomode whenrun()is called without arguments - HTTP implementation: Internally maps to FastMCP’s
streamable-httptransport with configurablehostandportparameters - Validation: Invalid transport strings trigger a
ValueErrorin the transport selection logic at lines 77-79 ofsrc/skillspector/mcp_server.py - Programmatic access: The
build_server()function creates server instances without starting the transport layer
Frequently Asked Questions
What is the default transport mode for the SkillSpector MCP server?
The default transport mode is stdio. When you call run() without specifying the transport parameter, the server automatically configures itself for standard input/output communication suitable for local CLI agents.
How do I expose the SkillSpector server to remote agents over the network?
Pass transport="http" to the run() function along with optional host and port parameters. The server will bind to the specified address and use FastMCP’s internal streamable HTTP transport to handle remote MCP protocol requests.
What happens if I specify an invalid transport value?
The run() function validates the transport parameter and raises a ValueError if any value other than "stdio" or "http" is provided. This validation occurs in src/skillspector/mcp_server.py before any server initialization begins.
Can I customize the server before starting the transport?
Yes. Use the build_server() function to instantiate the FastMCP server object without starting the transport. This allows you to modify server settings, register additional tools, or configure logging from src/skillspector/logging_config.py before manually calling server.run() with your desired transport.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →