使用说明
项目简介
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 能力,方便客户端了解服务器功能。
安装步骤
- 确保已安装 Python 环境 (建议 Python 3.8 或更高版本)。
- 安装 Emmett-MCP 库:
这将同时安装 Emmett 框架及其依赖。pip install emmett-mcp
服务器配置
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' 和端口号。
基本使用方法
-
创建 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() -
定义 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 消息。
-
运行 Emmett 应用:
在命令行中,导航到 'run_mcp_server.py' 文件所在的目录,并执行以下命令启动服务器:
python run_mcp_server.pyEmmett 默认会在 'http://localhost:8000' 启动服务器。
-
配置 MCP 客户端并连接:
根据你的 MCP 客户端软件的使用说明,配置之前提供的 JSON 格式的服务器连接信息,并连接到 'baseURL' 指定的地址。客户端应该能够发现并调用你定义的 Resource, Tool 和 Prompt。
更详细的使用方法: 请参考 Emmett 框架和 Model Context Protocol 的官方文档,以及 Emmett-MCP 仓库的 README 文件和示例代码。
信息
分类
AI与计算