wet-mcp
项目简介
wet-mcp 是一个完整的 MCP 服务器实现,构建在 Python 上,提供资源、工具和提示模板的托管、执行能力以及对 LLM 客户端的上下文服务。服务器通过 JSON-RPC 与客户端通信,支持多种传输方式,并自带会话与能力声明等管理功能,旨在为 LLM 应用提供安全、可扩展的上下文服务。
主要功能点
- 资源(Resources)托管与数据访问:集中管理可被 LLM 上下文使用的文档、网页、图片等资源。
- 工具(Tools)注册与执行:定义可由 LLM 调用的外部功能接口,支持执行与结果返回。
- Prompt 模板(Prompts)定义与渲染:提供可定制的提示模板,用于引导 LLM 的交互。
- 会话与能力声明:在服务端维护会话状态、能力描述,确保客户端了解当前服务能力。
- JSON-RPC 交互:服务端接收标准化的 JSON-RPC 请求并返回 JSON-RPC 响应或通知。
- 多传输协议支持:包括标准输入输出(stdio)、Server-Sent Events(SSE)和 WebSocket 等,方便集成在不同部署场景中。
- 缓存与文档库:内置缓存、文档数据库支持(DocsDB)与检索能力,提升性能与可扩展性。
- 安全性考虑:集成安全检测、URL 访问控制、路径与文件访问的保护,保障对资源的受控访问。
安装与运行
- 运行环境:Python 3.13,推荐使用 uvx/pipx 等工具进行管理与隔离。
- 典型运行方式(示例性描述,具体命令以实际环境为准):
- 使用 uvx 安装并启动:选择对应 Python 版本并指定 wet-mcp 包版本
- 也可通过 Docker 方式部署,容器内会自动拉取并启动 MCP 服务器
- 初次运行时,服务器会自动下载并启动所需组件(如嵌入式搜索引擎、嵌入模型等),可通过环境变量开启/配置 LiteLLM、Embedding、Reranker 等后端。
服务器配置(供 MCP 客户端使用的最小信息)
注:以下为 MCP 客户端的启动/连接配置信息示例,客户端本身不需要实现,只需知道如何启动与连接到 MCP 服务器。
{ "server": "wet", "command": "uvx", "args": ["--python", "3.13", "wet-mcp@latest"], "env": { "API_KEYS": "GOOGLE_API_KEY:AIza...,OPENAI_API_KEY:sk-...", "GITHUB_TOKEN": "ghp_...", "SYNC_ENABLED": "true", "SYNC_REMOTE": "gdrive", "SYNC_INTERVAL": "300", "RCLONE_CONFIG_GDRIVE_TYPE": "drive", "RCLONE_CONFIG_GDRIVE_TOKEN": "<base64-encoded-token>" } }
说明与注释(字段用途):
- server: MCP 服务器的名称,客户端通过该名称识别并建立连接。
- command: 启动 MCP 服务器所用的主命令。
- args: 启动命令的参数,通常包括指定 Python 版本、包版本等信息。
- env: 启动时传入的环境变量,用于开启 Embedding、Reranker、云服务密钥等可选功能,具体根据实际运行时需要进行配置,某些字段为可选。
基本使用方法
- 启动与连接:在 MCP 客户端配置中指定服务器名称、启动命令和参数,客户端通过 JSON-RPC 向服务器发送请求以读取资源、调用工具、获取提示模板等功能。
- 调用示例(概念性描述,具体 JSON-RPC 请求格式请参考 MCP 标准文档):
- 读取资源:请求中包含资源标识符,服务器返回资源内容及元数据。
- 调用工具:指定工具名称及参数,服务器将执行并返回结果。
- 获取 Prompt:请求获取特定 Prompt 模板及渲染后的文本。
- 会话管理与安全:服务器端维护会话信息、能力声明及访问控制,确保交互的安全性与可追踪性。
- 部署场景:可在本地开发、单用户/多用户部署、或在容器化环境中运行,服务器对外暴露的接口遵循 JSON-RPC 标准,客户端通过推送和接收通知实现交互。
如需进一步的部署细节、配置范例和 API 说明,请参考仓库中的 README、示例配置和测试用例。