项目简介

此GitHub仓库包含多个基于 Model Context Protocol (MCP) 构建的独立服务器实现。每个服务器都专注于集成特定的第三方服务,例如美国天气局 (National Weather Service)、Notion、Slack 或 GitHub。它们通过 MCP 标准向 LLM 客户端暴露这些服务的功能,包括数据访问(资源)和操作执行(工具)。

主要功能点

该集合中的服务器提供以下关键功能:

  • 天气服务集成: 提供获取美国当前天气、多日预报、逐小时预报和天气警报等信息的能力。
  • Notion 集成: 允许 LLM 与 Notion 工作区互动,包括搜索页面和数据库、获取页面内容、操作块、管理评论以及查询/创建/更新数据库条目。
  • Slack 集成: 支持列出频道、发送消息(包括回复线程)、添加表情反应、获取频道历史和线程回复,以及列出用户和获取用户资料。
  • GitHub 集成: 提供与 GitHub 仓库交互的能力,例如搜索仓库、代码和用户,获取仓库详情、提交、分支和标签信息,创建/更新文件,管理 Issue (查看、创建、更新、评论),以及管理 Pull Request (查看、更新、合并、查看文件变更、获取状态)。

安装步骤

要安装并运行这些 MCP 服务器之一,请遵循以下基本步骤:

  1. 克隆仓库: 将 'https://github.com/smithery-ai/mcp-servers' 仓库克隆到您的本地或服务器环境。
  2. 安装依赖: 进入克隆下来的仓库目录,使用 npm 或 yarn 安装项目依赖:
    cd mcp-servers
    npm install
    # 或者 yarn install
  3. 构建项目: 项目使用 TypeScript,需要进行构建:
    npm run build
    # 或者 yarn build
    构建后的 JavaScript 文件将位于每个服务目录下的 'dist/' 目录中。
  4. 配置 API 密钥/凭证: 某些服务(如 Notion, GitHub, Slack)需要 API 密钥或访问令牌。您需要在启动相应的服务器进程时,通过环境变量或其他方式提供这些凭证。具体的环境变量名称通常可以在每个服务模块的源代码中找到(例如,Notion 的 'NOTION_API_KEY', GitHub 的 'GITHUB_PERSONAL_ACCESS_TOKEN', Slack 的 'SLACK_BOT_TOKEN', 'SLACK_SIGNING_SECRET', 'SLACK_APP_TOKEN')。请参考相应服务的文档获取凭证。
  5. 选择并运行服务器: 进入您想要运行的服务目录(例如 'cd national-weather-service' 或 'cd notion'),然后运行构建后的文件。通常,您会使用 Node.js 运行 'dist/index.js' 文件,并在启动时设置必要的环境变量。
    • 示例 (Weather): 'cd national-weather-service && node dist/index.js'
    • 示例 (Notion): 'cd notion && NOTION_API_KEY=your_key node dist/index.js'
    • 示例 (GitHub): 'cd github && GITHUB_PERSONAL_ACCESS_TOKEN=your_token node dist/index.js'
    • 示例 (Slack - Socket Mode): 'cd slack && SLACK_BOT_TOKEN=your_bot_token SLACK_SIGNING_SECRET=your_signing_secret SLACK_APP_TOKEN=your_app_token node dist/index.js'

MCP 客户端配置

MCP 服务器是为 MCP 客户端(如支持 MCP 的 LLM 应用)提供服务的。MCP 客户端需要配置如何连接到您启动的服务器进程。以下是 MCP 客户端配置通常包含的信息的描述(这不是实际的 JSON 代码,而是描述了 JSON 结构中的关键部分):

  • '"server name"': 一个字符串,用于标识该 MCP 服务器。例如:"United States Weather MCP Server" 或 "Notion"。这个名称在服务器代码中定义。
  • '"launch"': 一个对象,指示客户端如何启动服务器进程。
    • '"command"': 启动服务器的可执行文件路径,通常是 '"node"'。
    • '"args"': 一个字符串数组,包含传递给启动命令的参数。第一个参数通常是您构建后的服务器主文件路径(例如,'/path/to/your/cloned/repo/national-weather-service/dist/index.js')。
    • 重要提示: 像 API 密钥这样的敏感配置信息不应该放在这里的客户端配置中。它们应该作为环境变量,在启动服务器进程时由您的系统或启动脚本提供给服务器进程本身(如安装步骤 4 中所述)。
  • '"capabilities"': 一个可选对象,描述服务器提供的能力(工具和资源)。客户端通常会在连接后自动发现这些能力,但配置中可以包含这些信息以供参考或验证。
    • '"tools"': 一个字符串数组,列出服务器提供的工具名称(例如,'"get_current_weather"', '"search"', '"slack_post_message"', '"get_issue"' 等)。
    • '"resources"': 一个字符串数组,列出服务器提供的资源模板 URI(例如,'"events://{eventName}"', '"repo://{owner}/{repo}/contents/{...path}"')。

请根据您启动的特定服务器(天气、Notion、Slack 或 GitHub)填写相应的服务器名称和文件路径到您的 MCP 客户端配置中。

基本使用方法

一旦 MCP 服务器启动并被您的 MCP 客户端成功连接,LLM 就可以通过调用服务器暴露的工具(Tools)来执行操作或获取特定数据,并通过访问资源(Resources)来读取数据流或静态信息。例如,LLM 可能会通过调用名为 'get_current_weather' 的工具并提供 'location' 参数来获取天气信息;或者访问 'events://message' 资源来接收 Slack 消息事件。具体可用的工具和资源及其参数/URI 格式,请参考服务器的能力声明(客户端连接后可获取)或查看相应的源代码文件。

信息

分类

开发者工具