mcpField
M
Mcp Rest Sample

Mcp Rest Sample

本地服务
github.com/BeaverHouse开发工具113 周前更新

关于 Mcp Rest Sample

Mcp Rest Sample 是一个 FastAPI 后端模板,通过 REST 和 MCP 提供模拟项目与工单域功能。它面向学习或构建同时服务于人工/API 客户端和 Agent 的服务,MCP 使用无状态 Streamable HTTP。

主要功能

  1. 01REST 端点和 API 文档
  2. 02MCP 工具、资源与提示词
  3. 03通过 /mcp 提供 Streamable HTTP
  4. 04内存中的模拟域数据
  5. 05基于 Pydantic 的类型模型

适用场景

  1. 01原型化同时支持 REST 与 MCP 的后端
  2. 02学习 FastAPI 的 Streamable HTTP 集成

MCP 相关

模板在无状态 Streamable HTTP 端点 /mcp 提供对应的项目和工单工具与资源,以及提示词。它是面向 MCP Python SDK v2 beta 的学习示例,并不声称具备生产环境兼容性。

配置

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

暂未收录安装方式

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

代码仓库

工具

还没有获取到工具列表

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

详细介绍

徽标

使用 MCP Streamable HTTP 的 FastAPI 后端模板。

Python FastAPI uv MCP 许可证

描述

此仓库是一个小型后端模板,适用于同时需要以下能力的服务:

  • 通过 REST 端点供人员和 API 客户端访问
  • 通过 MCP(Model Context Protocol)工具、资源和提示词供 Agent 访问

此应用通过两种接口暴露一个模拟领域:

  • REST:/health、/projects、/projects/{project_id}、工单分流、发布说明
  • MCP:使用 Streamable HTTP 的 /mcp,提供对应的项目和工单工具及资源

模拟数据有意保存在内存中。只有在明确 REST 和 MCP 的边界后,才添加数据库。

MCP 状态

此模板面向 MCP Python SDK v2 beta 版,以及 2026-07-28 发布候选版的方向。这意味着:

  • Streamable HTTP 是主要传输方式。
  • 在此示例中,/mcp 使用无状态 HTTP。
  • SDK 版本被精确锁定,因为 v2 仍是预发布版本。
  • 这是一个模板和学习示例,并不声称可在生产环境中兼容 MCP。

身份验证发现

此示例未实现 OAuth 或 OpenID Connect 发现。某些 MCP 客户端可能会在调用 /mcp 前探测 .well-known URL,例如:

  • /.well-known/oauth-protected-resource/mcp
  • /mcp/.well-known/oauth-protected-resource
  • /.well-known/oauth-authorization-server/mcp
  • /.well-known/openid-configuration/mcp

在此本地示例中,这些请求可能会返回 404 Not Found。只要发往 /mcp 的 JSON-RPC 请求返回 200 OK 或 202 Accepted,这种情况就是预期行为。

要将其改造为经过身份验证的 HTTP MCP 服务,请添加:

  • 针对 MCP 资源服务的 OAuth 2.0 受保护资源元数据。
  • 授权服务元数据,或有文档说明的外部授权服务。
  • 在 401 Unauthorized 响应中添加 WWW-Authenticate 标头,引导客户端访问受保护资源元数据。
  • 对每个 MCP HTTP 请求验证持有者令牌,包括受众检查,以确保令牌的作用范围限定于此 MCP 服务。
  • 针对匿名访问、无效令牌、有效令牌、元数据发现和令牌受众验证失败编写测试。

目录结构

app/
  main.py              # FastAPI app and /mcp route wiring
  mcp_server.py        # MCP tools, resources, prompts
  schemas.py           # Pydantic request/response models
  config.py            # pydantic-settings config
  internal/
    catalog.py         # mock domain logic
  routers/
    health.py
    projects.py
  tests/

本地运行

cd app
uv sync --python 3.14 --prerelease allow
uv run uvicorn main:app --reload --host 127.0.0.1 --port 8001

打开:

  • REST 文档:http://127.0.0.1:8001/docs
  • MCP 端点:http://127.0.0.1:8001/mcp

检查

使用 uv 直接运行公开检查:

cd app
uv run ruff check .
uv run ruff format --check .
uv run mypy .
uv run pytest
uv audit

uv audit 是用于检查锁文件依赖健康状况的现代命令。请保留此命令,但应将上游安全公告的可用性和当前 uv 版本状态视为运行环境背景信息。

关键说明

  • 保持 REST/MCP 层精简:验证传输输入,调用内部逻辑,返回类型化模型。
  • 创建用于不可逆或破坏性操作的 MCP 工具时务必谨慎。
  • 将身份验证、数据库、后台工作和外部客户端作为独立层添加。

评论

支持 Markdown

第一次接触 MCP?

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

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