使用说明

项目简介

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,展示了基于标准输入输出的传输方式。

安装步骤

  1. 安装 Docker: 根据您的操作系统安装 Docker
  2. 安装 aqua: 根据官方文档安装 aqua
  3. 安装 mise: 根据官方文档安装 mise
  4. 克隆仓库: 'git clone https://github.com/yukiyamamuro/mcp_playground'
  5. 进入仓库目录: 'cd mcp_playground'
  6. 安装依赖: 'aqua i'
  7. 信任环境: '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。

基本使用方法

  1. 启动服务器: 在仓库根目录下,运行 'docker compose up' 命令启动所有示例 MCP 服务器 (Fetcher, Filesystem, Notion, Slack)。这将会在 Docker 容器中启动这些服务器。

  2. 配置 MCP 客户端: 在您的 MCP 客户端应用中,根据上述提供的服务器配置信息,配置要连接的 MCP 服务器。例如,如果您想使用 Filesystem MCP Server,则需要配置其对应的 'serverName', 'command', 'args' 以及允许访问的目录。

  3. 与服务器交互: 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 的最佳实践。

信息

分类

开发者工具