Skip to main content
Glama

1MCP Server

mcp-servers.md10.3 kB
# MCP 服务器配置参考 本文档提供了在 1MCP 代理中配置 MCP (Model Context Protocol) 服务器的全面参考文档。 ## 概述 1MCP 代理通过 JSON 配置文件管理多个后端 MCP 服务器。每个服务器都在 `mcpServers` 部分中定义,具有控制其行为、传输方法和环境的特定属性。 --- ## 配置文件结构 ### JSON 文件结构 代理使用 JSON 文件(例如 `mcp.json`)来定义后端服务器及其设置。 ```json { "mcpServers": { // 服务器定义 } } ``` ### 默认位置 - **macOS**: `~/.config/1mcp/mcp.json` - **Linux**: `~/.config/1mcp/mcp.json` - **Windows**: `%APPDATA%\1mcp\mcp.json` ### 配置目录覆盖 代理支持覆盖整个配置目录位置,这会影响配置文件、备份和其他相关文件的存储位置。 **默认位置:** - **macOS**: `~/.config/1mcp/` - **Linux**: `~/.config/1mcp/` - **Windows**: `%APPDATA%\1mcp\` **覆盖方法:** 1. **命令行标志:** ```bash npx -y @1mcp/agent --config-dir /custom/config/path ``` 2. **环境变量:** ```bash ONE_MCP_CONFIG_DIR=/custom/config/path npx -y @1mcp/agent ``` 当您覆盖配置目录时,代理将: - 在指定目录中查找 `mcp.json` - 在 `backups` 子目录中存储备份 - 在指定目录中存储预设和其他配置文件 **示例:** ```bash # 使用项目特定的配置目录 npx -y @1mcp/agent --config-dir ./project-config ``` 这为需要隔离配置的项目创建了一个自包含的配置设置。 --- ## MCP 服务器配置 ### `mcpServers` 部分 这是代理将管理的所有后端 MCP 服务器的字典。 - **键**: 服务器的唯一、人类可读名称(例如 `my-filesystem`)。 - **值**: 服务器配置对象。 ### 服务器属性 **通用属性:** - `transport` (字符串, 可选): `stdio` 或 `http`。如果存在 `command` 则默认为 `stdio`,如果存在 `url` 则默认为 `http`。 - `tags` (字符串数组, 必需): 用于路由和访问控制的标签。 - `connectionTimeout` (数字, 可选): 连接超时时间(毫秒)。用于建立初始连接。优先级高于 `timeout`。 - `requestTimeout` (数字, 可选): 请求超时时间(毫秒)。用于单个 MCP 操作(callTool、readResource 等)。优先级高于 `timeout`。 - `timeout` (数字, 可选): **已弃用** 的回退超时时间(毫秒)。当未设置特定超时时使用。新配置应使用 `connectionTimeout` 和 `requestTimeout`。 - `enabled` (布尔值, 可选): 设置为 `false` 以禁用服务器。默认为 `true`。 **HTTP 传输属性:** - `url` (字符串, `http` 必需): 远程 MCP 服务器的 URL。 **Stdio 传输属性:** - `command` (字符串, `stdio` 必需): 要执行的命令。 - `args` (字符串数组, 可选): 命令的参数。 - `cwd` (字符串, 可选): 进程的工作目录。 - `env` (对象或数组, 可选): 环境变量。可以是对象 `{"KEY": "value"}` 或数组 `["KEY=value", "PATH"]`。 - `inheritParentEnv` (布尔值, 可选): 从父进程继承环境变量。默认为 `false`。 - `envFilter` (字符串数组, 可选): 用于过滤继承的环境变量的模式。支持 `*` 通配符和 `!` 排除。 - `restartOnExit` (布尔值, 可选): 进程退出时自动重启。默认为 `false`。 - `maxRestarts` (数字, 可选): 最大重启尝试次数。如果未指定,则允许无限重启。 - `restartDelay` (数字, 可选): 重启尝试之间的延迟(毫秒)。默认为 `1000`(1秒)。 ### 配置示例 **基本配置:** ```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 } } } ``` **增强的 Stdio 配置:** ```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 } } } ``` **数组环境格式:** ```json { "mcpServers": { "array-env-server": { "command": "python", "args": ["server.py"], "env": ["PATH", "NODE_ENV=production", "API_KEY=${SECRET_KEY}"], "tags": ["python", "api"] } } } ``` --- ## 高级环境管理 ### 环境变量替换 在您的配置中使用 `${VARIABLE_NAME}` 语法在运行时替换环境变量: ```json { "mcpServers": { "dynamic-server": { "command": "${SERVER_COMMAND}", "args": ["--port", "${SERVER_PORT}"], "env": { "API_KEY": "${SECRET_API_KEY}", "DATABASE_URL": "${DB_CONNECTION_STRING}" }, "tags": ["dynamic"] } } } ``` ### 环境继承和过滤 **继承父环境:** 设置 `inheritParentEnv: true` 以从父进程继承环境变量: ```json { "inheritParentEnv": true } ``` **环境过滤:** 使用 `envFilter` 通过模式匹配控制哪些变量被继承: ```json { "inheritParentEnv": true, "envFilter": [ "PATH", // 允许 PATH 变量 "HOME", // 允许 HOME 变量 "NODE_*", // 允许所有 NODE_* 变量 "NPM_*", // 允许所有 NPM_* 变量 "!SECRET_*", // 阻止所有 SECRET_* 变量 "!BASH_FUNC_*" // 阻止 bash 函数定义 ] } ``` **过滤模式:** - `VARIABLE_NAME`: 包含特定变量 - `PREFIX_*`: 包含所有以 PREFIX\_ 开头的变量 - `!VARIABLE_NAME`: 排除特定变量 - `!PREFIX_*`: 排除所有以 PREFIX\_ 开头的变量 ### 灵活的环境格式 **对象格式(传统):** ```json { "env": { "NODE_ENV": "production", "DEBUG": "false", "API_TIMEOUT": "30000" } } ``` **数组格式(Docker 风格):** ```json { "env": [ "NODE_ENV=production", "DEBUG=false", "PATH", // 从父级继承 PATH "API_TIMEOUT=${TIMEOUT_VALUE}" ] } ``` --- ## 进程管理 ### 自动重启 当服务器意外退出时启用自动进程重启: ```json { "restartOnExit": true, "maxRestarts": 5, "restartDelay": 2000 } ``` **重启配置选项:** - `restartOnExit`: 启用自动重启功能 - `maxRestarts`: 限制重启尝试次数(省略则允许无限重启) - `restartDelay`: 重启尝试之间等待的毫秒数(默认:1000ms) ### 工作目录 为进程设置自定义工作目录: ```json { "cwd": "/path/to/server/directory" } ``` --- ## 完整配置示例 ```json { "mcpServers": { "production-server": { "command": "node", "args": ["dist/server.js"], "cwd": "/app", // 带有安全过滤的环境继承 "inheritParentEnv": true, "envFilter": [ "PATH", "HOME", "USER", // 基本系统变量 "NODE_*", "NPM_*", // Node.js 相关 "!SECRET_*", "!KEY_*", // 阻止密钥 "!BASH_FUNC_*" // 阻止函数 ], // 带有替换的自定义环境 "env": { "NODE_ENV": "production", "API_KEY": "${PROD_API_KEY}", "DB_URL": "${DATABASE_CONNECTION}", "LOG_LEVEL": "info" }, // 进程管理 "restartOnExit": true, "maxRestarts": 3, "restartDelay": 1500, // 标准 MCP 属性 "tags": ["production", "api"], "connectionTimeout": 10000, "requestTimeout": 30000 } } } ``` --- ## 超时配置 ### 超时层次结构 1MCP 代理支持细粒度超时配置,具有以下优先级层次结构: - **连接操作**: `connectionTimeout` > `timeout` (回退) - **请求操作**: `requestTimeout` > `timeout` (回退) ### 超时类型 **`connectionTimeout`** - **用途**: 建立与 MCP 服务器初始连接的超时时间 - **使用场景**: 服务器启动或重试时调用 `client.connect()` - **单位**: 毫秒 - **推荐值**: 5000-15000ms(5-15 秒),取决于网络条件 **`requestTimeout`** - **用途**: 单个 MCP 操作(工具、资源等)的超时时间 - **使用场景**: `callTool()`、`readResource()`、`listRoots()` 等 - **单位**: 毫秒 - **推荐值**: 15000-60000ms(15-60 秒),取决于操作复杂度 **`timeout` (已弃用)** - **用途**: 未设置特定超时时的回退超时时间 - **状态**: 新配置中已弃用 - **行为**: 用作连接和请求操作的回退 ### 超时配置示例 **细粒度超时配置:** ```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"] } } } ``` **传输特定注意事项:** - **HTTP/SSE 传输**: 由于网络延迟需要更长的连接超时时间 - **STDIO 传输**: 通常需要较短的连接超时时间(本地进程) - **重试逻辑**: 失败的连接会触发 HTTP/SSE 的传输重建 ### 从单一超时迁移 **之前(已弃用):** ```json { "timeout": 30000 } ``` **之后(推荐):** ```json { "connectionTimeout": 5000, "requestTimeout": 30000 } ``` --- ## 热重载 代理支持配置文件的热重载。如果您在代理运行时修改 JSON 文件,它将自动应用新配置而无需重启。 --- ## 另请参阅 - **[配置深入指南](../guide/essentials/configuration.md)** - CLI 标志和环境变量 - **[Serve 命令参考](../commands/serve.md)** - 命令行使用示例 - **[安全指南](security.md)** - MCP 服务器的安全最佳实践

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