mcpField
P
PluggedinMCP

PluggedinMCP

本地服务
github.com/VeriTeknik开发工具523 周前更新

关于 PluggedinMCP

PluggedinMCP 是基于 plugged.in App 配置的 MCP 代理服务,将多个下游服务聚合为单一接口,面向需要集中管理工具、提示词和资源的 MCP 客户端。它还提供文档检索与管理能力。

主要功能

  1. 01聚合多个 MCP 服务
  2. 02发现工具、提示词和资源
  3. 03跨来源文档搜索与管理
  4. 04STDIO 和 Streamable HTTP 传输
  5. 05通知与剪贴板记忆工具

适用场景

  1. 01通过单一连接使用多个 MCP 服务
  2. 02检索并整理连接来源中的文档
  3. 03跨会话存取剪贴板条目

MCP 相关

该 MCP 服务代理并聚合下游 MCP 服务,向客户端统一提供工具、资源、资源模板和提示词。支持 STDIO 与 Streamable HTTP。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"pluggedin": {
"command": "npx",
"args": [
"-y",
"@pluggedin/pluggedin-mcp-proxy"
],
"env": {
"PLUGGEDIN_API_KEY": "<PLUGGEDIN_API_KEY>"
}
}
}
}
启动命令npx -y @pluggedin/pluggedin-mcp-proxy
需要配置的环境变量
PLUGGEDIN_API_KEY密钥

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@pluggedin/pluggedin-mcp-proxy

工具

23

收录的工具列表 · 更新于 3 周前

参数类型必填说明
topicenum否要了解的具体设置主题。选项:getting_started(默认)、api_key、configuration、troubleshootinggetting_started | api_key | configuration | troubleshooting

详细介绍

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

重要

项目状态(2026 年 10 月):开源,由社区驱动。 plugged.in 托管服务正在迁移到一个独立开发的新平台。迁移完成后,此代码仓库将不再运行 plugged.in。代码仍会根据当前许可证保持开源,欢迎社区接手并继续维护:欢迎提交问题、拉取请求、分支和加入新的维护者,并继续支持自托管。切换日期将在此处公布。切换时,当前服务将迁移到 v1.plugged.in,并在那里持续运行至 2026 年 12 月 31 日。 此举意味着什么

此客户端会连接 plugged.in API。切换前,我们会发布一个将其指向 v1.plugged.in 的版本。2026 年 12 月 31 日之后,请将其指向你自己的 pluggedin-app 实例。

plugged.in 标志
AI 数据交换的交汇点

统一的 MCP Hub,为你的 AI 提供知识、记忆和工具,而不只是代理。通过单一连接管理和测试所有 MCP 服务,同时在各个客户端中支持具备文档感知和记忆增强能力的工作流。

版本 GitHub 星标 许可证 TypeScript MCP MCP 徽章

📋 概述

plugged.in MCP 代理服务是一个强大的中间件,可将多个模型上下文协议(MCP)服务聚合到一个统一的接口中。它从 plugged.in App 获取工具、提示词和资源配置,并智能地将请求路由到相应的底层 MCP 服务。

该代理可与任何 MCP 客户端(Claude、Cline、Cursor 等)无缝集成,并通过 plugged.in 生态系统提供高级管理功能。

Hub 支柱:知识 · 记忆 · 工具 · 代理

知识(RAG v2 / AI 文档交换)
通过统一且支持来源归属的文档检索,搜索并为模型输出提供依据。MCP 服务可以在你的知识库中创建和管理文档,并支持版本控制、可见性控制和模型归属信息。使用内置 RAG 搜索所有已连接的来源,并返回相关片段和元数据。

记忆(持久化 AI 记忆)
长期存在、限定于工作区/个人资料的记忆,可跨会话保留。Hub 与 plugged.in App 的持久化记忆集成,因此可以跨任务存储和回忆 Agent 的操作与洞见。路线图中计划推出内置记忆工具,基于相同的身份验证模型提供低门槛的 get/put/search 模式。

工具
整合内置功能与下游 MCP 服务(STDIO、SSE、Streamable HTTP)。工具发现结果会缓存,也可以按需刷新;Hub 层级的发现会为任何 MCP 客户端返回统一目录。Hub 支持工具、资源、资源模板和提示词。

代理
为每个客户端提供单一连接。以 STDIO(默认)或 Streamable HTTP 运行,并可选择启用 API 身份验证和无状态模式。兼容 Claude Desktop、Cline、Cursor、MCP Inspector 等;保留现有客户端配置,同时集中管理策略和遥测数据。

⭐ 如果你觉得这个项目有用,请考虑在 GitHub 上为它点亮星标! 这有助于我们触达更多开发者,也能激励我们持续改进。

✨ 主要功能

🚀 核心功能
  • 内置 AI Playground:无需配置客户端,即可使用 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 功能
    • 自动从注册表发现服务
    • 安装跟踪和指标
    • 支持社区服务
📦 v1.1.0 的功能
  • Streamable HTTP 支持:全面支持使用 Streamable HTTP 传输的下游 MCP 服务
  • HTTP 服务模式:将代理作为 HTTP 服务运行,并可配置端口
  • 灵活的身份验证:为 HTTP 端点提供可选的 Bearer 令牌身份验证
  • 会话管理:选择有状态(基于会话)或无状态运行模式
