关于 plugged.in MCP Proxy Server
plugged.in MCP Proxy Server 是一个 MCP 中间件,将多个 MCP 服务聚合为单一接口,并从 plugged.in App 获取工具、提示词和资源配置。它面向需要统一管理多个 MCP 服务的用户,并提供知识库检索与持久记忆等功能。
主要功能
- 01聚合多个下游 MCP 服务的工具、提示词和资源
- 02支持 STDIO 与 Streamable HTTP 两种传输模式
- 03内置知识库检索(RAG v2)与文档创建
- 04提供剪贴板式持久记忆工具
- 05工具发现结果缓存,可按需刷新
适用场景
- 01通过单一连接在 Claude Desktop、Cursor 等客户端中使用多个 MCP 服务
- 02为 AI 模型检索并引用已上传或生成的文档
- 03在多次会话之间保存和读取上下文数据
MCP 相关
该项目是 MCP 代理服务,作为客户端的统一入口,连接并管理下游 MCP 服务,并向 MCP 客户端暴露聚合后的工具、提示词和资源。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
23收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| topic | enum | 否 | 要了解的具体设置主题。选项:getting_started(默认)、api_key、configuration、troubleshootinggetting_started | api_key | configuration | troubleshooting |
详细介绍
plugged.in MCP 中枢 — 代理 · 知识 · 记忆 · 工具
📋 概述
plugged.in MCP 代理服务是一个强大的中间件,可将多个模型上下文协议(MCP)服务聚合到统一接口中。它从 plugged.in App 获取工具、提示词和资源配置,并将请求智能路由至相应的底层 MCP 服务。
此代理可与任何 MCP 客户端(Claude、Cline、Cursor 等)无缝集成,同时通过 plugged.in 生态系统提供高级管理功能。
中枢支柱:知识 · 记忆 · 工具 · 代理
知识(RAG v2 / AI 文档交换)
通过统一且可追溯来源的文档检索,搜索内容并为模型输出提供依据。MCP 服务可在你的资料库中创建和管理文档,并支持版本控制、可见性控制和模型来源归属。使用内置 RAG 搜索所有已连接来源,并返回相关片段和元数据。
记忆(持久化 AI 记忆)
长期记忆,按工作区/配置文件划分,并可跨会话保留。中枢集成了 plugged.in App 的持久化记忆,因此 Agent 的操作和洞察可以跨任务存储和调用。内置记忆工具已列入路线图,将在相同的身份验证模型下提供便捷的 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 App 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 App 获取令牌
- 安全存储和刷新令牌
- 无需客户端进行身份验证
- 增强的通知系统:支持双向通知
- 向 plugged.in App 发送通知
- 接收来自 MCP 服务的通知
- 将通知标记为已读或未读
- 以编程方式删除通知
- 趋势分析:实时活动追踪
- 记录并追踪每次工具调用
- 为热门服务计算提供数据
- 提供使用指标和热度分析
- Registry 集成:全面支持 Registry v2 功能
- 从 Registry 自动发现服务
- 追踪安装情况和指标
- 支持社区服务
📦 v1.1.0 新增功能
- Streamable HTTP 支持:全面支持使用 Streamable HTTP 传输的下游 MCP 服务
- HTTP 服务模式:以 HTTP 服务模式运行代理,并可配置端口
- 灵活的身份验证:可选的 HTTP 端点 Bearer 令牌身份验证
- 会话管理:可选择有状态(基于会话)或无状态的运行模式
🎯 v1.0.0 核心功能
- 实时通知:全面支持通知,追踪所有 MCP 活动
- RAG 集成:支持通过 plugged.in App 进行文档增强查询
- 检查器脚本:用于调试和开发的自动化测试工具
- 运行状况监控:内置 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 App 的 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 App 的 API 密钥 | 是 | - |
PLUGGEDIN_API_BASE_URL | plugged.in App 的基础 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 Cloud 部署
将 plugged.in MCP Proxy 部署到 Smithery Cloud,即可托管 MCP 服务并随时访问。
快速入门
- 访问 smithery.ai 并登录
- 连接你的 GitHub 账户并选择
pluggedin-mcp仓库 - 在 Smithery UI 中配置你的 Plugged.in API 密钥
- 部署并获取 HTTPS 终端节点
优势
- 全天候可用:你的代理始终运行
- 零配置:Smithery 会从
smithery.yaml自动检测设置 - 自动扩缩:处理多个并发连接
- Web 访问:非常适合 Web 应用和远程客户端
文档
有关完整的部署说明、配置选项、故障排除和技术细节,请参阅:
自主 Agent(预览版)
该中心旨在端到端支持 Agent 工作循环:
MCP Client → plugged.in MCP Hub → (Plan → Act → Reflect)
↘ Knowledge ↘ Memory ↘ Tools
- 规划 — 推导目标和约束条件,构建任务图。
- 执行 — 调用统一目录中的工具;安全地路由到 STDIO/SSE/HTTP 服务。
- 反思 — 将结果持久化到 Memory 和 Knowledge(文档、笔记、制品)中,以改进后续步骤。
安全与运维
在 Streamable 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 App 获取服务配置
- 智能发现(
pluggedin_discover_tools):- 检查缓存:首先检查是否存在缓存数据(< 1 秒)
- 即时响应:立即返回静态工具和缓存的动态工具
- 后台刷新:对于
force_refresh=true,在显示当前工具的同时于后台运行发现 - 全新发现:仅在不存在缓存数据时运行完整发现
- 能力列表:代理从 plugged.in App 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 Proxy 实施了全面的安全措施,以保护您的系统和数据:
输入验证与清理
- 防止命令注入:执行前,根据允许列表验证所有命令和参数
- 环境变量安全:安全解析
.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 元字符和控制字符
- 环境变量验证:仅允许包含字母数字字符和下划线的键
Streamable HTTP 安全性
- 延迟身份验证:工具发现无需身份验证,从而提高兼容性
- 会话安全:以加密安全的方式生成会话 ID
- CORS 防护:可配置用于 Web 访问的 CORS 请求头
- 请求大小限制:防止通过大型负载发动 DoS 攻击
安全实用工具
专用的 security-utils.ts 模块提供:
- Bearer 令牌验证
- 带 SSRF 防护的 URL 验证
- 命令参数清理
- 环境变量验证
- 速率限制实现
- 错误消息清理
有关安全实现的详细信息,请参阅 SECURITY.md。
🧩 与 plugged.in App 集成
plugged.in MCP Proxy Server 专为与 plugged.in App 无缝协作而设计,该应用提供:
- 用于管理 MCP 服务配置的 Web 界面
- 集中式能力发现(工具、资源、模板、提示词)
- RAG v2 文档库:上传文档,并启用带有完整归属信息的 AI 生成内容
- 自定义指令管理
- 支持多个工作区,以使用不同的配置集
- 交互式试验场,可使用任意 AI 模型测试 MCP 工具
- 用户身份验证和 API 密钥管理
- AI 文档交换:创建、搜索和管理文档,并追踪模型归属信息
📚 相关资源
🤝 参与贡献
欢迎贡献!请随时提交 Pull Request。
📝 近期更新
Version 1.9.0(2025 年 9 月)- 安全增强
🔒 增强 HTML 清理
- 行业标准清理:使用
sanitize-html库替换自定义的基于正则表达式的 HTML 清理方案 - 防止 XSS:全面防护跨站脚本攻击
- HTML 属性安全:增强针对 HTML 属性上下文(引号、与号)的清理
- 格式字符串注入:修复日志记录中的格式字符串注入漏洞
- 安全测试:为所有清理函数提供全面的测试覆盖
🛡️ 安全改进
- 符合 CodeQL 要求:解决 GitHub CodeQL 分析发现的所有安全漏洞
- 输入验证:加强所有函数中的输入验证和清理
- 依赖更新:添加
sanitize-html,以稳健地过滤 HTML 内容 - 测试覆盖:增强安全测试套件,验证 XSS 攻击防护
Version 1.5.0(2025 年 1 月)- RAG v2
🤖 AI 文档交换
- AI 生成文档:MCP 服务现在可以在你的库中创建文档,并附带完整的 AI 归属信息
- 模型归属追踪:完整记录各文档由哪些 AI 模型创建或更新
- 高级文档搜索:按 AI 模型、提供方、日期、标签和来源类型筛选
- 文档版本控制:追踪变更,并维护 AI 生成内容的版本历史
- 多来源支持:支持来自上传、AI 生成或 API 集成的文档
🔍 增强 RAG 能力
- 语义搜索:通过 PostgreSQL 全文搜索提升相关性评分
- 智能筛选:按可见性、模型归属和文档来源筛选结果
- 摘要片段生成:自动提取摘要片段并突出显示关键词
- 性能优化:通过优化索引加快查询速度
Version 1.2.0(2025 年 1 月)
🔒 安全增强
- URL 验证:全面防护 SSRF,拦截私有 IP、localhost 和危险端口
- 命令白名单:仅允许执行获批的命令(node、npx、python 等)
- 请求头清理:防止请求头注入攻击
- 惰性身份验证:改进与 Smithery 的兼容性,无需身份验证即可发现工具
🚀 性能改进
- 优化 Docker 构建:采用多阶段构建,尽可能减小容器体积
- 仅包含生产依赖:从 Docker 镜像中排除测试文件和开发依赖
- 资源效率:专为部署到资源受限的环境而设计
🔧 技术改进
- 增强 Streamable HTTP 传输中的错误处理
- 改进会话清理和内存管理
- 改进 TypeScript 类型和代码组织
Version 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 App 进行文档增强查询
- 检查器脚本:用于调试和开发的全新自动化测试工具
- 运行状况监控:内置 ping 端点,用于连接监控
🔒 安全增强
- 输入验证:对所有输入进行符合行业标准的验证和清理
- URL 安全性:增强 URL 验证,并提供 SSRF 防护
- 环境安全性:使用 dotenv 安全解析环境变量
- 错误清理:防止错误响应泄露信息
🐛 Bug 修复
- 修复 JSON-RPC 协议干扰问题(分离 stdout 和 stderr)
- 解决开发环境中的 localhost 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 文件。
🙏 致谢
- 灵感来自 MCP Proxy Server
- 基于 Model Context Protocol 构建
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。