Skip to main content

A learning MCP server built with FastMCP.

Project description

learn-mcp-server

learn-mcp-server 是一个使用 FastMCP 编写的 MCP 学习型 Server。它既是一个可以运行的 MCP Server,也是一个用于学习 MCP 项目结构、Tool、Resource、Resource Template、Prompt、配置和调试流程的教学示例。

这个仓库的根目录 README 只保留项目介绍、安装运行、Host 配置和常用命令。更完整的需求设计、开发路线和模块拆分说明已经移动到 docs/project-design-and-roadmap.md

功能

当前版本提供:

  • MCP 核心概念讲解
  • FastMCP Tool / Resource / Resource Template / Prompt 示例
  • 学习路线、课程资源和练习任务
  • stdio 与 streamable-http 配置说明
  • 常见错误诊断和调试建议
  • FastMCP Client 集成验证脚本

当前注册能力:

Tools: 20 个
Resources: 39 个
Resource Templates: 5 个
Prompts: 5 个

环境要求

推荐使用 uv 管理项目环境和运行命令。

uv --version

如果没有安装 uv,Windows PowerShell 可以使用:

irm https://astral.sh/uv/install.ps1 | iex

项目 Python 版本由 .python-version 固定为:

3.10

安装依赖

在项目根目录执行:

uv sync

运行测试

uv run pytest -q

本地客户端验证

uv run python examples\client_test.py

该脚本会列出当前 MCP Server 暴露的 Tools、Resources、Resource Templates 和 Prompts,并调用 get_server_info 做一次基本验证。

Inspector 调试

Windows 下建议使用正斜杠绝对路径,并显式指定 server.py 里的 mcp 对象:

uv run fastmcp dev inspector --no-reload E:/SoftwareProject/learn-mcp-server/src/learn_mcp_server/server.py:mcp

如果换成你自己的项目路径,也保持 /,不要写成 E:\...。反斜杠路径在 Inspector 的 URL 转换过程中可能被错误解析。

Inspector 连接成功后,可以在页面里点击 List ResourcesList TemplatesToolsPrompts 查看当前 MCP Server 暴露的能力。

stdio 配置

发布后给别人使用

发布到 PyPI 后,推荐让 Host 使用 uvx 启动。uvx 会创建隔离环境并自动安装依赖,使用者不需要手动配置 Python 解释器路径。

{
  "mcpServers": {
    "learn-mcp-server": {
      "command": "uvx",
      "args": [
        "--from",
        "learn-mcp-server==0.1.0",
        "learn-mcp-server"
      ]
    }
  }
}

示例文件见 examples/stdio_config.json

本地开发使用

如果还没有发布到 PyPI,或者想让 Host 直接使用当前工作区代码,可以使用 uv run --directory

{
  "mcpServers": {
    "learn-mcp-server": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "E:\\SoftwareProject\\learn-mcp-server",
        "learn-mcp-server"
      ]
    }
  }
}

--directory 后面的路径替换成你本机项目根目录。

streamable-http 运行

PowerShell:

$env:LEARN_MCP_TRANSPORT="streamable-http"
uv run learn-mcp-server

默认地址:

http://127.0.0.1:8000/mcp

对应 Host 配置示例见 examples/streamable_http_config.json

恢复 stdio:

Remove-Item Env:\LEARN_MCP_TRANSPORT

常用命令

uv sync
uv run pytest -q
uv run python examples\client_test.py
uv run fastmcp dev inspector --no-reload E:/SoftwareProject/learn-mcp-server/src/learn_mcp_server/server.py:mcp
uv build

项目结构

learn-mcp-server/
├── README.md
├── pyproject.toml
├── uv.lock
├── .python-version
├── docs/
│   └── project-design-and-roadmap.md
├── examples/
│   ├── client_test.py
│   ├── stdio_config.json
│   └── streamable_http_config.json
├── src/
│   └── learn_mcp_server/
│       ├── server.py
│       ├── registry.py
│       ├── settings.py
│       ├── data/
│       ├── prompts/
│       ├── resources/
│       ├── tools/
│       └── utils/
└── tests/

入口说明

打包

uv build

构建产物会生成到 dist/,该目录不会提交到 Git。

发布后运行

发布到 PyPI 后,可以直接用:

uvx --from learn-mcp-server==0.1.0 learn-mcp-server

这也是推荐写入 MCP Host 配置的运行方式。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

learn_mcp_server-0.1.0.tar.gz (130.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

learn_mcp_server-0.1.0-py3-none-any.whl (36.6 kB view details)

Uploaded Python 3

File details

Details for the file learn_mcp_server-0.1.0.tar.gz.

File metadata

  • Download URL: learn_mcp_server-0.1.0.tar.gz
  • Upload date:
  • Size: 130.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.7

File hashes

Hashes for learn_mcp_server-0.1.0.tar.gz
Algorithm Hash digest
SHA256 6f8de9d22b663884c7a726d1aeaca59f2d236f551156b010fac83bb3b396a672
MD5 34e4b8cd9c6099f399fbe9d7bdda32d0
BLAKE2b-256 22b909c7bdb81e8568abee4e663a550598092b2f81005739e0e61c503cdc8f0a

See more details on using hashes here.

File details

Details for the file learn_mcp_server-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for learn_mcp_server-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f1ee53002bd0cbe6756970f17ca04bf8cb35dc2ee929ba9b0a6043dd3bd52a59
MD5 2d3a05403a1b6ea631660e39e5e2b1d1
BLAKE2b-256 e87b89c2146eb37ccadb7d0bcf256a2a6e8f044ac7fce7f18ad4b6692219aa2e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page