Plugged.in MCP Server
官方一个综合性代理,将多个MCP服务器整合为单一MCP。它提供跨服务器的工具、提示、资源和模板的发现与管理,并包含一个用于构建MCP服务器时进行调试的游乐场。
文档
plugged.in MCP 中心 — 代理 · 知识 · 记忆 · 工具
AI 数据交换的十字路口
一个统一的 MCP 中心,为你的 AI 提供知识、记忆和工具——而不仅仅是代理。通过单一连接管理和测试所有 MCP 服务器,同时为跨客户端的文档感知和记忆增强工作流提供支持。
📋 概述
plugged.in MCP 代理服务器是一个强大的中间件,可将多个模型上下文协议 (MCP) 服务器聚合到一个统一的接口中。它从 plugged.in 应用 获取工具、提示和资源配置,并智能地将请求路由到相应的底层 MCP 服务器。
该代理可与任何 MCP 客户端(Claude、Cline、Cursor 等)无缝集成,同时通过 plugged.in 生态系统提供高级管理功能。
中心支柱:知识 · 记忆 · 工具 · 代理
知识(RAG v2 / AI 文档交换)
通过统一、可溯源感知的文档检索来搜索和增强模型输出。MCP 服务器可以在你的库中创建和管理文档,并支持版本控制、可见性控制和模型溯源。使用内置的 RAG 跨所有已连接来源进行搜索,并返回相关片段和元数据。
记忆(持久化 AI 记忆)
跨会话存活的长期、工作区/配置文件范围的记忆。该中心与 plugged.in 应用的持久化记忆集成,因此代理操作和洞察可以跨任务存储和调用。内置的记忆工具已在路线图中,将在相同的认证模型下提供低摩擦的 get/put/search 模式。
工具
将内置功能与下游 MCP 服务器(STDIO、SSE、Streamable HTTP)聚合。工具发现会被缓存,并可按需刷新;中心级别的发现可为任何 MCP 客户端返回统一的目录。该中心支持工具、资源、资源模板和提示。
代理
为每个客户端提供单一连接。以 STDIO(默认)或 Streamable HTTP 模式运行,支持可选的 API 认证和无状态模式。适用于 Claude Desktop、Cline、Cursor、MCP Inspector 等;在集中管理策略和遥测的同时,保留你现有的客户端配置。
⭐ 如果你觉得这个项目有用,请考虑在 GitHub 上给它一颗星! 这有助于我们触达更多开发者,并激励我们持续改进。
✨ 主要特性
🚀 核心能力
- 内置 AI 游乐场:无需任何客户端设置,即可使用 Claude、Gemini、OpenAI 和 xAI 即时测试你的 MCP
- 通用 MCP 兼容性:适用于任何 MCP 客户端,包括 Claude Desktop、Cline 和 Cursor
- 多服务器支持:连接 STDIO、SSE 和 Streamable HTTP MCP 服务器
- 双传输模式:以 STDIO(默认)或 Streamable HTTP 服务器模式运行代理
- 统一文档搜索:使用内置的 RAG 功能跨所有已连接服务器进行搜索
- AI 文档交换(RAG v2):MCP 服务器可以在你的库中创建和管理文档,并带有完整的溯源信息
- 来自任何模型的通知:接收实时通知,并支持可选的邮件发送
- 多工作区层:一键切换不同的 MCP 配置集
- API 驱动的代理:从 plugged.in 应用 API 获取能力,而非直接发现
- 完整的 MCP 支持:处理工具、资源、资源模板和提示
- 自定义指令:支持以 MCP 提示格式编写的服务器特定指令
🎯 v1.5.0 新增功能(RAG v2 - AI 文档交换)
- AI 文档创建:MCP 服务器现在可以直接在你的库中创建文档
- 完整的模型溯源追踪(哪个 AI 创建/更新了文档)
- 带有变更追踪的版本历史
- 通过 SHA-256 哈希进行内容去重
- 支持多种格式:MD、TXT、JSON、HTML、PDF 等
- 高级文档搜索:增强的 RAG 查询,支持 AI 过滤
- 按 AI 模型、提供商、日期范围、标签和来源类型过滤
- 带有相关性评分的语义搜索
- 自动生成带有关键词高亮的片段
- 支持过滤:
ai_generated、upload或api来源
- 通过 MCP 进行文档管理:
- 设置文档可见性:私有、工作区或公开
- 文档版本的父子关系
- 基于配置文件的组织以及基于项目的作用域
- 文档处理的实时进度追踪
🎯 v1.4.0 功能(Registry v2 支持)
- OAuth 令牌管理:为 Streamable HTTP MCP 服务器提供无缝的 OAuth 认证处理
- 从 plugged.in 应用自动获取令牌
- 安全的令牌存储和刷新机制
- 无需客户端认证
- 增强的通知系统:双向通知支持
- 向 plugged.in 应用发送通知
- 从 MCP 服务器接收通知
- 将通知标记为已读/未读
- 以编程方式删除通知
- 趋势分析:实时活动追踪
- 每次工具调用都会被记录和追踪
- 为趋势服务器计算做出贡献
- 使用量指标和流行度洞察
- 注册表集成:完全支持 Registry v2 功能
- 从注册表自动发现服务器
- 安装追踪和指标
- 社区服务器支持
📦 v1.1.0 功能
- Streamable HTTP 支持:完全支持使用 Streamable HTTP 传输的下游 MCP 服务器
- HTTP 服务器模式:以 HTTP 服务器模式运行代理,支持可配置端口
- 灵活的认证:为 HTTP 端点提供可选的 Bearer 令牌认证
- 会话管理:可选择有状态(基于会话)或无状态操作模式
🎯 v1.0.0 核心功能
- 实时通知:通过全面的通知支持追踪所有 MCP 活动
- RAG 集成:通过 plugged.in 应用支持文档增强查询
- 检查器脚本:用于调试和开发的自动化测试工具
- 健康监控:内置 ping 端点用于连接监控
🔧 工具类别
代理提供两种不同类别的工具:
🔧 静态内置工具(始终可用)
这些工具内置于代理中,无需任何服务器配置即可工作:
pluggedin_discover_tools- 带有缓存的智能发现,可即时获取结果pluggedin_ask_knowledge_base- 跨文档的 RAG 搜索,支持 AI 过滤功能pluggedin_send_notification- 发送通知,支持可选的邮件发送pluggedin_create_document- 在你的库中创建 AI 生成的文档pluggedin_list_documents- 列出文档,支持过滤选项pluggedin_search_documents- 通过查询搜索特定文档pluggedin_get_document- 通过 ID 检索特定文档的完整内容pluggedin_update_document- 更新或追加现有文档
📋 剪贴板工具(记忆系统)
pluggedin_clipboard_set- 按名称(语义键)或索引设置剪贴板条目pluggedin_clipboard_get- 按名称、索引获取剪贴板条目,或列出所有条目pluggedin_clipboard_delete- 按名称、索引删除剪贴板条目,或清除所有条目pluggedin_clipboard_list- 列出所有剪贴板条目及其元数据pluggedin_clipboard_push- 使用自动递增索引推送一个值(栈推送)pluggedin_clipboard_pop- 弹出索引最高的条目(后进先出行为)
⚡ 动态 MCP 工具(来自已连接服务器)
这些工具来自你配置的 MCP 服务器,可以开启/关闭:
- 数据库工具(PostgreSQL、SQLite 等)
- 文件系统工具
- API 集成工具
- 来自任何 MCP 服务器的自定义工具
发现工具智能地展示这两种类别,让 AI 模型能够立即访问所有可用的功能。
🚀 发现工具用法
# Quick discovery - returns cached data instantly
pluggedin_discover_tools()
# Force refresh - shows current tools + runs background discovery
pluggedin_discover_tools({"force_refresh": true})
# Discover specific server
pluggedin_discover_tools({"server_uuid": "uuid-here"})
示例响应:
## 🔧 Static Built-in Tools (Always Available):
1. **pluggedin_discover_tools** - Smart discovery with caching
2. **pluggedin_rag_query** - RAG v2 search across documents with AI filtering
3. **pluggedin_send_notification** - Send notifications
4. **pluggedin_create_document** - (Coming Soon) Create AI-generated documents
## ⚡ Dynamic MCP Tools (8) - From Connected Servers:
1. **query** - Run read-only SQL queries
2. **generate_random_integer** - Generate secure random integers
...
📋 剪贴板使用示例
剪贴板系统为 AI 工作流提供持久化记忆:
# Store a named entry (upserts if exists)
pluggedin_clipboard_set({
"name": "customer_context",
"value": "{\"name\": \"John Doe\", \"account_id\": \"12345\"}",
"contentType": "application/json"
})
# Store an indexed entry for ordered pipelines
pluggedin_clipboard_set({
"idx": 0,
"value": "First pipeline step result",
"createdByTool": "data_processor"
})
# Push to stack (auto-incrementing index)
pluggedin_clipboard_push({
"value": "Analysis result from step 1",
"contentType": "text/plain"
})
# Get a specific entry by name
pluggedin_clipboard_get({"name": "customer_context"})
# Pop from stack (LIFO - returns and removes highest index)
pluggedin_clipboard_pop()
# List all entries with metadata
pluggedin_clipboard_list({"limit": 20})
# Delete specific entry
pluggedin_clipboard_delete({"name": "customer_context"})
# Clear all clipboard entries
pluggedin_clipboard_delete({"clearAll": true})
📚 RAG v2 使用示例
增强的 RAG v2 系统允许 MCP 服务器创建和搜索带有完整 AI 溯源的文档:
# Search for documents created by specific AI models
pluggedin_rag_query({
"query": "system architecture",
"filters": {
"modelName": "Claude 3 Opus",
"source": "ai_generated",
"tags": ["technical"]
}
})
# Search across all document sources
pluggedin_rag_query({
"query": "deployment guide",
"filters": {
"dateFrom": "2024-01-01",
"visibility": "workspace"
}
})
# Future: Create AI-generated documents (Coming Soon)
pluggedin_create_document({
"title": "Analysis Report",
"content": "# Market Analysis\n\nDetailed findings...",
"format": "md",
"tags": ["analysis", "market"],
"metadata": {
"model": {
"name": "Claude 3 Opus",
"provider": "Anthropic"
}
}
})
🚀 快速开始
前提条件
- Node.js 18+(推荐 v20+)
- 来自 plugged.in 应用的 API 密钥(在 plugged.in/api-keys 获取)
安装
# Install and run with npx (latest v1.0.0)
npx -y @pluggedin/pluggedin-mcp-proxy@latest --pluggedin-api-key YOUR_API_KEY
🔄 升级到 v1.0.0
对于现有安装,请参阅我们的迁移指南以获取详细的升级说明。
# Quick upgrade
npx -y @pluggedin/[email protected] --pluggedin-api-key YOUR_API_KEY
MCP 客户端配置
Claude Desktop
将以下内容添加到你的 Claude Desktop 配置中:
{
"mcpServers": {
"pluggedin": {
"command": "npx",
"args": ["-y", "@pluggedin/pluggedin-mcp-proxy@latest"],
"env": {
"PLUGGEDIN_API_KEY": "YOUR_API_KEY"
}
}
}
}
Cline
将以下内容添加到你的 Cline 配置中:
{
"mcpServers": {
"pluggedin": {
"command": "npx",
"args": ["-y", "@pluggedin/pluggedin-mcp-proxy@latest"],
"env": {
"PLUGGEDIN_API_KEY": "YOUR_API_KEY"
}
}
}
}
Cursor
对于 Cursor,你可以使用命令行参数代替环境变量:
npx -y @pluggedin/pluggedin-mcp-proxy@latest --pluggedin-api-key YOUR_API_KEY
⚙️ 配置选项
环境变量
| 变量 | 描述 | 必需 | 默认值 |
|---|---|---|---|
PLUGGEDIN_API_KEY | 来自 plugged.in 应用的 API 密钥 | 是 | - |
PLUGGEDIN_API_BASE_URL | plugged.in 应用的基础 URL | 否 | https://plugged.in |
命令行参数
命令行参数优先于环境变量:
npx -y @pluggedin/pluggedin-mcp-proxy@latest --pluggedin-api-key YOUR_API_KEY --pluggedin-api-base-url https://your-custom-url.com
传输选项
| 选项 | 描述 | 默认值 |
|---|---|---|
--transport <type> | 传输类型:stdio 或 streamable-http | stdio |
--port <number> | Streamable HTTP 服务器的端口 | 12006 |
--stateless | 为 Streamable HTTP 启用无状态模式 | false |
--require-api-auth | 要求 Streamable HTTP 请求提供 API 密钥 | false |
如需完整的选项列表:
npx -y @pluggedin/pluggedin-mcp-proxy@latest --help
🌐 Streamable HTTP 模式
代理可以作为 HTTP 服务器运行,而不是 STDIO,从而支持基于 Web 的访问和远程连接。
基本用法
# Run as HTTP server on default port (12006)
npx -y @pluggedin/pluggedin-mcp-proxy@latest --transport streamable-http --pluggedin-api-key YOUR_API_KEY
# Custom port
npx -y @pluggedin/pluggedin-mcp-proxy@latest --transport streamable-http --port 8080 --pluggedin-api-key YOUR_API_KEY
# With authentication required
npx -y @pluggedin/pluggedin-mcp-proxy@latest --transport streamable-http --require-api-auth --pluggedin-api-key YOUR_API_KEY
# Stateless mode (new session per request)
npx -y @pluggedin/pluggedin-mcp-proxy@latest --transport streamable-http --stateless --pluggedin-api-key YOUR_API_KEY
HTTP 端点
POST /mcp- 发送 MCP 消息GET /mcp- 服务器发送事件流(可选)DELETE /mcp- 终止会话GET /health- 健康检查端点
会话管理
在有状态模式(默认)下,使用 mcp-session-id 头来维护会话:
# First request creates a session
curl -X POST http://localhost:12006/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'
# Subsequent requests use the same session
curl -X POST http://localhost:12006/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "mcp-session-id: YOUR_SESSION_ID" \
-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"tool_name"},"id":2}'
认证
使用 --require-api-auth 时,将你的 API 密钥作为 Bearer 令牌包含在内:
curl -X POST http://localhost:12006/mcp \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","method":"ping","id":1}'
🐳 Docker 用法
你也可以使用 Docker 构建和运行代理服务器。
构建镜像
确保你已安装并运行 Docker。导航到 pluggedin-mcp 目录并运行:
docker build -t pluggedin-mcp-proxy:latest .
包含一个 .dockerignore 文件以优化构建上下文。
运行容器
STDIO 模式(默认)
以 STDIO 模式运行容器以进行 MCP Inspector 测试:
docker run -it --rm \
-e PLUGGEDIN_API_KEY="YOUR_API_KEY" \
-e PLUGGEDIN_API_BASE_URL="YOUR_API_BASE_URL" \
--name pluggedin-mcp-container \
pluggedin-mcp-proxy:latest
Streamable HTTP 模式
以 HTTP 服务器模式运行容器:
docker run -d --rm \
-e PLUGGEDIN_API_KEY="YOUR_API_KEY" \
-e PLUGGEDIN_API_BASE_URL="YOUR_API_BASE_URL" \
-p 12006:12006 \
--name pluggedin-mcp-http \
pluggedin-mcp-proxy:latest \
--transport streamable-http --port 12006
替换 YOUR_API_KEY 和 YOUR_API_BASE_URL(如果不使用默认的 https://plugged.in)。
使用 MCP Inspector 测试
当容器运行时,你可以使用 MCP Inspector 连接到它:
npx @modelcontextprotocol/inspector docker://pluggedin-mcp-container
这将连接到正在运行的容器的标准输入/输出。
停止容器
在 docker run 正在执行的终端中按 Ctrl+C。--rm 标志确保容器在停止时自动移除。
☁️ Smithery 云部署
将 plugged.in MCP 代理部署到 Smithery Cloud,以获得托管、始终可用的 MCP 服务器访问。
快速开始
- 访问 smithery.ai 并登录
- 连接你的 GitHub 账户并选择
pluggedin-mcp仓库 - 在 Smithery 界面中配置你的 Plugged.in API 密钥
- 部署并获取你的 HTTPS 端点
优势
- 全天候可用:你的代理始终运行
- 零配置:Smithery 自动从
smithery.yaml检测设置 - 自动扩缩:处理多个并发连接
- Web 访问:非常适合 Web 应用和远程客户端
文档
有关完整的部署说明、配置选项、故障排除和技术细节,请参阅:
自主代理(预览版)
该中心旨在端到端地支持代理循环:
MCP Client → plugged.in MCP Hub → (Plan → Act → Reflect)
↘ Knowledge ↘ Memory ↘ Tools
- 规划 — 推导目标和约束,形成任务图。
- 行动 — 从统一目录中调用工具;在 STDIO/SSE/HTTP 服务器之间安全路由。
- 反思 — 将结果持久化到记忆和知识(文档、笔记、工件)中,以改进后续步骤。
安全与运维
在可流式 HTTP 模式下启用 --require-api-auth;对命令、参数和环境变量使用允许列表。将服务器级验证与针对提示注入加固的客户端提示相结合。利用现有的日志记录/遥测来跟踪工具使用和文档变更。
🏗️ 系统架构
plugged.in MCP 代理服务器充当 MCP 客户端与多个底层 MCP 服务器之间的桥梁:
sequenceDiagram
participant MCPClient as MCP Client (e.g. Claude Desktop)
participant PluggedinMCP as plugged.in MCP Proxy
participant PluggedinApp as plugged.in App
participant MCPServers as Underlying MCP Servers
MCPClient ->> PluggedinMCP: Request list tools/resources/prompts
PluggedinMCP ->> PluggedinApp: Get capabilities via API
PluggedinApp ->> PluggedinMCP: Return capabilities (prefixed)
MCPClient ->> PluggedinMCP: Call tool/read resource/get prompt
alt Standard capability
PluggedinMCP ->> PluggedinApp: Resolve capability to server
PluggedinApp ->> PluggedinMCP: Return server details
PluggedinMCP ->> MCPServers: Forward request to target server
MCPServers ->> PluggedinMCP: Return response
else Custom instruction
PluggedinMCP ->> PluggedinApp: Get custom instruction
PluggedinApp ->> PluggedinMCP: Return formatted messages
end
PluggedinMCP ->> MCPClient: Return response
alt Discovery tool (Smart Caching)
MCPClient ->> PluggedinMCP: Call pluggedin_discover_tools
alt Cached data available
PluggedinMCP ->> PluggedinApp: Check cached capabilities
PluggedinApp ->> PluggedinMCP: Return cached tools/resources/prompts
PluggedinMCP ->> MCPClient: Return instant results (static + dynamic)
else Force refresh or no cache
PluggedinMCP ->> PluggedinApp: Trigger background discovery
PluggedinMCP ->> MCPClient: Return current tools + "discovery running"
PluggedinApp ->> MCPServers: Connect and discover capabilities (background)
MCPServers ->> PluggedinApp: Return fresh capabilities
end
end
🔄 工作流程
- 配置:代理从 plugged.in 应用获取服务器配置
- 智能发现(
pluggedin_discover_tools):- 缓存检查:首先检查现有缓存数据(< 1 秒)
- 即时响应:立即返回静态工具 + 缓存的动态工具
- 后台刷新:对于
force_refresh=true,在显示当前工具的同时在后台运行发现 - 全新发现:仅在没有缓存数据时才运行完整发现
- 能力列表:代理从 plugged.in 应用 API 获取已发现的能力
tools/list:从/api/tools获取(包括静态 + 动态工具)resources/list:从/api/resources获取resource-templates/list:从/api/resource-templates获取prompts/list:从/api/prompts和/api/custom-instructions获取,合并结果
- 能力解析:代理将能力解析到目标服务器
tools/call:从工具名称解析前缀,在内部映射中查找服务器resources/read:调用/api/resolve/resource?uri=...获取服务器详细信息prompts/get:检查自定义指令前缀或调用/api/resolve/prompt?name=...
- 请求路由:请求被路由到相应的底层 MCP 服务器
- 响应处理:来自底层服务器的响应返回给客户端
🔒 安全功能
plugged.in MCP 代理实施了全面的安全措施来保护你的系统和数据:
输入验证与净化
- 命令注入防护:所有命令和参数在执行前都根据允许列表进行验证
- 环境变量安全:安全解析
.env文件,正确处理引号和多行值 - 令牌验证:针对 API 密钥和认证令牌使用强正则表达式模式(32-64 个十六进制字符)
网络安全
- SSRF 防护:URL 验证阻止访问:
- 本地主机和回环地址(127.0.0.1, ::1)
- 私有 IP 范围(10.x, 172.16-31.x, 192.168.x)
- 链路本地地址(169.254.x)
- 多播和保留范围
- 常见的内部服务端口(SSH、数据库等)
- 头部验证:通过以下方式防止头部注入:
- 危险头部拦截
- 符合 RFC 7230 的头部名称验证
- 控制字符检测
- 头部大小限制(最大 8KB)
- 速率限制:
- 工具调用:每分钟 60 个请求
- API 调用:每分钟 100 个请求
- 错误净化:通过净化错误消息防止信息泄露
进程安全
- 安全命令执行:使用
execFile()而非exec()以防止 shell 注入 - 命令允许列表:仅允许执行:
node、npx- Node.js 命令python、python3- Python 命令uv、uvx、uvenv- UV Python 工具
- 参数净化:从所有参数中移除 shell 元字符和控制字符
- 环境变量验证:仅允许包含下划线的字母数字键
可流式 HTTP 安全
- 惰性认证:工具发现不需要认证,提高了兼容性
- 会话安全:加密安全的会话 ID 生成
- CORS 保护:为 Web 访问提供可配置的 CORS 头部
- 请求大小限制:防止通过大负载进行 DoS 攻击
安全工具
一个专用的 security-utils.ts 模块提供:
- Bearer 令牌验证
- 带 SSRF 保护的 URL 验证
- 命令参数净化
- 环境变量验证
- 速率限制实现
- 错误消息净化
有关详细的安全实现,请参阅 SECURITY.md。
🧩 与 plugged.in 应用集成
plugged.in MCP 代理服务器旨在与 plugged.in 应用 无缝协作,该应用提供:
- 用于管理 MCP 服务器配置的 Web 界面
- 集中式能力发现(工具、资源、模板、提示)
- RAG v2 文档库:上传文档并启用 AI 生成的内容,并附有完整归属
- 自定义指令管理
- 支持不同配置集的多工作区
- 用于测试 MCP 工具与任何 AI 模型的交互式游乐场
- 用户认证和 API 密钥管理
- AI 文档交换:创建、搜索和管理文档,并跟踪模型归属
📚 相关资源
🤝 贡献
欢迎贡献!请随时提交 Pull Request。
📝 最近更新
版本 1.9.0(2025 年 9 月)- 安全增强
🔒 增强的 HTML 净化
- 行业标准净化:用
sanitize-html库替换了基于自定义正则表达式的 HTML 净化 - XSS 防护:全面防护跨站脚本攻击
- HTML 属性安全:增强了 HTML 属性上下文(引号、& 符号)的净化
- 格式字符串注入:修复了日志记录中的格式字符串注入漏洞
- 安全测试:为所有净化功能提供了全面的测试覆盖
🛡️ 安全改进
- CodeQL 合规:解决了 GitHub CodeQL 分析发现的所有安全漏洞
- 输入验证:加强了所有功能的输入验证和净化
- 依赖更新:添加了
sanitize-html以实现强大的 HTML 内容过滤 - 测试覆盖:增强了安全测试套件,包含 XSS 攻击防护验证
版本 1.5.0(2025 年 1 月)- RAG v2
🤖 AI 文档交换
- AI 生成的文档:MCP 服务器现在可以在你的库中创建文档,并附有完整的 AI 归属
- 模型归属跟踪:完整记录哪些 AI 模型创建或更新了每个文档
- 高级文档搜索:按 AI 模型、提供商、日期、标签和来源类型筛选
- 文档版本控制:跟踪 AI 生成内容的更改并维护版本历史
- 多源支持:来自上传、AI 生成或 API 集成的文档
🔍 增强的 RAG 能力
- 语义搜索:通过 PostgreSQL 全文搜索改进了相关性评分
- 智能筛选:按可见性、模型归属和文档来源筛选结果
- 片段生成:自动提取片段并高亮关键词
- 性能优化:通过优化索引加快查询速度
版本 1.2.0(2025 年 1 月)
🔒 安全增强
- URL 验证:全面的 SSRF 防护,阻止私有 IP、本地主机和危险端口
- 命令允许列表:仅允许执行已批准的命令(node、npx、python 等)
- 头部净化:防止头部注入攻击
- 惰性认证:通过免认证工具发现提高了 Smithery 兼容性
🚀 性能改进
- 优化的 Docker 构建:多阶段构建以实现最小容器占用
- 仅生产依赖:从 Docker 镜像中排除测试文件和开发依赖
- 资源效率:专为在资源受限的环境中部署而设计
🔧 技术改进
- 增强了可流式 HTTP 传输中的错误处理
- 更好的会话清理和内存管理
- 改进了 TypeScript 类型和代码组织
版本 1.1.0(2024 年 12 月)
🚀 新功能
- 可流式 HTTP 支持:使用现代可流式 HTTP 传输连接下游 MCP 服务器
- HTTP 服务器模式:将代理作为 HTTP 服务器运行,以实现基于 Web 的访问
- 灵活的会话管理:在无状态或有状态模式之间选择
- 认证选项:为 HTTP 端点提供可选的 Bearer 令牌认证
- 健康监控:用于服务监控的
/health端点
🔧 技术改进
- 将 MCP SDK 更新至 v1.13.1 以获得最新的协议支持
- 添加了 Express.js 集成以实现 HTTP 服务器功能
- 增强了 TypeScript 类型以改善开发者体验
版本 1.0.0(2025 年 6 月)
🎯 主要功能
- 实时通知系统:通过全面的通知支持跟踪所有 MCP 活动
- RAG 集成:通过 plugged.in 应用支持文档增强查询
- 检查器脚本:用于调试和开发的新自动化测试工具
- 健康监控:用于连接监控的内置 ping 端点
🔒 安全增强
- 输入验证:对所有输入进行行业标准的验证和净化
- URL 安全:增强了 URL 验证和 SSRF 防护
- 环境安全:使用 dotenv 安全解析环境变量
- 错误净化:防止错误响应中的信息泄露
🐛 错误修复
- 修复了 JSON-RPC 协议干扰(stdout 与 stderr 分离)
- 解决了开发环境的本地主机 URL 验证问题
- 修复了检查器脚本中的 API 密钥处理
- 提高了连接稳定性和内存管理
🔧 开发者工具
- 用于自动化测试的新检查器脚本
- 改进了错误消息和调试能力
- 使用正确的 stderr 的结构化日志记录
- 增强了 TypeScript 类型安全
有关完整详细信息,请参阅 发布说明。
🧪 测试与开发
本地开发
测试包含在内用于开发目的,但从 Docker 构建中排除以最小化容器占用。
# Run tests locally
npm test
# or
./scripts/test-local.sh
# Run tests in watch mode
npm run test:watch
# Run tests with UI
npm run test:ui
轻量级 Docker 构建
Docker 镜像经过优化以实现最小占用:
- 多阶段构建过程
- 最终镜像中仅包含生产依赖
- 排除测试文件和开发依赖
- 针对资源受限的环境进行了优化
# Build optimized Docker image
docker build -t pluggedin-mcp .
# Check image size
docker images pluggedin-mcp
📄 许可证
本项目根据 MIT 许可证授权 - 有关详细信息,请参阅 LICENSE 文件。