项目简介

这是一个基于fastmcp框架实现的Model Context Protocol (MCP) 服务器示例。它展示了如何构建一个简单的后端服务,向LLM客户端提供特定的工具(如天气查询、笔记管理)和资源(如动态问候语)。

主要功能点

  • 工具注册与执行: 提供可由LLM客户端调用的具体功能,例如:
    • 计算两个数字的和。
    • 查询指定城市的天气信息(需要OpenWeatherMap API Key)。
    • 添加、获取所有或获取最后一条笔记(笔记保存在本地文件)。
  • 资源托管与访问: 提供可以通过特定URI访问的数据或动态内容,例如:
    • 通过'greeting://{name}'格式的URI获取个性化问候语。
  • MCP协议支持: 使用fastmcp框架处理MCP标准的JSON-RPC请求和响应。

安装步骤

  1. 克隆仓库: 克隆本项目到本地。
  2. 进入项目目录: 进入克隆下来的项目文件夹。
  3. 安装依赖: 推荐使用 'uv' 工具安装依赖,执行命令 'uv sync'。如果您使用pip,请执行 'pip install -r requirements.txt'。
  4. 配置环境变量: 在项目根目录创建 '.env' 文件。参考 '.env.example' 文件,添加 'WEATHER_API_KEY'(用于天气查询)、'OPENAI_API_KEY'(如果使用aiagent.py)和 'NOTES_FILE'(用于笔记管理)等配置。

服务器配置

MCP客户端需要配置如何启动并连接到此MCP服务器。典型的客户端配置会包含服务器名称、启动命令 ('command') 和启动参数 ('args')。

您可以选择运行 'main.py'(提供加法、天气、问候资源)或 'simplenote.py'(提供笔记管理工具)作为服务器。

以下是两种服务器配置示例的关键信息,用于您配置MCP客户端时参考:

  • SimpleServer (main.py):
    • 'name': 例如设置为 "SimpleServer"
    • 'command': 通常是您系统中 'uv' 可执行文件的路径(例如 '/opt/homebrew/bin/uv' 或 '/usr/local/bin/uv' 等)
    • 'args': 一个字符串列表,用于传递给 'command'。对于 'main.py',通常是 '["run", "--with", "mcp[cli]", "mcp", "run", "/path/to/your/cloned/repo/main.py"]'。请将 '/path/to/your/cloned/repo/main.py' 替换为您本地实际的文件路径。
  • SimpleNotes Server (simplenote.py):
    • 'name': 例如设置为 "SimpleNotes Server"
    • 'command': 同上,'uv' 可执行文件的路径。
    • 'args': 一个字符串列表。对于 'simplenote.py',通常是 '["run", "--with", "mcp[cli]", "mcp", "run", "/path/to/your/cloned/repo/simplenote.py"]'。请将 '/path/to/your/cloned/repo/simplenote.py' 替换为您本地实际的文件路径。

客户端会使用这些配置信息启动服务器进程并通过Stdio等方式进行通信。

基本使用方法

启动服务器后(例如,使用上述配置中的命令),一个支持MCP协议的LLM客户端(如OpenAI Agent)可以自动发现并利用服务器提供的工具和资源。

例如,如果运行的是'simplenote.py'服务器,LLM Agent在接收到用户关于笔记的指令时,会通过MCP协议调用服务器暴露的 'add_note', 'get_notes', 'get_last_note' 工具来完成任务。同样,如果运行的是'main.py'服务器,LLM Agent可以调用 'get_weather' 工具来查询天气,或访问 'greeting://{name}' 资源获取问候语。

注意:直接通过浏览器访问 'localhost:6274' 看到的界面是 fastmcp 框架提供的测试/调试界面,展示了服务器的能力并允许手动调用工具和资源,但实际LLM客户端通常通过命令行或WebSocket等协议与服务器通信。

信息

分类

AI与计算