mcpField
F
FastMCP Integration Application Demo

FastMCP Integration Application Demo

本地服务
github.com/ZhouhaoJiangAI 与智能体1080 周前更新

关于 FastMCP Integration Application Demo

FastMCP Integration Application Demo 展示了将 FastMCP 服务、FastAPI 接口和 LLM Agent 处理能力组合起来的模块化应用,适合学习或扩展此类架构的开发者。应用同时提供 REST API,并支持 Agent 自动选择和调用 MCP 工具。

主要功能

  1. 01提供 API 与 MCP 两种运行模式
  2. 02通过 SSE 连接 MCP 服务
  3. 03提供工具、资源和 Agent 接口
  4. 04支持 Agent 自动调用 MCP 工具

适用场景

  1. 01通过 REST API 调用 MCP 工具
  2. 02获取 MCP 资源内容
  3. 03让 LLM Agent 处理请求并选择工具
  4. 04分别运行 API 服务与 MCP 服务

MCP 相关

应用可独立运行 MCP 服务,并通过 SSE 客户端连接该服务。它向 MCP 客户端提供工具,也通过 FastAPI 暴露工具、资源和 Agent 接口。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

FastMCP 集成应用演示

中文说明(中文文档)

本项目演示了如何使用 FastMCP 构建模块化应用,集成 MCP 服务、FastAPI 接口和大模型 Agent 能力。

项目架构

项目采用模块化设计,将不同功能拆分到独立的软件包中:

app/
├── __init__.py
├── api/                 # FastAPI Application Layer
│   ├── __init__.py
│   ├── main.py          # FastAPI main application entry point
│   └── routers/         # API route definitions
│       ├── __init__.py
│       ├── agent.py       # Agent mode routes
│       ├── mcp_resources.py # MCP resource routes
│       └── mcp_tools.py     # MCP tool routes
├── llm/                 # LLM (Large Language Model) Processing Layer
│   ├── __init__.py
│   ├── base.py          # Base LLM class
│   └── openai.py        # OpenAI implementation
└── mcp_server/          # MCP Server Definition Layer
    ├── __init__.py
    ├── base.py          # Base MCP Server class
    ├── run.py           # Script for internal Client connection or direct execution
    └── simple.py        # Simple MCP Server implementation (with tools & resources)
main.py                  # Main entry point (runs API or MCP server)

核心工作流(API 模式):

  1. 独立运行 MCP 服务:使用 python main.py --mode mcp 启动独立的 MCP 服务进程,通过 SSE 传输在指定端口(默认:8001)上监听。
  2. 运行 API 服务:使用 python main.py --mode api 启动 FastAPI 服务(监听端口为 8080)。
  3. 连接:FastAPI 服务中的 mcp_client 通过 SSE 连接到独立运行的 MCP 服务。
  4. 请求处理:前端或其他客户端通过 FastAPI 提供的 HTTP API 与应用交互。
  5. 工具/资源/Agent 调用:FastAPI 路由将请求转发给 mcp_client(与 MCP 服务通信)或 llm 模块(与大模型 API 通信)。

功能特性

  • 模块化设计:清晰划分职责(API、LLM、MCP),便于扩展和维护。
  • 双运行模式:
    • api 模式:运行 FastAPI 服务,需要单独运行 MCP 服务。
    • mcp 模式:直接运行 MCP 服务,供测试或其他客户端连接。
  • 大模型集成:支持使用 OpenAI(或其他可扩展的大模型)处理工具输出,或以 Agent 模式执行任务。
  • Agent 模式:提供 /api/agent/process 端点,让大模型自主选择并调用 MCP 工具。
  • 完整 API:通过 FastAPI 为 MCP 工具、资源和 Agent 功能提供 RESTful 端点。
  • 持久连接:API 服务与 MCP 服务保持长期 SSE 连接,以提高效率。

安装

  1. 克隆仓库(如有需要)。

  2. 安装依赖项(使用 uv 或 pip):

    # 推荐:使用 uv
    uv pip install -e .
    
    # 或者,使用 pip
    # pip install -e .
    
  3. 设置环境变量:

    • 使用大模型功能需要设置 OPENAI_API_KEY 环境变量。
    • 可以在项目根目录中创建 .env 文件并在其中定义该变量:
      OPENAI_API_KEY=sk-...
      

使用方法

运行 API 服务(推荐)

此模式需要先启动独立运行的 MCP 服务。

  1. 启动 MCP 服务(在一个终端中):

    # 使用 SSE 传输,监听 127.0.0.1:8001(默认)
    python main.py --mode mcp
    
    # 或指定其他主机和端口
    # python main.py --mode mcp --mcp-host 0.0.0.0 --mcp-port 8002
    
  2. 启动 API 服务(在另一个终端中):

    # 监听 0.0.0.0:8080(默认)
    python main.py --mode api
    
    # 使用其他端口或启用热重载(用于开发)
    # python main.py --mode api --port 9000 --reload
    

    现在可以通过 http://localhost:8080(或指定的端口)访问 API 服务。它会自动连接到第 1 步启动的 MCP 服务(默认连接地址:http://localhost:8001/sse)。

直接运行 MCP 服务

如果只需运行 MCP 服务(例如,供其他 FastMCP 客户端直接连接):

# Default: Use SSE transport, listening on 127.0.0.1:8001
python main.py --mode mcp

# Use Standard I/O (stdio) transport
# python main.py --mode mcp --mcp-transport stdio

API 端点(通过 API 服务访问)

API 服务默认运行在 http://localhost:8080。

  • MCP 工具(/api/tools):
    • GET /:列出所有可用工具及其参数。
    • POST /{tool_name}:调用指定工具。请求正文示例:{"params": {"a": 5, "b": 3}, "use_llm": true, "system_message": "Explain the result"}
  • MCP 资源(/api/resources):
    • GET /:列出所有可用资源 URI 及其类型。
    • GET /{resource_path:path}:获取指定资源的内容(例如,GET /api/resources/example/greeting)。
  • Agent 模式(/api/agent):
    • POST /process:让大模型自主处理用户请求,并可能调用工具。请求正文示例:{"prompt": "What is 5 plus 3?"}
  • 运行状况检查:
    • GET /health:检查 API 服务是否正在运行。
    • GET /api/tools/health:检查 API 服务与 MCP 服务之间的连接状态。

扩展应用

添加新工具
  1. 在 app/mcp_server/simple.py 中扩展 BaseMCPServer(或创建新的服务文件)。
  2. 在 _register_tools 方法中使用 @self.mcp.tool() 装饰器定义新工具。
  3. 如果创建了新的服务文件,请在 app/mcp_server/run.py 中导入并实例化它。
添加新的大模型提供商
  1. 在 app/llm/ 目录中创建新的 Python 文件(例如,anthropic.py)。
  2. 创建一个继承自 app.llm.base.BaseLLM 的新类。
  3. 实现 generate 和 generate_with_tools 方法。
  4. 根据需要导入并使用新的大模型类(例如,在 agent.py 中)。

开发

开发时运行 API 服务,可启用热重载:

# Ensure the standalone MCP server is still running
python main.py --mode api --reload

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。