使用说明

项目简介

Emmett MCP 是一个基于 Python Emmett 框架构建 MCP 服务器的扩展库。它旨在帮助开发者快速搭建符合 Model Context Protocol 标准的服务端应用,以便为大型语言模型 (LLM) 客户端提供资源管理、工具调用和 Prompt 模板渲染等核心功能。Emmett MCP 专注于简化 MCP 服务器的开发流程,利用 Emmett 框架的特性提供高效、可扩展的后端解决方案。

主要功能点

  • 资源管理 (Resources): 允许开发者注册和托管各种类型的资源,例如文本、文件、HTTP 资源等,并支持通过 URI 访问这些资源,为 LLM 提供上下文数据。
  • 工具注册与调用 (Tools): 支持将 Python 函数注册为 MCP 工具,并暴露给 LLM 客户端调用,扩展 LLM 的功能边界,使其能够执行外部操作或获取外部信息。
  • Prompt 模板 (Prompts): 提供 Prompt 模板的定义和渲染能力,允许开发者预定义可定制的 Prompt,并根据客户端请求动态生成用于 LLM 交互的消息,方便管理和复用 Prompt 逻辑。
  • SSE 传输协议: 目前版本仅支持基于 Server-Sent Events (SSE) 的 HTTP 传输协议,用于与 MCP 客户端进行实时通信。
  • 会话管理: 内置会话管理机制,维护客户端连接状态。
  • 能力声明: 自动声明服务器提供的 MCP 能力,方便客户端了解服务器功能。

安装步骤

  1. 确保已安装 Python 环境 (建议 Python 3.8 或更高版本)。
  2. 安装 Emmett-MCP 库:
    pip install emmett-mcp
    这将同时安装 Emmett 框架及其依赖。

服务器配置

MCP 客户端需要配置 MCP 服务器的连接信息才能正常工作。以下是一个典型的 MCP 服务器配置示例(JSON 格式),你需要根据你的实际部署情况进行调整。

{
  "serverName": "Emmett MCP Server",
  "protocol": "mcp",
  "transport": "sse",
  "command": "python",
  "args": [
    "run_mcp_server.py"
  ],
  "baseURL": "http://localhost:8000/mcp"
}

配置参数说明:

  • '"serverName"': MCP 服务器的名称,可以自定义。
  • '"protocol"': 固定为 '"mcp"',表示使用 MCP 协议。
  • '"transport"': 设置为 '"sse"',Emmett MCP 当前仅支持 SSE 传输。
  • '"command"': 启动 MCP 服务器的命令,通常是 Python 解释器。
  • '"args"': 启动命令的参数,这里假设你的启动脚本名为 'run_mcp_server.py',你需要将其替换为你的实际脚本路径。 你需要创建一个 'run_mcp_server.py' 文件,并在其中初始化 Emmett 应用和 MCP 模块,具体代码参考下面的“基本使用方法”部分。
  • '"baseURL"': MCP 服务器的根 URL,需要根据你的 Emmett 应用配置进行设置。默认情况下,'url_prefix="/mcp"' 会将 MCP 服务挂载到 '/mcp' 路径下,Emmett 默认运行在 'http://localhost:8000'。

重要: 请确保 'run_mcp_server.py' 脚本文件存在,并且脚本内容正确初始化了 Emmett 应用和 Emmett MCP 模块。你需要根据你的实际应用场景调整 'baseURL' 和端口号。

基本使用方法

  1. 创建 Emmett 应用并集成 MCP 扩展:

    创建一个 Python 文件,例如 'run_mcp_server.py',并写入以下代码:

    from emmett55 import App
    from emmett_mcp import MCP, MCPModule
    
    app = App(__name__)
    mcp = app.use_extension(MCP)
    
    mcp_server: MCPModule = app.mcp_module(__name__, "mcp", url_prefix="/mcp")
    
    @mcp_server.resource("echo://{message}")
    def echo_resource(message: str) -> str:
        return f"Resource echo: {message}"
    
    @mcp_server.tool()
    def echo_tool(message: str) -> str:
        return f"Tool echo: {message}"
    
    @mcp_server.prompt()
    def echo_prompt(message: str) -> str:
        return f"Please process this message: {message}"
    
    if __name__ == "__main__":
        app.run()
  2. 定义 Resource, Tool 和 Prompt:

    使用 '@mcp_server.resource', '@mcp_server.tool', '@mcp_server.prompt' 装饰器来注册你的资源、工具和 Prompt 函数。

    • Resource 示例 ('echo_resource'): 定义了一个 URI 模板为 'echo://{message}' 的资源,当客户端请求该 URI 时,会调用 'echo_resource' 函数并返回结果。
    • Tool 示例 ('echo_tool'): 定义了一个名为 'echo_tool' 的工具,客户端可以调用该工具并传入 'message' 参数。
    • Prompt 示例 ('echo_prompt'): 定义了一个名为 'echo_prompt' 的 Prompt 模板,客户端可以请求渲染该模板,并获得预定义的 Prompt 消息。
  3. 运行 Emmett 应用:

    在命令行中,导航到 'run_mcp_server.py' 文件所在的目录,并执行以下命令启动服务器:

    python run_mcp_server.py

    Emmett 默认会在 'http://localhost:8000' 启动服务器。

  4. 配置 MCP 客户端并连接:

    根据你的 MCP 客户端软件的使用说明,配置之前提供的 JSON 格式的服务器连接信息,并连接到 'baseURL' 指定的地址。客户端应该能够发现并调用你定义的 Resource, Tool 和 Prompt。

更详细的使用方法: 请参考 Emmett 框架和 Model Context Protocol 的官方文档,以及 Emmett-MCP 仓库的 README 文件和示例代码。

信息

分类

AI与计算