使用说明
项目简介
mcp-playground 是一个基于 Model Context Protocol (MCP) 的服务器示例仓库,它使用 bun 运行时环境构建,展示了如何创建不同类型的 MCP 服务器,包括:
- Fetcher MCP Server: 提供从指定URL获取HTML内容的功能。
- Secure Filesystem MCP Server: 提供安全的文件系统访问能力,允许在限定目录内进行文件读写、目录操作等。
- Notion MCP Server: 集成 Notion API,提供操作 Notion 页面、数据库和块的功能。
- Slack MCP Server: 集成 Slack API,提供发送消息、获取频道信息、用户资料等功能。
主要功能点
- 资源管理 (Resources): 虽然示例中没有显式资源定义,但文件系统服务器可以看作是对本地文件资源的托管和访问示例。
- 工具注册和执行 (Tools): 每个服务器都注册了一系列工具,例如 'fetcher_get_html' (Fetcher), 'read_file' (Filesystem), 'notion_create_database' (Notion), 'slack_post_message' (Slack) 等,这些工具可以通过 MCP 协议被 LLM 客户端调用。
- Prompt 模板 (Prompts): 仓库中没有直接提供 Prompt 模板,但服务器提供的工具可以方便地与 Prompt 模板结合使用,以实现更复杂的 LLM 交互逻辑。
- JSON-RPC 通信: 服务器使用 '@modelcontextprotocol/sdk' 库构建,默认支持 JSON-RPC 协议,并通过 Stdio (标准输入输出) 进行通信。
- 会话管理和能力声明: 服务器在初始化时声明了自身的名字、版本和 capabilities (tools),支持 MCP 客户端进行能力发现。
- 传输协议: 示例使用 StdioServerTransport,展示了基于标准输入输出的传输方式。
安装步骤
- 安装 Docker: 根据您的操作系统安装 Docker。
- 安装 aqua: 根据官方文档安装 aqua。
- 安装 mise: 根据官方文档安装 mise。
- 克隆仓库: 'git clone https://github.com/yukiyamamuro/mcp_playground'
- 进入仓库目录: 'cd mcp_playground'
- 安装依赖: 'aqua i'
- 信任环境: 'mise trust'
服务器配置
以下是 MCP 客户端连接到各个服务器所需的配置信息示例 (JSON 格式)。客户端需要配置服务器的启动命令 (command) 和参数 (args) 以建立连接。
1. Fetcher MCP Server 配置
{ "serverName": "FetcherServer", "command": "bun", "args": [ "apps/fetcher/server.ts" ], "description": "Fetcher MCP Server,用于获取指定URL的HTML内容" }
2. Filesystem MCP Server 配置
{ "serverName": "FilesystemServer", "command": "bun", "args": [ "apps/filesystem/server.ts", "/path/to/allowed/directory" ], "description": "Secure Filesystem MCP Server,提供安全的文件系统访问能力,'/path/to/allowed/directory' 需要替换为允许访问的目录" }
参数说明:
- '/path/to/allowed/directory': 必填,需要替换为实际允许 MCP 服务器访问的根目录。可以指定多个允许访问的目录,作为额外的参数添加到 'args' 数组中。
3. Notion MCP Server 配置
{ "serverName": "NotionServer", "command": "bun", "args": [ "apps/notion/server.ts" ], "environmentVariables": { "NOTION_API_TOKEN": "YOUR_NOTION_API_TOKEN" }, "description": "Notion MCP Server,集成 Notion API,需要配置 NOTION_API_TOKEN 环境变量" }
环境变量说明:
- 'NOTION_API_TOKEN': 必填,需要替换为您的 Notion API 访问令牌。
4. Slack MCP Server 配置
{ "serverName": "SlackServer", "command": "bun", "args": [ "apps/slack/server.ts" ], "environmentVariables": { "SLACK_BOT_TOKEN": "YOUR_SLACK_BOT_TOKEN", "SLACK_TEAM_ID": "YOUR_SLACK_TEAM_ID" }, "description": "Slack MCP Server,集成 Slack API,需要配置 SLACK_BOT_TOKEN 和 SLACK_TEAM_ID 环境变量" }
环境变量说明:
- 'SLACK_BOT_TOKEN': 必填,需要替换为您的 Slack Bot Token。
- 'SLACK_TEAM_ID': 必填,需要替换为您的 Slack Team ID。
基本使用方法
-
启动服务器: 在仓库根目录下,运行 'docker compose up' 命令启动所有示例 MCP 服务器 (Fetcher, Filesystem, Notion, Slack)。这将会在 Docker 容器中启动这些服务器。
-
配置 MCP 客户端: 在您的 MCP 客户端应用中,根据上述提供的服务器配置信息,配置要连接的 MCP 服务器。例如,如果您想使用 Filesystem MCP Server,则需要配置其对应的 'serverName', 'command', 'args' 以及允许访问的目录。
-
与服务器交互: MCP 客户端启动后,将自动与配置的 MCP 服务器建立连接。您可以使用客户端提供的 API (例如 'client.callTool()') 调用服务器提供的工具,例如调用 'fetcher_get_html' 工具获取网页内容,或调用 'read_file' 工具读取文件内容等。
注意:
- 启动 Filesystem MCP Server 前,请务必仔细配置允许访问的目录,以确保安全性。
- 启动 Notion 和 Slack MCP Server 前,请配置正确的 API 访问令牌和 Team ID 环境变量。
- 本仓库提供的 'docker compose up' 命令仅为快速启动示例服务器,生产环境部署请参考 MCP 协议和 SDK 的最佳实践。
信息
分类
开发者工具