返回市场
MCP服务器用于MAS开发

MCP服务器用于MAS开发

作者:Fujitsu-AI5 星标更新:2025-11-02

项目介绍

privateGPT MCP Server

目录

privateGPT MCP Server

这是一个模型上下文协议(MCP)服务器实现,允许您将privateGPT作为首选MCP客户端的代理。这使得privateGPT的强大功能可以无缝地集成到任何MCP兼容的应用程序中。

什么是MCP?

MCP是一个开放协议,标准化了应用程序向LLMs提供上下文的方式。可以将MCP想象成AI应用中的USB-C端口。就像USB-C提供了一种标准化的方法来连接设备到各种外围设备和配件一样,MCP提供了一种标准化的方法来连接AI模型到不同的数据源和工具。

为什么是MCP?

MCP帮助您在LLMs之上构建代理和复杂的工作流程。LLMs经常需要与数据和工具进行集成,而MCP提供了:

  • 一个不断增长的预构建集成列表,您的LLM可以直接插入
  • 在不同LLM提供商和供应商之间切换的灵活性
  • 在您的基础设施内保护数据的最佳实践

如何工作

在核心层面,MCP遵循客户端-服务器架构,主机应用程序可以连接到多个服务器:

MCP总体架构

  • MCP主机:想要通过MCP访问数据的应用程序,如Claude桌面、IDE或AI工具
  • MCP客户端:维护与服务器一对一连接的协议客户端
  • MCP服务器:每个都通过标准化的模型上下文协议暴露特定能力的轻量级程序
  • 本地数据源:MCP服务器可以安全访问的计算机文件、数据库和服务
  • 远程服务:可以通过互联网访问的外部系统(例如,通过API),MCP服务器可以连接到这些系统

概述

此服务器充当MCP客户端和privateGPT API之间的桥梁,使您可以:

  • 使用公共和私有知识库与privateGPT聊天
  • 创建和管理知识来源
  • 将来源组织成组
  • 通过基于组的权限控制访问

为什么是代理

大型语言模型(LLMs)和MCP服务器中,代理是一种专门的软件组件,作为语言模型和应用程序之间的中介。它处理诸如请求处理、通过MCP与LLM交互、管理工作流、确保整个系统内的安全性和效率等任务。通过利用代理,复杂的AI应用程序可以设计得更有效、更安全且可扩展。 本仓库中的代理代码可用于将其集成到自己的解决方案/应用程序中。

代理、LLMs和MCP服务器之间的交互

这些组件之间的交互使开发强大、可扩展且安全的AI应用程序成为可能。以下是简化的情景,说明这种交互:

  1. 用户输入:用户通过托管在MCP服务器上的用户界面发送请求。
  2. 代理处理:MCP服务器上的代理接收请求,对其进行验证并准备发送给LLM。
  3. LLM交互:代理将请求转发给LLM,LLM生成响应。
  4. 响应处理:代理从LLM接收响应,如果需要进一步处理(例如,格式化、与其他数据源集成),然后将响应返回给用户。
  5. 安全性和日志记录:在此过程中,代理监控交互,确保遵守安全策略,并记录相关信息以供后续分析。

在此上下文中使用代理的优势

  • 模块化:代理允许职责的清晰分离,使系统更容易维护和扩展。
  • 安全性:集中管理访问和活动监控有助于最小化安全风险。
  • 效率:自动化代理可以比手动过程更快、更一致地执行任务。
  • 灵活性:代理可以轻松适应或扩展以支持新功能或业务需求的变化。

加密密码的重要性

在处理敏感数据的任何应用程序中,安全性至关重要。此服务器管理两组关键凭证:

  1. 代理头:用于HAProxy等认证和管理流量。
  2. LLM访问密码:用于保护对大型语言模型的访问。

以明文形式存储这些密码会带来重大安全风险,包括未经授权的访问和潜在的数据泄露。 为了缓解这些风险,必须加密这些密码,并仅在系统中处理其密文。

