MCP示例服务集
项目简介
本项目 'mcp_tutorial' 是一组示例 MCP 服务器的集合,旨在帮助开发者理解和实践如何使用 Model Context Protocol 构建应用后端服务。它通过微服务架构展示了多种实用工具的集成,例如文件系统访问、天气查询、播客生成和 Gmail 操作。每个服务都作为一个独立的 MCP 服务器实现, демонстрируя MCP 协议在不同应用场景下的灵活性和可扩展性。
主要功能点
- 文件系统服务 (filesystem): 提供安全的文件系统访问能力,支持读取、写入、编辑文件、创建目录、文件搜索等操作,并限制在预设的允许目录内,保障安全性。
- 天气服务 (weather): 提供简单的城市天气查询工具,返回JSON格式的天气信息(示例数据)。
- 播客生成服务 (podcast): 集成 Coze API,根据用户提供的 prompt 生成播客链接。
- Gmail 服务 (gmail): 集成 Gmail API,支持发送邮件功能,并处理 OAuth 2.0 认证流程。
安装步骤
-
克隆仓库:
git clone https://github.com/fak111/mcp_tutorial.git cd mcp_tutorial -
安装依赖: 分别进入 'mcp-server' 目录和 'mcp-client' 目录,安装各自的依赖。
cd mcp-server npm install cd ../mcp-client npm install -
配置环境变量: 部分服务需要环境变量配置,例如 Gmail 服务需要 Google API 密钥。
- 在 'mcp-server/gmail' 目录下创建 '.env' 文件,并配置 'GOOGLE_CLIENT_ID' 和 'GOOGLE_CLIENT_SECRET'。
- 请参考 'mcp-server/gmail/README.md' (或 'README_en.md') 配置 Gmail API 凭据。
服务器配置
以下是 MCP 客户端连接到不同示例服务器时需要配置的服务器启动命令 (command) 及其参数 (args)。客户端需要根据实际使用的服务器选择相应的配置。
-
文件系统服务 (filesystem):
{ "serverName": "filesystem", "command": "node", "args": ["./mcp-server/filesystem/index.js", "<allowed-directory>", "<additional-directories...>"], "args_comment": [ "<allowed-directory>: 允许文件系统服务访问的根目录,请替换为实际的目录路径", "<additional-directories...>: 额外的允许访问的目录,可以添加多个" ] }注意: '<allowed-directory>' 和 '<additional-directories...>' 需要替换为实际允许文件系统服务访问的目录路径。例如,允许访问用户 home 目录下的 'Documents' 文件夹,可以配置为 '["./mcp-server/filesystem/index.js", "~/Documents"]'。
-
天气服务 (weather):
{ "serverName": "weather", "command": "node", "args": ["./mcp-server/weather/src/index.js"] } -
播客生成服务 (podcast):
{ "serverName": "podcast", "command": "node", "args": ["./mcp-server/podcast/src/index.js"] } -
Gmail 服务 (gmail):
{ "serverName": "gmail", "command": "node", "args": ["./mcp-server/gmail/src/index.js"] }注意: 首次运行 Gmail 服务时,需要完成 OAuth 2.0 认证。请根据终端输出的提示,访问提供的 URL 完成 Google 账号授权。
基本使用方法
-
启动服务器: 进入 'mcp-server' 目录,根据需要启动相应的服务。例如,启动文件系统服务:
cd mcp-server node filesystem/index.js ~/Documents # 允许访问用户 Documents 目录或启动天气服务:
cd mcp-server node weather/src/index.js -
运行客户端: 进入 'mcp-client' 目录,根据需要运行不同的客户端脚本。
- 'client_no_api.py': 基础命令行客户端,不依赖 LLM API。
- 'client.py': 集成 Anthropic Claude 的客户端,可以使用自然语言查询并调用工具。
- 'client_no_api_file.py': 使用 Docker 运行文件系统服务的客户端示例。
例如,使用 'client_no_api.py' 连接到文件系统服务:
cd mcp-client python client_no_api.py ../mcp-server/filesystem/index.js ~/Documents在客户端命令行中,可以使用 'tools' 命令列出可用工具,使用 'exec <tool> <args>' 命令执行工具。 例如,执行 'list_directory' 工具查看允许目录下的文件列表:
exec list_directory {"path": "."}
注意: 请根据 'mcp-client' 目录下的 'README.md' (或 'README_en.md') 了解更详细的客户端使用方法和示例。
信息
分类
网页与API