Stdio MCP Server Skill
This skill helps create and configure stdio Model Context Protocol (MCP) server connections for OpenAI Agents SDK.
Purpose
- Create MCPServerStdio configurations
- Configure local subprocess parameters
- Connect to MCP servers that run as local processes
- Use stdio transport for local MCP server communication
MCPServerStdio Constructor Parameters
- params (MCPServerStdioParams): Process parameters for the server
- command (str): The executable to run to start the server (e.g.,
python or node)
- args (list[str], optional): Command line args to pass to the command (e.g.,
['foo.py'] or ['server.js', '--port', '8080'])
- env (dict[str, str], optional): The environment variables to set for the server
- cwd (str | Path, optional): The working directory to use when spawning the process
- encoding (str, optional): The text encoding used when sending/receiving messages to the server (default:
utf-8)
- encoding_error_handler (Literal["strict", "ignore", "replace"], optional): The text encoding error handler (default:
strict)
- cache_tools_list (bool): Whether to cache the list of available tools (default: False)
- name (string | None): A readable name for the server (default: None, auto-generated)
- client_session_timeout_seconds (float | None): The read timeout passed to the MCP ClientSession (default: 5)
- tool_filter (ToolFilter): The tool filter to use for filtering tools (default: None)
- use_structured_content (bool): Whether to use tool_result.structured_content when calling an MCP tool (default: False)
- max_retry_attempts (int): Number of times to retry failed list_tools/call_tool calls (default: 0)
- retry_backoff_seconds_base (float): The base delay, in seconds, for exponential backoff between retries (default: 1.0)
- message_handler (MessageHandlerFnT | None): Optional handler invoked for session messages (default: None)
Usage Context
Use this skill when:
- Working with MCP servers that run as local subprocesses
- Needing to communicate with command-line MCP server implementations
- Using stdio-based MCP server implementations
- Running MCP servers in local development environments
- When the server only exposes a command line entry point
Basic Example
import asyncio
from pathlib import Path
from agents import Agent, Runner
from agents.mcp import MCPServerStdio
current_dir = Path(__file__).parent
samples_dir = current_dir / "sample_files"
async def main() -> None:
async with MCPServerStdio(
name="Filesystem Server via npx",
params={
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", str(samples_dir)],
},
) as server:
agent = Agent(
name="Assistant",
instructions="Use the files in the sample directory to answer questions.",
mcp_servers=[server],
)
result = await Runner.run(agent, "List the files available to you.")
print(result.final_output)
asyncio.run(main())
1---2name: mcp-server-stdio3description: Creates and configures stdio Model Context Protocol (MCP) server connections for OpenAI Agents SDK4---5
6# Stdio MCP Server Skill
7
8This skill helps create and configure stdio Model Context Protocol (MCP) server connections for OpenAI Agents SDK.
9
10## Purpose
11- Create MCPServerStdio configurations
12- Configure local subprocess parameters
13- Connect to MCP servers that run as local processes
14- Use stdio transport for local MCP server communication
15
16## MCPServerStdio Constructor Parameters
17- **params** (MCPServerStdioParams): Process parameters for the server
18 - **command** (str): The executable to run to start the server (e.g., `python` or `node`)
19 - **args** (list[str], optional): Command line args to pass to the command (e.g., `['foo.py']` or `['server.js', '--port', '8080']`)
20 - **env** (dict[str, str], optional): The environment variables to set for the server
21 - **cwd** (str | Path, optional): The working directory to use when spawning the process
22 - **encoding** (str, optional): The text encoding used when sending/receiving messages to the server (default: `utf-8`)
23 - **encoding_error_handler** (Literal["strict", "ignore", "replace"], optional): The text encoding error handler (default: `strict`)
24- **cache_tools_list** (bool): Whether to cache the list of available tools (default: False)
25- **name** (string | None): A readable name for the server (default: None, auto-generated)
26- **client_session_timeout_seconds** (float | None): The read timeout passed to the MCP ClientSession (default: 5)
27- **tool_filter** (ToolFilter): The tool filter to use for filtering tools (default: None)
28- **use_structured_content** (bool): Whether to use tool_result.structured_content when calling an MCP tool (default: False)
29- **max_retry_attempts** (int): Number of times to retry failed list_tools/call_tool calls (default: 0)
30- **retry_backoff_seconds_base** (float): The base delay, in seconds, for exponential backoff between retries (default: 1.0)
31- **message_handler** (MessageHandlerFnT | None): Optional handler invoked for session messages (default: None)
32
33## Usage Context
34Use this skill when:
35- Working with MCP servers that run as local subprocesses
36- Needing to communicate with command-line MCP server implementations
37- Using stdio-based MCP server implementations
38- Running MCP servers in local development environments
39- When the server only exposes a command line entry point
40
41## Basic Example
42```python
43import asyncio
44from pathlib import Path
45from agents import Agent, Runner
46from agents.mcp import MCPServerStdio
47
48current_dir = Path(__file__).parent
49samples_dir = current_dir / "sample_files"
50
51async def main() -> None:
52 async with MCPServerStdio(
53 name="Filesystem Server via npx",
54 params={
55 "command": "npx",
56 "args": ["-y", "@modelcontextprotocol/server-filesystem", str(samples_dir)],
57 },
58 ) as server:
59 agent = Agent(
60 name="Assistant",
61 instructions="Use the files in the sample directory to answer questions.",
62 mcp_servers=[server],
63 )
64 result = await Runner.run(agent, "List the files available to you.")
65 print(result.final_output)
66
67asyncio.run(main())
68```