Plugged.in MCP Server

官方

一个综合性代理,将多个MCP服务器整合为单一MCP。它提供跨服务器的工具、提示、资源和模板的发现与管理,并包含一个用于构建MCP服务器时进行调试的游乐场。

文档

plugged.in MCP 中心 — 代理 · 知识 · 记忆 · 工具

plugged.in Logo

AI 数据交换的十字路口

一个统一的 MCP 中心,为你的 AI 提供知识记忆工具——而不仅仅是代理。通过单一连接管理和测试所有 MCP 服务器,同时为跨客户端的文档感知和记忆增强工作流提供支持。

smithery badge Version GitHub Stars License TypeScript MCP MCP Badge

📋 概述

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_generateduploadapi 来源
  • 通过 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_URLplugged.in 应用的基础 URLhttps://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>传输类型:stdiostreamable-httpstdio
--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_KEYYOUR_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 服务器访问。

快速开始

  1. 访问 smithery.ai 并登录
  2. 连接你的 GitHub 账户并选择 pluggedin-mcp 仓库
  3. 在 Smithery 界面中配置你的 Plugged.in API 密钥
  4. 部署并获取你的 HTTPS 端点

优势

  • 全天候可用:你的代理始终运行
  • 零配置:Smithery 自动从 smithery.yaml 检测设置
  • 自动扩缩:处理多个并发连接
  • Web 访问:非常适合 Web 应用和远程客户端

文档

有关完整的部署说明、配置选项、故障排除和技术细节,请参阅:

📖 Smithery 部署指南

自主代理(预览版)

该中心旨在端到端地支持代理循环:

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

🔄 工作流程

  1. 配置:代理从 plugged.in 应用获取服务器配置
  2. 智能发现pluggedin_discover_tools):
    • 缓存检查:首先检查现有缓存数据(< 1 秒)
    • 即时响应:立即返回静态工具 + 缓存的动态工具
    • 后台刷新:对于 force_refresh=true,在显示当前工具的同时在后台运行发现
    • 全新发现:仅在没有缓存数据时才运行完整发现
  3. 能力列表:代理从 plugged.in 应用 API 获取已发现的能力
    • tools/list:从 /api/tools 获取(包括静态 + 动态工具)
    • resources/list:从 /api/resources 获取
    • resource-templates/list:从 /api/resource-templates 获取
    • prompts/list:从 /api/prompts/api/custom-instructions 获取,合并结果
  4. 能力解析:代理将能力解析到目标服务器
    • tools/call:从工具名称解析前缀,在内部映射中查找服务器
    • resources/read:调用 /api/resolve/resource?uri=... 获取服务器详细信息
    • prompts/get:检查自定义指令前缀或调用 /api/resolve/prompt?name=...
  5. 请求路由:请求被路由到相应的底层 MCP 服务器
  6. 响应处理:来自底层服务器的响应返回给客户端

🔒 安全功能

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 注入
  • 命令允许列表:仅允许执行:
    • nodenpx - Node.js 命令
    • pythonpython3 - Python 命令
    • uvuvxuvenv - 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 文件。

🙏 致谢