项目简介

search-fetch-server-mcp 是一个使用 TypeScript 开发的 Model Context Protocol (MCP) 服务器示例,旨在演示 MCP 协议的核心概念。它实现了一个简单的笔记系统,并集成了网页抓取和 DuckDuckGo 搜索工具,可以通过 Claude Desktop 等 MCP 客户端进行连接和使用。

主要功能点

  • 资源 (Resources):
    • 以 'note://' URI 格式管理和访问文本笔记。
    • 每个笔记包含标题、内容和元数据。
    • 提供纯文本 MIME 类型访问笔记内容。
  • 工具 (Tools):
    • 'create_note': 创建新的文本笔记,需要提供标题和内容。
    • 'fetch_url': 抓取指定 URL 的网页内容,并可选择使用 Puppeteer 转换为 Markdown 格式。
    • 'duckduckgo_search': 使用 DuckDuckGo 搜索引擎进行搜索,返回 JSON 格式的搜索结果。
  • Prompt 模板 (Prompts):
    • 'summarize_notes': 生成所有笔记的摘要 Prompt,用于指导 LLM 总结笔记内容。

安装步骤

  1. 安装依赖: 确保已安装 Node.js 和 npm,然后在仓库根目录下运行以下命令安装项目依赖:

    npm install
  2. 构建服务器: 运行以下命令编译 TypeScript 代码,生成可执行的 JavaScript 文件:

    npm run build

    构建后的文件位于 'build/index.js'。

服务器配置

要将此 MCP 服务器与 MCP 客户端(例如 Claude Desktop)配合使用,您需要配置客户端以连接到此服务器。以下是 Claude Desktop 的配置示例,您需要将配置信息添加到 Claude Desktop 的配置文件中。

配置文件路径:

  • MacOS: '~/Library/Application Support/Claude/claude_desktop_config.json'
  • Windows: '%APPDATA%/Claude/claude_desktop_config.json'

配置内容 (json):

{
  "mcpServers": {
    "search-fetch-server": {  // 服务器名称,客户端配置中引用此名称
      "command": "node",      // 启动服务器的命令,这里使用 node 运行 JavaScript 文件
      "args": ["/path/to/search-fetch-server/build/index.js"] // 命令参数,指定服务器入口文件路径。请将 "/path/to/search-fetch-server" 替换为您的实际仓库路径
    }
  }
}

注意:

  • 请将 '"/path/to/search-fetch-server/build/index.js"' 替换为 'build/index.js' 文件在您本地文件系统中的绝对路径
  • 'server name' 可以自定义,客户端通过此名称引用服务器。

基本使用方法

  1. 启动服务器: 配置完成后,当 MCP 客户端(如 Claude Desktop)启动时,会自动尝试连接到配置的 MCP 服务器。服务器将在后台运行,并通过标准输入/输出 (stdio) 与客户端通信。

  2. 客户端交互: 在 MCP 客户端中,您可以:

    • 使用 'note://' URI 访问和读取服务器上存储的笔记资源。
    • 调用 'create_note' 工具创建新的笔记。
    • 调用 'fetch_url' 工具抓取网页内容。
    • 调用 'duckduckgo_search' 工具进行 DuckDuckGo 搜索。
    • 使用 'summarize_notes' Prompt 模板生成笔记摘要。
  3. 调试: 如果需要调试 MCP 服务器,可以使用仓库提供的 MCP Inspector 工具,运行命令 'npm run inspector' 启动 Inspector,它会在浏览器中提供调试界面。

开发者提示

  • 仓库中包含一个 Python 脚本 'src/exampleapicalls.py',但这似乎是一个独立的 Streamlit 应用示例,与 MCP 服务器的实现无关,可以忽略。
  • 服务器代码主要在 'src/index.ts' 中,可以参考此文件了解资源、工具和 Prompt 的具体实现方式。

信息

分类

网页与API