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 Resources、List Templates、Tools、Prompts 查看当前 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/
入口说明
- src/learn_mcp_server/server.py:创建 FastMCP 实例并启动服务
- src/learn_mcp_server/registry.py:集中注册 Tools、Resources、Resource Templates 和 Prompts
- src/learn_mcp_server/settings.py:运行配置和 transport 选择
- examples/client_test.py:本地 FastMCP Client 验证脚本
- docs/project-design-and-roadmap.md:完整项目需求、设计和开发路线
打包
uv build
构建产物会生成到 dist/,该目录不会提交到 Git。
发布后运行
发布到 PyPI 后,可以直接用:
uvx --from learn-mcp-server==0.1.0 learn-mcp-server
这也是推荐写入 MCP Host 配置的运行方式。
Metadata
Release files for learn-mcp-server 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| learn_mcp_server-0.1.0.tar.gz | 130.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| learn_mcp_server-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 167.5 kB
Release files / learn_mcp_server-0.1.0.tar.gz
| Download URL | learn_mcp_server-0.1.0.tar.gz |
|---|---|
| Size | 130.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6f8de9d22b663884c7a726d1aeaca59f2d236f551156b010fac83bb3b396a672
|
|
BLAKE2b-256 checksum How to use checksums |
22b909c7bdb81e8568abee4e663a550598092b2f81005739e0e61c503cdc8f0a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.7
|
Release files / learn_mcp_server-0.1.0-py3-none-any.whl
| Download URL | learn_mcp_server-0.1.0-py3-none-any.whl |
|---|---|
| Size | 36.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f1ee53002bd0cbe6756970f17ca04bf8cb35dc2ee929ba9b0a6043dd3bd52a59
|
|
BLAKE2b-256 checksum How to use checksums |
e87b89c2146eb37ccadb7d0bcf256a2a6e8f044ac7fce7f18ad4b6692219aa2e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.7
|