仅使用密文的好处

  • 增强的安全性:即使攻击者获得了配置文件或环境变量的访问权限,没有相应解密密钥的加密密码仍然是不可读的。
  • 合规性:加密有助于遵守规定保护敏感信息的安全标准和法规。
  • 完整性:确保密码不会被篡改,维持身份验证机制的完整性。

安全性

以下安全功能已实施,以确保数据保护和客户端应用程序与服务器之间的安全通信。这些功能涵盖加密、解密、密钥管理和传输安全。


1. 传输层安全(TLS)

  • 为了确保客户端和服务器之间的通信安全,可以启用TLS。客户端和服务器之间传输的所有数据均使用TLS(最低版本1.2)加密。

为什么应该在客户端和服务器之间启用TLS?

a. 通信加密

  • TLS(传输层安全)确保客户端和服务器之间传输的所有数据都是加密的。这保护了敏感信息,如密码、信用卡详情和个人数据免受窃听攻击(中间人攻击)。

b. 数据完整性

  • TLS保证传输的数据保持不变且未被篡改。完整性检查确保接收到的数据与发送时完全相同。

c. 认证

  • TLS通过数字证书实现服务器(以及可选的客户端)的安全认证。这防止用户因假网站的网络钓鱼攻击而受害。

d. 防范中间人攻击

  • TLS加密连接,几乎不可能让攻击者拦截或操纵流量。如果没有TLS,攻击者可以捕获和修改数据包。

e. 符合安全标准和法规

  • 许多监管要求(例如GDPR、PCI-DSS)规定了安全数据传输的要求。TLS是这些安全要求的基本组成部分。

f. 防止降级和重放攻击

  • TLS保护攻击者尝试将连接降级到不安全版本(降级攻击)或重放先前有效的请求(重放攻击)。

结论

在客户端和服务器之间启用TLS对于确保数据隐私、安全性和通信完整性至关重要。它不仅保护敏感信息,还帮助满足合规要求并增加用户信任。


2. 密码加密

密码可以使用RSA(Rivest–Shamir–Adleman)公钥加密。这确保了敏感数据,如用户密码,永远不会以明文形式传输。

方法

  • 公钥加密,密钥长度为2048位
  • 填充RSA_PKCS1_PADDING以增强安全性并防止已知的填充攻击。

过程

  1. 服务器管理员使用服务器的公钥(id_rsa_public.pem)加密客户端的密码,执行node security/generate_encrypted_password.js ~/.ssh/id_rsa_public.pem并分发加密密码给客户端。
  2. 或者:客户端使用服务器的公钥(id_rsa_public.pem)加密密码,使用keygen函数。因此,该函数必须在服务器配置中启用(privateGPT.env.json)。重要的是:使用此功能也意味着通过网络传输数据。因此,请确保数据流量是安全的并且无法被拦截。
  3. 最后,加密密码被发送到服务器,在那里使用服务器的私钥进行解密。

优点

  • 非对称加密确保只有服务器可以解密密码。
  • 即使通信通道被破坏,加密数据仍然安全。

3. 密钥管理

为了确保数据通信和加密过程的安全,遵循以下密钥管理原则:

公钥

  • 存储在服务器上(id_rsa.pub)。
  • 仅用于加密,如果公开则不会构成安全风险。

PEM密钥

  • 存储在服务器上(id_rsa_public.pem)。
  • 必须使用公证书创建(参见:服务器配置)。

私钥

  • 存储在服务器上(id_rsa)。
  • 使用适当的文件权限(chmod 600)限制访问。
  • 仅用于解密操作。

密钥轮换

  • 密钥可以定期轮换或在检测到安全事件时轮换。重要的是:如果这些密钥重新发行,客户端或AI代理将立即失去对MCP服务器的访问,并需要新的RSA密钥(加密密码)!
  • 旧密钥被安全地失效。

