Skip to main content
Glama

1MCP Server

getting-started.md15.8 kB
# 1MCP 入门指南 > **🎯 目标**:通过简单实用的步骤,将您从单独的 MCP 服务器连接转变为统一的代理。 ## 🗺️ 您的旅程概览 ```mermaid graph LR A[5 分钟<br/>基本设置] --> B[10 分钟<br/>添加认证] B --> C[15 分钟<br/>生产部署] A1[单一统一的<br/>MCP 端点] -.-> A B1[OAuth 2.1<br/>认证] -.-> B C1[稳定的生产<br/>配置] -.-> C ``` **选择您的起点**: - 👋 **初次接触 MCP?** → 从第 1 级开始 - 🔒 **需要认证?** → 跳转到第 2 级 - 🏢 **生产部署?** → 前往第 3 级 --- ## 📋 先决条件 ### **系统要求** - **操作系统**:Linux、macOS 或 Windows - **内存**:最低 512MB RAM,推荐 2GB - **Node.js**:版本 18+ (用于 MCP 服务器) - **网络**:HTTP/HTTPS 出站访问 ### **您需要什么** - [ ] 已有的 MCP 服务器或计划安装它们 - [ ] 用于配置文件的文本编辑器 - [ ] 终端/命令行访问权限 - [ ] 对 JSON 配置的基本了解 ### **5 分钟环境检查** ```bash # 检查 Node.js 版本 node --version # 应为 18+ # 验证您可以在主目录中创建文件 touch ~/.test-file && rm ~/.test-file && echo "✅ 文件权限正常" # 检查您是否有现有的 MCP 服务器 ls ~/.config/*/mcp.json 2>/dev/null || echo "ℹ️ 未找到现有 MCP 配置" ``` --- ## 🌟 第 1 级:基本代理 (5 分钟) **🎯 目标**:用单个代理替换单独的 MCP 连接 **👤 适用于**:初次使用的用户、简单设置、概念验证 ### **您将实现** - ✅ 单个配置文件取代多个连接 - ✅ 所有 MCP 服务器的统一健康监控 - ✅ 自动连接管理和重试逻辑 - ✅ 您的 AI 助手连接的单一端点 ### **步骤 1:获取 1MCP** (1 分钟) **选项 A:二进制下载 (最快 - 无需 Node.js)** ```bash # Linux: curl -L -o 1mcp https://github.com/1mcp-app/agent/releases/latest/download/1mcp-linux-x64 sudo mv 1mcp /usr/local/bin/ && sudo chmod +x /usr/local/bin/1mcp 1mcp --help # macOS: curl -L -o 1mcp https://github.com/1mcp-app/agent/releases/latest/download/1mcp-darwin-arm64 sudo mv 1mcp /usr/local/bin/ && sudo chmod +x /usr/local/bin/1mcp 1mcp --help # Windows (PowerShell): Invoke-WebRequest -Uri "https://github.com/1mcp-app/agent/releases/latest/download/1mcp-win32-x64.exe" -OutFile "1mcp.exe" .\1mcp.exe --help ``` **选项 B:NPM (无需安装)** ```bash # 1MCP 通过 npx 运行 - 无需全局安装 # 验证其是否有效: npx -y @1mcp/agent --help ``` ### **步骤 2:创建基本配置** (2 分钟) ```bash # 创建配置目录 mkdir -p ~/.config/1mcp # 创建基本配置文件 cat > ~/.config/1mcp/mcp.json << 'EOF' { "mcpServers": { "filesystem": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"], "tags": ["local", "files"] }, "memory": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-memory"], "tags": ["memory", "notes"] } } } EOF ``` ### **步骤 3:启动 1MCP** (1 分钟) ```bash # 二进制选项: 1mcp --config ~/.config/1mcp/mcp.json --port 3050 # NPM 选项: npx -y @1mcp/agent --config ~/.config/1mcp/mcp.json --port 3050 # 您应该会看到: # ✅ 服务器正在端口 3050 上运行,使用 HTTP/SSE 传输 # ✅ 已连接到 filesystem、memory 服务器 # 📋 OAuth 管理仪表板:http://localhost:3050/oauth ``` ### **步骤 4:测试您的设置** (< 1 分钟) ```bash # 使用 MCP Inspector 进行测试和调试 (推荐) npx @modelcontextprotocol/inspector # 这将在 http://localhost:5173 打开一个强大的用户界面,让您: # - 连接到您的 1MCP 代理 http://localhost:3050 # - 测试所有可用的工具和资源 # - 调试认证流程 # - 监控实时的 MCP 协议消息 # 备选方案:通过 curl 检查健康状况 curl http://localhost:3050/health # 或在浏览器中访问 http://localhost:3050/health ``` ### **✅ 第 1 级完成!** **🎉 成功指标**: - [ ] 1MCP 服务器在端口 3050 上运行 - [ ] MCP Inspector 在 http://localhost:5173 成功连接 - [ ] 健康端点在 http://localhost:3050/health 显示服务器已连接 - [ ] 可以通过 Inspector UI 测试 filesystem 和 memory 工具 **🔧 常见问题**: - **端口 3050 被占用?** → 使用 `--port 3051` - **MCP 服务器启动失败?** → 检查 Node.js 版本是否为 21+ - **权限错误?** → 确保 ~/.config/1mcp 目录可写 - **找不到配置?** → 使用绝对路径:`--config $(pwd)/.config/1mcp/mcp.json` **➡️ 下一级**:[添加认证和访问控制](#-第-2-级安全访问-15-分钟) --- ## 🔒 第 2 级:安全访问 (15 分钟) **🎯 目标**:添加认证和精细的访问控制 **👤 适用于**:团队、共享环境、注重安全的用户 ### **您将实现** - ✅ 使用安全令牌管理的 OAuth 2.1 认证 - ✅ 基于范围的权限控制 MCP 服务器访问 - ✅ 具有自动令牌刷新功能的用户会话管理 - ✅ 所有访问尝试的审计日志 ### **步骤 1:启用认证** (1 分钟) ```bash # 停止您现有的 1MCP 实例 (Ctrl+C) # 启用认证并启动 # 二进制选项: 1mcp --config ~/.config/1mcp/mcp.json --port 3050 --enable-auth # NPM 选项: npx -y @1mcp/agent --config ~/.config/1mcp/mcp.json --port 3050 --enable-auth # 新输出显示: # 🔐 认证已启用 - OAuth 2.1 端点可通过 SDK 使用 # 📋 OAuth 管理仪表板:http://localhost:3050/oauth ``` ### **步骤 2:使用 OAuth 管理仪表板** (2 分钟) 1MCP Agent 提供了一个 OAuth 管理仪表板,而不是手动注册端点,用于管理与后端服务的授权流程。当后端服务需要 OAuth 时,您可以使用此仪表板启动和批准授权请求。 在浏览器中访问仪表板,查看您的服务状态并授权任何等待 OAuth 的服务。 ### **步骤 3:配置基于范围的访问** (2 分钟) ```bash # 使用更详细的标签更新您的配置 cat > ~/.config/1mcp/mcp.json << 'EOF' { "mcpServers": { "filesystem": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"], "tags": ["filesystem", "local", "sensitive"] }, "memory": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-memory"], "tags": ["memory", "notes", "safe"] } } } EOF # 配置将自动热重载 - 无需重启! ``` ### **步骤 4:测试认证** (2 分钟) ```bash # 使用 MCP Inspector 测试 OAuth 流程 (推荐) npx @modelcontextprotocol/inspector # 在 Inspector UI 中: # 1. 连接到 http://localhost:3050 # 2. 您将看到 OAuth 认证提示 # 3. 使用内置的 OAuth 流程测试 # 4. 使用不同的标签测试基于范围的访问 # 备选方案:通过 curl 手动进行 OAuth 测试 # 尝试在没有认证的情况下访问 SSE 端点 curl http://localhost:3050/sse # 当启用认证时,应要求认证 # 手动令牌流程 (如果需要用于调试) export CLIENT_ID="your-client-id-from-step-2" export CLIENT_SECRET="your-client-secret-from-step-2" curl -X POST http://localhost:3050/token \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=client_credentials&client_id=$CLIENT_ID&client_secret=$CLIENT_SECRET&scope=tag:safe" ``` ### **✅ 第 2 级完成!** **🎉 成功指标**: - [ ] MCP Inspector 成功处理 OAuth 流程 - [ ] OAuth 客户端注册通过 Inspector UI 工作 - [ ] 范围限制被正确执行 (基于标签的访问) - [ ] 可以使用 Inspector 界面测试不同的范围 - [ ] 管理仪表板显示认证状态 **🔧 常见问题**: - **MCP Inspector 无法连接?** → 验证 1MCP 是否在端口 3050 上运行 - **Inspector 中的 OAuth 流程失败?** → 检查 1MCP 是否使用 --enable-auth 运行 - **范围错误?** → 确保服务器标签与请求的范围匹配 - **Inspector 显示“未授权”?** → 首先在 Inspector UI 中完成 OAuth 流程 - **仪表板未加载?** → 确保使用了 --enable-auth 标志 **➡️ 下一级**:[生产就绪部署](#-第-3-级生产就绪-45-分钟) --- ## 🏗️ 第 3 级:生产就绪 (15 分钟) **🎯 目标**:具有基本安全性的稳定生产部署 **👤 适用于**:生产环境、团队、共享部署 ### **您将实现** - ✅ 用于自动启动的 Systemd 服务 - ✅ 基本安全配置 - ✅ 日志管理和轮换 - ✅ 配置备份 - ✅ 基本监控 ### **步骤 1:生产配置** (5 分钟) ```bash # 创建生产配置目录 sudo mkdir -p /etc/1mcp sudo chown $USER:$USER /etc/1mcp # 生产配置文件 cat > /etc/1mcp/mcp.json << 'EOF' { "mcpServers": { "filesystem": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "/app/data"], "tags": ["filesystem", "data", "sensitive"] }, "memory": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-memory"], "tags": ["memory", "cache", "safe"] } } } EOF ``` ### **步骤 2:创建 Systemd 服务** (5 分钟) ```bash # 创建 systemd 服务文件 sudo tee /etc/systemd/system/1mcp.service << 'EOF' [Unit] Description=1MCP - 通用 MCP 服务器代理 After=network.target [Service] Type=simple User=$USER WorkingDirectory=/home/$USER ExecStart=/usr/bin/npx -y @1mcp/agent --config /etc/1mcp/mcp.json --port 3050 --enable-auth Restart=always RestartSec=5 StandardOutput=journal StandardError=journal [Install] WantedBy=multi-user.target EOF # 启用并启动服务 sudo systemctl daemon-reload sudo systemctl enable 1mcp sudo systemctl start 1mcp # 检查状态 sudo systemctl status 1mcp ``` ### **步骤 3:基本监控** (5 分钟) ```bash # 简单的健康检查脚本 cat > /usr/local/bin/1mcp-health-check << 'EOF' #!/bin/bash HEALTH_URL="http://localhost:3050/health" RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" "$HEALTH_URL") if [ "$RESPONSE" = "200" ]; then echo "✅ 1MCP 健康 ($(date))" exit 0 else echo "❌ 1MCP 不健康 (HTTP $RESPONSE) ($(date))" exit 1 fi EOF sudo chmod +x /usr/local/bin/1mcp-health-check # 添加到 crontab 以进行定期健康检查 (crontab -l 2>/dev/null; echo "*/5 * * * * /usr/local/bin/1mcp-health-check >> /var/log/1mcp-health.log 2>&1") | crontab - # 检查日志 tail -f /var/log/1mcp-health.log ``` ### **步骤 4:配置环境** (可选) ```bash # 为生产设置环境变量 sudo tee -a /etc/environment << 'EOF' ONE_MCP_ENABLE_AUTH=true ONE_MCP_ENABLE_ENHANCED_SECURITY=true ONE_MCP_RATE_LIMIT_WINDOW=15 ONE_MCP_RATE_LIMIT_MAX=100 EOF # 重启服务以应用环境更改 sudo systemctl restart 1mcp ``` ### **步骤 5:备份配置** (可选) ```bash # 简单的备份脚本 cat > ~/1mcp-backup.sh << 'EOF' #!/bin/bash TIMESTAMP=$(date +%Y%m%d-%H%M%S) cp /etc/1mcp/mcp.json ~/"1mcp-config-backup-$TIMESTAMP.json" echo "✅ 配置已备份到 ~/1mcp-config-backup-$TIMESTAMP.json" EOF chmod +x ~/1mcp-backup.sh # 运行备份 ~/1mcp-backup.sh ``` ### **✅ 第 3 级完成!** **🎉 成功指标**: - [ ] 1MCP 作为 systemd 服务运行 - [ ] 服务在启动时自动启动 - [ ] 健康检查脚本正常工作 - [ ] 配置已备份 - [ ] 健康端点可在 http://localhost:3050/health 访问 **🔧 生产清单**: - [ ] SSL/TLS 证书已配置 (使用像 nginx 这样的反向代理) - [ ] 防火墙规则已配置 (仅允许端口 3050) - [ ] 已为您的应用程序注册 OAuth 客户端 - [ ] 服务器标签已适当配置 - [ ] 定期备份配置 **➡️ 下一级**:[高级优化](#-第-4-级高级优化-2-小时) --- ## 🔧 超越基本设置 **可用的其他配置选项:** ### **传输配置** - 使用 `--transport sse` 进行服务器发送事件 - 使用 `--transport stdio` 进行标准输入/输出 - 使用 `--transport http` 进行可流式传输的 HTTP (默认) ### **标签过滤** - 按标签过滤服务器:`--tags "network,filesystem"` - 配置基于标签的 OAuth 范围 ### **反向代理设置** - 为代理环境配置 `--trust-proxy` - 为面向公众的部署使用 `--external-url` ### **简单的反向代理设置** (可选) ```bash # 用于 SSL 终止的基本 nginx 配置 sudo tee /etc/nginx/sites-available/1mcp << 'EOF' server { listen 80; server_name your-domain.com; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name your-domain.com; ssl_certificate /path/to/your/cert.pem; ssl_certificate_key /path/to/your/key.pem; location / { proxy_pass http://localhost:3050; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } EOF ``` ### **使用不同的配置** ```bash # 创建特定于环境的配置 cp /etc/1mcp/mcp.json /etc/1mcp/mcp-dev.json cp /etc/1mcp/mcp.json /etc/1mcp/mcp-staging.json # 使用不同的配置启动 npx -y @1mcp/agent --config /etc/1mcp/mcp-dev.json --port 3051 npx -y @1mcp/agent --config /etc/1mcp/mcp-staging.json --port 3052 ``` ### **基本日志监控** ```bash # 监控 1MCP 日志 sudo journalctl -u 1mcp -f # 检查错误 sudo journalctl -u 1mcp --since "1 hour ago" | grep -i error # 简单的日志分析脚本 cat > ~/1mcp-log-summary.sh << 'EOF' #!/bin/bash echo "=== 1MCP 服务状态 ===" sudo systemctl status 1mcp --no-pager echo echo "=== 最近的错误 ===" sudo journalctl -u 1mcp --since "1 hour ago" | grep -i error | tail -10 EOF chmod +x ~/1mcp-log-summary.sh ``` ### **环境变量参考** ```bash # 认证设置 ONE_MCP_ENABLE_AUTH=true ONE_MCP_ENABLE_SCOPE_VALIDATION=true # 速率限制 ONE_MCP_RATE_LIMIT_WINDOW=15 # 15 分钟 ONE_MCP_RATE_LIMIT_MAX=100 # 安全 ONE_MCP_ENABLE_ENHANCED_SECURITY=true ONE_MCP_TRUST_PROXY=loopback # 会话管理 ONE_MCP_SESSION_TTL=1440 # 24 小时 ONE_MCP_SESSION_STORAGE_PATH=/var/lib/1mcp/sessions ``` ### **✅ 设置完成!** 您现在已将 1MCP 作为具有基本认证和监控的稳定服务运行。 --- ## 🆘 故障排除指南 ### **常见问题与解决方案** #### **🔌 连接问题** ```bash # 问题:“连接被拒绝” # 解决方案:检查 1MCP 是否正在运行 systemctl status 1mcp # 检查应用程序日志以获取服务器状态 # 问题:“MCP 服务器无响应” # 解决方案:检查单个服务器的健康状况 ONE_MCP_LOG_LEVEL=debug npx -y @1mcp/agent --config ~/.config/1mcp/mcp.json ``` #### **🔐 认证问题** ```bash # 问题:“无效令牌” # 解决方案:检查令牌过期时间和范围 # 通过 OAuth 端点检查令牌有效性 (当启用认证时) # 问题:“范围不足” # 解决方案:验证服务器标签是否与令牌范围匹配 cat ~/.config/1mcp/mcp.json | jq '.mcpServers[].tags' ``` #### **⚡ 性能问题** ```bash # 问题:响应时间慢 # 解决方案:检查服务器状态和日志 # 检查应用程序日志以获取服务器状态 # 检查日志以查找连接问题 htop # 检查 CPU/内存使用情况 # 问题:错误率高 # 解决方案:检查服务器日志以查找模式 journalctl -u 1mcp -f --lines=100 ``` ### **获取帮助** - 📖 **文档**:[文档主页](/) - 🐛 **问题**:[GitHub Issues](https://github.com/1mcp-app/agent/issues) - 💬 **社区**:[Discussions](https://github.com/1mcp-app/agent/discussions) --- ## 🎯 后续步骤 - [探索安全功能](/reference/security) - [高级架构](/reference/architecture) --- > **🎉 恭喜!** 您已成功将 1MCP 从基本代理设置到企业级基础设施。您的 AI 助手现在可以通过单一、统一的界面可靠、安全、可扩展地访问其所有 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