项目简介
easy-mcp 是一个集合了多种模型上下文协议(MCP)服务的项目,旨在通过 Docker 和 'uvx' 工具简化这些服务的部署过程。它为支持 MCP 的大型语言模型(LLM)客户端(如 Claude Desktop)提供丰富的功能和上下文信息,包括访问文件系统、执行搜索、与代码仓库交互、操作数据库等。
主要功能点
该服务集合包含多种独立的 MCP 服务,每种服务提供特定的功能:
- 文件系统 (Filesystem): 提供安全的文件和目录访问、读写、编辑、移动、搜索和查看文件信息的能力。
- 网页搜索 (Brave Search): 利用 Brave Search API 进行网页和本地商业搜索。
- 内存知识图谱 (Memory): 管理一个基于实体、关系和观察的内存知识图谱。
- 综合示例 (Everything): 一个全面的 MCP 示例服务,展示了资源、Prompt、工具、日志、进度通知、采样和Completion等多种 MCP 功能。
- 时间/时区 (Time): 查询当前时间并在不同时区之间转换时间。
- 内容抓取 (Fetch): 从指定的 URL 获取网页内容,支持HTML转Markdown。
- Sentry: API (Sentry): 集成 Sentry 平台,用于检索和分析问题信息。
- Google Drive: API (Gdrive): 访问和搜索 Google Drive 中的文件。
- PostgreSQL: API (Postgres): 连接 PostgreSQL 数据库并执行只读查询。
- Git: 本地仓库操作 (Git): 提供对本地 Git 仓库进行状态查询、提交、分支管理等操作的工具。
- Slack: API (Slack): 与 Slack 工作区交互,包括列出频道、发送消息、回复线程、添加反应等。
- GitHub: API (GitHub): 集成 GitHub 平台,提供仓库、文件、Issue、Pull Request、Commit 等多种操作和搜索能力。
- AWS Knowledge Base: API (AWS KB Retrieval Server): 从 AWS Bedrock 知识库执行检索操作。
- Puppeteer: 网页自动化 (Puppeteer): 提供基于 Puppeteer 的网页导航、截图、点击、填充表单、执行脚本等能力。
- Redis: API (Redis): 连接 Redis 实例,提供键值对的设置、获取、删除和列表操作。
- Sequential Thinking (Sequential Thinking): 提供一个工具用于辅助LLM进行结构化的多步思考过程。
安装步骤
- 安装前置条件: 确保您已安装 Docker Desktop、Git 以及 'uvx'(Time/Fetch 服务需要)。
- 克隆仓库:
git clone https://github.com/s123104/easy-mcp.git cd easy-mcp - 配置环境: 复制 '.env.example' 为 '.env' 文件,并根据需要编辑 '.env' 文件,填写 Brave Search、Slack、GitHub、GitLab、Google Maps、EverArt、AWS 等服务的 API 密钥或配置信息。某些服务(如 Filesystem)需要在启动时通过命令行参数指定允许访问的目录。
- 启动服务: 运行仓库根目录下的启动脚本。
- macOS/Linux: 'chmod +x start.sh && ./start.sh'
- Windows: 'start.bat' 这会启动 Docker Compose 定义的服务,并提示如何启动本地 'uvx' 服务。
服务器配置 (针对 MCP 客户端)
MCP 客户端需要知道如何连接到这些 MCP 服务器。'easy-mcp' 中的服务通过两种主要方式启动:
-
通过 Docker Compose 启动的服务: 大部分服务(Filesystem, Brave Search, Puppeteer, Memory, Everything, Sentry, Google Maps, Gitlab, Github, AWS KB Retrieval Server, Puppeteer, Redis)通过 Docker 容器运行,并通过网络端口暴露。您的 MCP 客户端需要配置这些服务的网络地址(通常是 'tcp://localhost:端口号')。具体的端口号可以在 'docker-compose.yml' 文件中查找。
- 示例配置 (JSON 格式,非代码): 您的客户端配置文件(例如 'claude_desktop_config.json')中,每个服务通常会有一个条目,包含 'server name' 和 'url' 或其他连接信息。
// 示例 (请根据实际端口号配置) { "server name": "mcp-filesystem", "url": "tcp://localhost:端口号" }, { "server name": "example-servers/brave-search", "url": "tcp://localhost:端口号" }, // ... 其他 Docker 服务 ... - 注意: 请查阅 'docker-compose.yml' 文件以获取每个服务的准确端口配置。某些服务可能需要额外的参数或认证。
- 示例配置 (JSON 格式,非代码): 您的客户端配置文件(例如 'claude_desktop_config.json')中,每个服务通常会有一个条目,包含 'server name' 和 'url' 或其他连接信息。
-
通过客户端命令启动的服务: 'uvx' 相关的服务(Time, Fetch)以及部分 Node.js 服务被设计为由客户端按需启动,使用标准输入输出 (Stdio) 进行通信。您的 MCP 客户端需要配置运行这些服务所需的命令和参数。
- 示例配置 (JSON 格式,非代码):
// 示例 (请根据实际安装路径和环境配置命令) { "server name": "mcp-time", "command": "/path/to/uvx", // uvx的可执行路径 "args": ["run", "-m", "mcp_server_time.server"] }, { "server name": "mcp-fetch", "command": "/path/to/uvx", // uvx的可执行路径 "args": ["run", "-m", "mcp_server_fetch.server"] }, // ... 其他命令启动的服务 ... { "server name": "secure-filesystem-server", // 例如本地文件系统服务,如果不用Docker "command": "/path/to/node", // node的可执行路径 "args": ["./mcp_services/src/filesystem/index.js", "/path/to/allowed/dir1", "/path/to/allowed/dir2"] // 需要指定允许访问的目录 } - 注意: 'command' 和 'args' 需要指向您系统中实际的 'uvx' 或 'node' 可执行文件路径以及服务的入口脚本或模块。
- 示例配置 (JSON 格式,非代码):
基本使用方法
在成功启动 MCP 服务并正确配置您的 LLM 客户端后,客户端通常会自动检测可用的 MCP 服务。您可以通过客户端的用户界面访问这些服务的工具、资源和 Prompt。例如,在 Claude Desktop 中,这些功能通常集成在聊天界面中。
信息
分类
开发者工具