Skip to main content
Glama

1MCP Server

mcp-servers.md11.2 kB
# MCP Servers Configuration Reference This document provides comprehensive reference documentation for configuring MCP (Model Context Protocol) servers within the 1MCP Agent. ## Overview The 1MCP Agent manages multiple backend MCP servers through a JSON configuration file. Each server is defined in the `mcpServers` section with specific properties that control its behavior, transport method, and environment. --- ## Configuration File Structure ### JSON File Structure The agent uses a JSON file (e.g., `mcp.json`) to define backend servers and their settings. ```json { "mcpServers": { // Server definitions } } ``` ### Default Locations - **macOS**: `~/.config/1mcp/mcp.json` - **Linux**: `~/.config/1mcp/mcp.json` - **Windows**: `%APPDATA%\1mcp\mcp.json` ### Config Directory Override The agent supports overriding the entire config directory location, which affects where the configuration file, backups, and other related files are stored. **Default Locations:** - **macOS**: `~/.config/1mcp/` - **Linux**: `~/.config/1mcp/` - **Windows**: `%APPDATA%\1mcp\` **Override Methods:** 1. **Command Line Flag:** ```bash npx -y @1mcp/agent --config-dir /custom/config/path ``` 2. **Environment Variable:** ```bash ONE_MCP_CONFIG_DIR=/custom/config/path npx -y @1mcp/agent ``` When you override the config directory, the agent will: - Look for `mcp.json` in the specified directory - Store backups in a `backups` subdirectory - Store presets and other configuration files in the specified directory **Example:** ```bash # Use a project-specific config directory npx -y @1mcp/agent --config-dir ./project-config ``` This creates a self-contained configuration setup for projects that need isolated configurations. --- ## MCP Servers Configuration ### `mcpServers` Section This is a dictionary of all the backend MCP servers the agent will manage. - **Key**: A unique, human-readable name for the server (e.g., `my-filesystem`). - **Value**: A server configuration object. ### Server Properties **Common Properties:** - `transport` (string, optional): `stdio` or `http`. Defaults to `stdio` if `command` is present, `http` if `url` is present. - `tags` (array of strings, required): Tags for routing and access control. - `connectionTimeout` (number, optional): Connection timeout in milliseconds. Used when establishing initial connection. Takes precedence over `timeout`. - `requestTimeout` (number, optional): Request timeout in milliseconds. Used for individual MCP operations (callTool, readResource, etc.). Takes precedence over `timeout`. - `timeout` (number, optional): **Deprecated** fallback timeout in milliseconds. Used when specific timeouts are not set. New configurations should use `connectionTimeout` and `requestTimeout`. - `enabled` (boolean, optional): Set to `false` to disable the server. Defaults to `true`. **HTTP Transport Properties:** - `url` (string, required for `http`): The URL for the remote MCP server. **Stdio Transport Properties:** - `command` (string, required for `stdio`): The command to execute. - `args` (array of strings, optional): Arguments for the command. - `cwd` (string, optional): Working directory for the process. - `env` (object or array, optional): Environment variables. Can be an object `{"KEY": "value"}` or array `["KEY=value", "PATH"]`. - `inheritParentEnv` (boolean, optional): Inherit environment variables from parent process. Defaults to `false`. - `envFilter` (array of strings, optional): Patterns for filtering inherited environment variables. Supports `*` wildcards and `!` for exclusion. - `restartOnExit` (boolean, optional): Automatically restart the process when it exits. Defaults to `false`. - `maxRestarts` (number, optional): Maximum number of restart attempts. If not specified, unlimited restarts are allowed. - `restartDelay` (number, optional): Delay in milliseconds between restart attempts. Defaults to `1000` (1 second). ### Configuration Examples **Basic Configuration:** ```json { "mcpServers": { "filesystem": { "command": "mcp-server-filesystem", "args": ["--root", "/data"], "tags": ["files", "local-data"] }, "remote-api": { "transport": "http", "url": "https://api.example.com/mcp", "tags": ["api", "prod"], "connectionTimeout": 5000, "requestTimeout": 15000 } } } ``` **Enhanced Stdio Configuration:** ```json { "mcpServers": { "enhanced-server": { "command": "node", "args": ["server.js"], "cwd": "/app", "inheritParentEnv": true, "envFilter": ["PATH", "HOME", "NODE_*", "!SECRET_*", "!BASH_FUNC_*"], "env": { "NODE_ENV": "production", "API_KEY": "${MCP_API_KEY}", "DEBUG": "false" }, "restartOnExit": true, "maxRestarts": 5, "restartDelay": 2000, "tags": ["production", "api"], "connectionTimeout": 10000, "requestTimeout": 30000 } } } ``` **Array Environment Format:** ```json { "mcpServers": { "array-env-server": { "command": "python", "args": ["server.py"], "env": ["PATH", "NODE_ENV=production", "API_KEY=${SECRET_KEY}"], "tags": ["python", "api"] } } } ``` --- ## Advanced Environment Management ### Environment Variable Substitution Use `${VARIABLE_NAME}` syntax in your configuration to substitute environment variables at runtime: ```json { "mcpServers": { "dynamic-server": { "command": "${SERVER_COMMAND}", "args": ["--port", "${SERVER_PORT}"], "env": { "API_KEY": "${SECRET_API_KEY}", "DATABASE_URL": "${DB_CONNECTION_STRING}" }, "tags": ["dynamic"] } } } ``` ### Environment Inheritance and Filtering **Inherit Parent Environment:** Set `inheritParentEnv: true` to inherit environment variables from the parent process: ```json { "inheritParentEnv": true } ``` **Environment Filtering:** Use `envFilter` to control which variables are inherited using pattern matching: ```json { "inheritParentEnv": true, "envFilter": [ "PATH", // Allow PATH variable "HOME", // Allow HOME variable "NODE_*", // Allow all NODE_* variables "NPM_*", // Allow all NPM_* variables "!SECRET_*", // Block all SECRET_* variables "!BASH_FUNC_*" // Block bash function definitions ] } ``` **Filter Patterns:** - `VARIABLE_NAME`: Include specific variable - `PREFIX_*`: Include all variables starting with PREFIX\_ - `!VARIABLE_NAME`: Exclude specific variable - `!PREFIX_*`: Exclude all variables starting with PREFIX\_ ### Flexible Environment Formats **Object Format (Traditional):** ```json { "env": { "NODE_ENV": "production", "DEBUG": "false", "API_TIMEOUT": "30000" } } ``` **Array Format (Docker-style):** ```json { "env": [ "NODE_ENV=production", "DEBUG=false", "PATH", // Inherit PATH from parent "API_TIMEOUT=${TIMEOUT_VALUE}" ] } ``` --- ## Process Management ### Automatic Restart Enable automatic process restart when the server exits unexpectedly: ```json { "restartOnExit": true, "maxRestarts": 5, "restartDelay": 2000 } ``` **Restart Configuration Options:** - `restartOnExit`: Enable automatic restart functionality - `maxRestarts`: Limit restart attempts (omit for unlimited restarts) - `restartDelay`: Milliseconds to wait between restart attempts (default: 1000ms) ### Working Directory Set a custom working directory for the process: ```json { "cwd": "/path/to/server/directory" } ``` --- ## Complete Configuration Example ```json { "mcpServers": { "production-server": { "command": "node", "args": ["dist/server.js"], "cwd": "/app", // Environment inheritance with security filtering "inheritParentEnv": true, "envFilter": [ "PATH", "HOME", "USER", // Basic system vars "NODE_*", "NPM_*", // Node.js related "!SECRET_*", "!KEY_*", // Block secrets "!BASH_FUNC_*" // Block functions ], // Custom environment with substitution "env": { "NODE_ENV": "production", "API_KEY": "${PROD_API_KEY}", "DB_URL": "${DATABASE_CONNECTION}", "LOG_LEVEL": "info" }, // Process management "restartOnExit": true, "maxRestarts": 3, "restartDelay": 1500, // Standard MCP properties "tags": ["production", "api"], "connectionTimeout": 10000, "requestTimeout": 30000 } } } ``` --- ## Timeout Configuration ### Timeout Hierarchy 1MCP Agent supports granular timeout configuration with the following precedence hierarchy: - **Connection Operations**: `connectionTimeout` > `timeout` (fallback) - **Request Operations**: `requestTimeout` > `timeout` (fallback) ### Timeout Types **`connectionTimeout`** - **Purpose**: Timeout for establishing initial connection to MCP server - **Used when**: Calling `client.connect()` during server startup or retry - **Units**: Milliseconds - **Recommended**: 5000-15000ms (5-15 seconds) depending on network conditions **`requestTimeout`** - **Purpose**: Timeout for individual MCP operations (tools, resources, etc.) - **Used when**: `callTool()`, `readResource()`, `listRoots()`, etc. - **Units**: Milliseconds - **Recommended**: 15000-60000ms (15-60 seconds) depending on operation complexity **`timeout` (Deprecated)** - **Purpose**: Fallback timeout when specific timeouts are not set - **Status**: Deprecated for new configurations - **Behavior**: Used as fallback for both connection and request operations ### Timeout Examples **Granular Timeout Configuration:** ```json { "mcpServers": { "fast-api": { "transport": "http", "url": "https://fast-api.example.com/mcp", "connectionTimeout": 3000, "requestTimeout": 10000, "tags": ["api", "fast"] }, "heavy-processor": { "transport": "http", "url": "https://heavy.example.com/mcp", "connectionTimeout": 10000, "requestTimeout": 120000, "tags": ["processing", "slow"] }, "backward-compatible": { "transport": "http", "url": "https://legacy.example.com/mcp", "timeout": 30000, "tags": ["legacy"] } } } ``` **Transport-Specific Considerations:** - **HTTP/SSE Transports**: Require longer connection timeouts due to network latency - **STDIO Transports**: Typically need shorter connection timeouts (local process) - **Retry Logic**: Failed connections trigger transport recreation for HTTP/SSE ### Migration from Single Timeout **Before (Deprecated):** ```json { "timeout": 30000 } ``` **After (Recommended):** ```json { "connectionTimeout": 5000, "requestTimeout": 30000 } ``` --- ## Hot-Reloading The agent supports hot-reloading of the configuration file. If you modify the JSON file while the agent is running, it will automatically apply the new configuration without a restart. --- ## See Also - **[Configuration Deep Dive](../guide/essentials/configuration.md)** - CLI flags and environment variables - **[Serve Command Reference](../commands/serve.md)** - Command-line usage examples - **[Security Guide](security.md)** - Security best practices for MCP servers

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/1mcp-app/agent'

If you have feedback or need assistance with the MCP directory API, please join our Discord server