🎯 v1.0.0 的核心功能
  • 实时通知:通过全面的通知支持跟踪所有 MCP 活动
  • RAG 集成:支持通过 plugged.in App 执行文档增强查询
  • Inspector 脚本:用于调试和开发的自动化测试工具
  • 运行状况监控:内置 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 22.12+(engines.node 声明的最低版本;sanitize-html 需要此版本)
  • 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_KEYplugged.in App 的 API 密钥是-
PLUGGEDIN_API_BASE_URLplugged.in App 的基础 URL否https://plugged.in
MCP_ALLOWED_ORIGINSStreamable HTTP:允许调用 MCP 端点的浏览器来源列表,以逗号分隔(来自其他来源的请求将返回 403;不带 Origin 标头的请求不受影响)。* 表示允许任何来源否回环来源(http://localhost:*、http://127.0.0.1:*、http://[::1]:*)
MCP_ALLOWED_HOSTSStreamable HTTP:MCP 端点接受的额外 Host 名称(DNS 重绑定保护),例如本地反向代理的公开名称。在非回环 BIND_HOST 上,仅当设置此项时才会进行检查否回环名称
命令行参数

命令行参数的优先级高于环境变量:

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-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_KEY 和 YOUR_API_BASE_URL(如果未使用默认值 https://plugged.in)。

使用 MCP Inspector 测试

容器运行期间,你可以使用 MCP Inspector 连接到它:

npx @modelcontextprotocol/inspector docker://pluggedin-mcp-container

这将连接到正在运行的容器的标准输入/输出。

停止容器

在运行 docker run 的终端中按 Ctrl+C。--rm 标志可确保容器停止后自动移除。

自主 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 Proxy Server 充当 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 App 获取服务配置
  2. 智能发现(pluggedin_discover_tools):
    • 缓存检查:首先检查是否已有缓存数据(< 1 秒)
    • 即时响应:立即返回静态工具和缓存的动态工具
    • 后台刷新:对于 force_refresh=true,在显示当前工具的同时于后台运行发现
    • 全新发现:仅在不存在缓存数据时运行完整发现
  3. 能力列表:代理通过 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 获取并合并结果
  4. 能力解析:代理将能力解析到目标服务
    • tools/call:从工具名称中解析前缀,在内部映射中查找服务
    • resources/read:调用 /api/resolve/resource?uri=... 获取服务详情
    • prompts/get:检查自定义指令前缀,或调用 /api/resolve/prompt?name=...
  5. 请求路由:将请求路由到相应的底层 MCP 服务
  6. 响应处理:将底层服务的响应返回给客户端

🔒 安全功能

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(September 2025)- 安全增强
🔒 增强 HTML 净化
  • 行业标准净化:使用 sanitize-html 库替代自定义的基于正则表达式的 HTML 净化
  • 防止 XSS:全面防护跨站脚本攻击
  • HTML 属性安全:增强对 HTML 属性上下文(引号、与号)的净化
  • 格式字符串注入:修复日志记录中的格式字符串注入漏洞
  • 安全测试:为所有净化函数提供全面的测试覆盖
🛡️ 安全改进
  • CodeQL 合规性:修复 GitHub CodeQL 分析发现的所有安全漏洞
  • 输入验证:加强所有函数中的输入验证和净化
  • 依赖项更新:添加 sanitize-html,以便可靠地过滤 HTML 内容
  • 测试覆盖:增强安全测试套件,验证对 XSS 攻击的防护
Version 1.5.0(January 2025)- RAG v2
🤖 AI 文档交换
  • AI 生成文档:MCP 服务现在可以在你的文档库中创建文档,并完整标注 AI 来源
  • 模型来源跟踪:完整记录创建或更新每份文档的 AI 模型历史
  • 高级文档搜索:按 AI 模型、提供商、日期、标签和来源类型筛选
  • 文档版本管理:跟踪更改并维护 AI 生成内容的版本历史
  • 多来源支持:文档可来自上传、AI 生成或 API 集成
🔍 增强 RAG 能力
  • 语义搜索:通过 PostgreSQL 全文搜索提高相关性评分
  • 智能筛选:按可见性、模型来源标注和文档来源筛选结果
  • 摘要生成:自动提取摘要并突出显示关键词
  • 性能优化:通过优化索引加快查询速度
Version 1.2.0(January 2025)
🔒 安全增强
  • URL 验证:全面防范 SSRF,阻止私有 IP、localhost 和危险端口
  • 命令白名单:仅允许执行经批准的命令(node、npx、python 等)
  • 请求头清理:防范请求头注入攻击
  • 延迟身份验证:提升与 Smithery 的兼容性,无需身份验证即可发现工具
🚀 性能改进
  • 优化 Docker 构建:采用多阶段构建,最大限度缩小容器体积
  • 仅包含生产依赖:Docker 镜像中不包含测试文件和开发依赖
  • 资源效率:专为资源受限环境中的部署而设计
🔧 技术改进
  • 改进 Streamable HTTP 传输中的错误处理
  • 改善会话清理和内存管理
  • 改进 TypeScript 类型和代码组织
版本 1.1.0(2024 年 12 月)
🚀 新功能
  • Streamable HTTP 支持:使用现代 Streamable 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 安全解析环境变量
  • 错误信息清理:防止在错误响应中泄露信息
🐛 错误修复
  • 修复 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 文件。

🙏 致谢

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。