4. 服务器上的解密

解密仅在服务器上使用私钥进行:

过程

  1. 服务器从客户端接收加密密码。
  2. 私钥解密密码以获取原始明文。
  3. 解密后的密码在内部使用(例如,身份验证),并且永远不会以明文形式存储。

安全处理

  • 解密后的密码仅在处理期间存在于内存中。
  • 安全的内存管理实践确保敏感数据在使用后立即清除。

证书验证

  • 证书在双方进行验证,以确保服务器和客户端的真实性。
  • 可选地,可以启用双向TLS以增强安全性。

5. 授权令牌

令牌用于认证请求,确保只有授权用户才能访问系统:

令牌管理

  • 成功登录后生成令牌。
  • 令牌有效期短,并在预定义时间后自动过期。
  • 令牌使用HMAC或RSA签名,使其防篡改。

6. 限制密钥生成(Keygen)

为了防止滥用系统,限制密钥生成(keygen):

配置

  • 服务器有一个配置选项(ALLOW_KEYGEN)来启用或禁用密钥生成。
  • 当禁用时调用密钥生成函数会导致错误消息。

审计日志

  • 所有密钥生成操作都会记录下来,用于审计和监控目的。

7. 基于证书的访问控制(CBAC)

  • 当激活证书认证并且代理使用密钥登录到服务器时,它会自动锁定到该服务器。如果它想登录到另一个MCP privateGPT服务器,登录尝试将被拒绝,因为密钥会被检查是否与服务器的私有证书匹配。

功能

  • 函数如keygenstore_useredit_source仅对授权角色可用。
  • 对未经授权的访问尝试会拒绝并提供详细的错误消息。

配置

  • 可以在服务器配置(Functions对象)中指定启用或禁用的功能。

8. 安全配置

服务器配置包含几个与安全相关的选项:

SSL_VALIDATE

  • 验证SSL/TLS证书以确保安全通信。
  • 根据环境要求(例如测试与生产)启用或禁用。

PW_ENCRYPTION

  • 启用或禁用密码加密。
  • 确保在无法进行加密的环境中兼容。

9. 日志记录和监控

所有与安全相关事件都被记录下来,用于监控和故障排除:

记录的事件

  • 登录失败尝试。
  • 密钥生成请求。
  • 未经授权的访问尝试。
  • 加密和解密错误。

总结

已实施的安全功能确保:

  • 通过加密和安全传输确保敏感数据的机密性
  • 使用强大的密钥管理和令牌验证确保操作的完整性
  • 基于角色和可配置的访问控制系统功能。
  • 全面的监控,以便主动检测和应对安全威胁。

这些措施共同提供了一个安全的客户端-服务器通信和数据处理环境。


privateGPT服务器功能概述

privateGPT服务器提供了一系列强大的功能,旨在提供高效、灵活且安全的Model Context Protocol (MCP)通信。以下是服务器的关键特性和功能概述。


关键功能

1. 身份验证和授权

  • 登录功能:使用电子邮件和密码进行用户身份验证,生成访问令牌。
  • 注销功能:安全地使用户令牌无效,结束会话。

2. 聊天管理

  • 开始聊天:使用公共知识库或特定组上下文与服务器发起对话。
  • 继续聊天:通过提供聊天ID和后续消息来恢复正在进行的对话。
  • 检索聊天信息:通过ID获取特定聊天的元数据和消息。
  • 删除所有聊天:删除执行用户的先前聊天历史(聊天历史)。
  • 删除聊天:删除执行用户的当前聊天。

3. 组管理

  • 列出组:查看用户可用的个人和可分配组。
  • 创建组:添加具有名称和描述的新组,用于组织目的。
  • 删除组:移除现有组(如果在配置中启用)。

4. 源管理

  • 创建源:添加具有内容的新源,并将其分配给特定组。
  • 编辑源:更新现有