项目简介

本项目是基于轻量级Web框架Hono实现的Model Context Protocol (MCP) 无状态服务器示例。它旨在展示如何在Serverless环境(如Cloudflare Workers)中构建一个兼容MCP协议的应用后端,为LLM客户端提供上下文和功能。

主要功能点

  • MCP请求处理: 能够接收并处理符合MCP规范的JSON-RPC请求。
  • Prompt模板: 注册并提供可供LLM客户端使用的Prompt模板(示例中包含一个简单的问候模板)。
  • 外部工具调用: 注册并暴露外部功能作为工具,供LLM调用(示例中包含一个用于测试通知流的工具)。
  • 资源访问: 提供托管资源的访问能力(示例中包含一个简单的文本资源)。
  • 无状态设计: 设计为无状态,易于在Cloudflare Workers等Serverless平台进行横向扩展。
  • HTTP传输: 使用Streamable HTTP作为与MCP客户端通信的传输协议。

安装步骤

  1. 克隆项目仓库:
    git clone https://github.com/mhart/mcp-hono-stateless.git
  2. 进入项目目录:
    cd mcp-hono-stateless
  3. 安装项目依赖:
    npm install
  4. (可选)如需部署到Cloudflare Workers,请确保已安装Wrangler CLI,并运行:
    npm run deploy

服务器配置

该MCP服务器通过HTTP协议暴露服务,通常部署后会有一个可访问的URL端点。MCP客户端需要配置连接到此URL来与服务器通信。

根据项目代码,该服务器声明的名称为 '"stateless-streamable-http-server"'。

一个MCP客户端连接到此服务器时,主要的配置信息是服务器部署后的URL。例如,如果在本地运行(默认端口3000),URL可能是 'http://localhost:3000/mcp';如果部署到Cloudflare Workers,URL可能是 'https://your-worker-subdomain.workers.dev/mcp'。

注意:MCP协议支持多种传输方式(如Stdio, SSE, WebSocket)。本仓库实现了HTTP传输,适用于客户端通过网络URL连接。部分MCP客户端可能主要面向Stdio传输(通过启动本地命令与服务器交互),这种客户端配置方式(涉及'command'和'args')不适用于连接本HTTP服务器实现。请根据您使用的MCP客户端及其支持的传输协议进行相应配置。

基本使用方法

  1. 启动服务器: 在项目根目录运行:

    npm start

    服务器将在本地启动并监听端口(默认为3000)。

  2. 使用MCP客户端连接: 使用任何兼容MCP Streamable HTTP传输协议的客户端连接到服务器地址(例如,如果MCP SDK提供了示例客户端):

    node node_modules/@modelcontextprotocol/sdk/dist/esm/examples/client/simpleStreamableHttp.js connect http://localhost:3000/mcp

    (请根据实际SDK路径和部署URL调整命令)

  3. 与服务器交互: 连接成功后,您可以在客户端命令行输入MCP命令,例如:

    • 'list-prompts': 查看服务器注册的Prompt模板。
    • 'list-tools': 查看服务器注册的工具。
    • 'list-resources': 查看服务器注册的资源。
    • 'call-tool start-notification-stream': 调用示例工具,开始接收通知。
    • 'get-prompt greeting-template {"name": "Alice"}': 获取经过模板渲染的Prompt内容。

通过这些步骤,您可以验证服务器是否正常工作并体验其提供的MCP功能。

信息

分类

AI与计算