Task MCP Server
Task MCP Server — MCP 学习示例
本示例的目的
这是一个学习示例,旨在通过一个简单的 ToDo 管理服务器,让您全面体验 MCP (Model Context Protocol) 的基本要素:Resources(资源) / Tools(工具) / Prompts(提示词)。
您将学到什么
Resources: AI 客户端从服务器读取数据的机制
Tools: AI 客户端对服务器执行操作的机制
Prompts: 为 AI 提供特定视角或上下文的模板机制
MCP 服务器的基本结构以及通过 STDIO 传输进行通信的方式
MCP 的工作原理
MCP 是一种协议,允许 AI 应用程序(宿主)统一访问外部数据和工具。
整体架构
graph TB
subgraph host[" "]
HostLabel["🖥️ ホスト(Claude Desktop / VS Code など)"]
LLM["LLM"]
ClientA["MCP クライアント"]
ClientB["MCP クライアント"]
ClientC["MCP クライアント"]
HostLabel ~~~ LLM
LLM --- ClientA
LLM --- ClientB
LLM --- ClientC
end
ClientA -- "STDIO" --> ServerA["MCP サーバー A\n(本サンプル)"]
ClientB -- "STDIO" --> ServerB["MCP サーバー B\n(別のサーバー)"]
ClientC -- "SSE/HTTP" --> ServerC["MCP サーバー C\n(リモート)"]
style host fill:#1a1a2e,stroke:#e0e0e0,stroke-width:2px,color:#ffffff
style HostLabel fill:none,stroke:none,font-weight:bold,color:#ffffff
style LLM fill:#ffffff,stroke:#333333,color:#000000
style ClientA fill:#ffffff,stroke:#333333,color:#000000
style ClientB fill:#ffffff,stroke:#333333,color:#000000
style ClientC fill:#ffffff,stroke:#333333,color:#000000宿主 (Host): AI 应用程序本身。负责与用户对话并调用 LLM。
MCP 客户端: 内置于宿主中,与每个 MCP 服务器进行 1:1 通信。
MCP 服务器: 提供 Resources / Tools / Prompts。本示例即属于此类。
MCP 服务器提供的三个要素
block-beta
columns 1
block:server["MCP サーバー"]
R["📖 Resources(データ参照)\nタスク一覧 ・ 統計情報"]
T["🔧 Tools(操作の実行)\nタスク追加 ・ タスク完了 ・ 検索"]
P["💬 Prompts(テンプレート)\nデイリーレビュー ・ タスク分解"]
end要素 | 方向 | 角色 | 示例(本示例) |
Resources | 服务器 → 客户端 | 数据读取。通过指定 URI 获取 | 使用 |
Tools | 客户端 → 服务器 | 操作执行。传递参数并调用处理 | 使用 |
Prompts | 服务器 → 客户端 | AI 指令模板。可动态嵌入数据 | 使用 |
通信流程(本示例)
sequenceDiagram
participant U as ユーザー
participant H as ホスト / LLM
participant C as MCP クライアント
participant S as MCP サーバー
participant F as tasks.json
U->>H: 「タスクを追加して」
H->>C: add_task 呼び出し
C->>S: JSON-RPC request
S->>F: ファイル書き込み
F-->>S: OK
S-->>C: JSON-RPC response
C-->>H: 結果を返す
H-->>U: 「追加しました」用户用自然语言提出请求
宿主的 LLM 选择合适的工具,并通过 MCP 客户端进行调用
MCP 服务器执行处理(本示例中为读写 tasks.json)并返回结果
LLM 根据结果向用户做出响应
要点: MCP 客户端与服务器之间使用 JSON-RPC 2.0 进行通信。由于本示例在传输层使用了 STDIO(标准输入输出),服务器的
stdout专用于 MCP 通信。日志输出请使用stderr。
文件结构
├── server.py # MCP サーバー本体(Resources / Tools / Prompts を登録)
├── task_store.py # Task モデルと JSON 永続化
├── requirements.txt # 依存パッケージ
├── tasks_sample.json # サンプルデータ(動作確認用)
├── README.md
└── tests/
└── test_task_store.py # ストレージ層のテスト前提条件
Python 3.10 或更高版本
设置
# 仮想環境の作成(推奨)
python -m venv .venv
source .venv/bin/activate
# 依存パッケージのインストール
pip install -r requirements.txt
# テスト用パッケージ(テストを実行する場合)
pip install pytest# 仮想環境の作成(推奨)
python -m venv .venv
.venv\Scripts\Activate.ps1
# 依存パッケージのインストール
pip install -r requirements.txt
# テスト用パッケージ(テストを実行する場合)
pip install pytest启动方法
# サンプルデータを使う場合はコピー
cp tasks_sample.json tasks.json
# サーバー起動(STDIO transport)
python server.py# サンプルデータを使う場合はコピー
Copy-Item tasks_sample.json tasks.json
# サーバー起動(STDIO transport)
python server.py服务器通过标准输入输出使用 MCP 协议进行通信。 直接运行它不会产生人类可读的输出。请通过 MCP 客户端连接使用。
如何从 MCP 客户端使用
Claude Desktop
从 Claude Desktop 菜单打开 Settings
选择左侧菜单的 Developer
点击 Edit Config 按钮打开配置文件
在配置文件中添加以下内容(请将
cwd替换为您放置此仓库的目录的绝对路径)保存文件并重启 Claude Desktop
如果聊天输入框中出现锤子图标,则表示连接成功
注意: 重启 Claude Desktop 时,点击窗口右上角的 × 按钮并不会关闭应用程序(它会留在后台)。请从菜单栏的 File > Exit(macOS 上为 Claude > Quit Claude)完全退出后再重新启动。
配置文件位置:
OS | 路径 |
macOS |
|
Windows |
|
配置内容(请根据环境修改路径):
{
"mcpServers": {
"task-server": {
"command": "python",
"args": ["/path/to/mcp-sample/server.py"],
"cwd": "/path/to/mcp-sample"
}
}
}注意:
args中的server.py请务必使用绝对路径。如果使用相对路径,cwd可能无法生效,导致在非预期的目录下运行。
使用示例 — 在聊天框中输入如下内容:
add_task で「買い物リストを作る」というタスクを追加して
→ add_task ツールが呼ばれ、タスクが追加される
list_tasks でタスク一覧を表示して
→ list_tasks ツールが呼ばれ、一覧が表示される
daily_review プロンプトを使って、今日やることを整理して
→ daily_review Prompt をもとに提案が返る提示: MCP 工具在模糊的自然语言下可能无法被调用。包含工具名称或提示词名称进行指令会更可靠。
Claude Code (CLI)
在项目根目录下创建 .mcp.json:
# mcp-sample ディレクトリ内で実行
claude mcp add task-server -- python server.py或者,您也可以手动创建 .mcp.json:
{
"mcpServers": {
"task-server": {
"command": "python",
"args": ["server.py"]
}
}
}连接确认:
# Claude Code を起動して /mcp コマンドで確認
claude
> /mcp如果工具列表中显示 add_task 或 list_tasks,则表示连接成功。
使用示例 — 直接在 Claude Code 的提示词中输入:
> add_task で「レポート作成」というタスクを優先度 high で追加して
> list_tasks で高優先度のタスクだけ表示して
> search_tasks で「レポート」を検索して
> complete_task でタスク a1b2c3d4 を完了にして
> weekly_summary プロンプトを使って今週の振り返りをしてVS Code (GitHub Copilot)
在 VS Code 中,将配置放在 .vscode/mcp.json 中:
{
"servers": {
"task-server": {
"command": "python",
"args": ["server.py"],
"cwd": "${workspaceFolder}"
}
}
}保存
.vscode/mcp.json后,文件顶部会出现 Start 按钮点击 Start 启动服务器
即可从 Copilot Chat(Agent 模式)中使用工具
使用示例 — 将 Copilot Chat 切换到 Agent 模式后输入:
add_task で期限 2026-04-10 の「設計レビュー」タスクを追加して
list_tasks で status が doing のタスクを表示して
break_down_task プロンプトでタスク a1b2c3d4 を小さく分解してManus
Manus 是一个根据用户指令自主执行任务的 AI 代理平台。它也可以作为 MCP 客户端运行,连接到外部 MCP 服务器以使用工具和数据。
从 Manus 的设置界面添加 MCP 服务器:
打开 Manus 的 Settings(设置)
在 MCP Servers 部分点击 Add Server
设置以下内容:
项目 | 值 |
Name |
|
Transport |
|
Command |
|
Arguments |
|
注意: 由于 Manus 在云端运行,要连接本地 MCP 服务器,需要使服务器可从远程访问,或使用 Manus 提供的本地连接功能。详情请参阅 Manus 官方文档。
保存设置后,Manus 代理在执行任务时将能够自动选择并调用本服务器的工具。
使用示例 — 向 Manus 发出如下指令:
タスク一覧を確認して、期限が近いものを優先度順に整理して
→ list_tasks ツールで一覧を取得し、整理した結果を返す
「企画書を書く」というタスクを追加して、さらに小さなステップに分解して
→ add_task でタスクを追加し、break_down_task で分解まで自動実行提示: 由于 Manus 会自主组合工具执行,因此也可以一次性处理跨越多个步骤的指令。
提供的 MCP 功能列表
Resources(数据读取)
URI | 说明 |
| 所有任务列表 |
| 未完成任务列表(open / doing) |
| 统计信息(total, open, doing, done, overdue) |
| 特定任务详情 |
Tools(操作)
工具名称 | 说明 |
| 添加任务 |
| 任务列表(可通过 status / priority / tag / limit 过滤) |
| 更新任务(仅指定需要更改的字段) |
| 将任务标记为完成 |
| 删除任务 |
| 对 title / notes 进行部分匹配搜索 |
Prompts(AI 模板)
提示词名称 | 说明 | 参数 |
| 整理今日待办事项的每日回顾 | 无 |
| 将大任务拆解为小任务 |
|
| 周度回顾与下周计划 | 无 |
数据存储位置
tasks.json(在服务器所在目录自动创建)以 JSON 格式保存所有任务
测试
python -m pytest tests/ -v测试执行命令在 Bash / PowerShell 中通用。
限制事项
单用户: 不支持并发访问或用户管理
仅限本地: 未考虑网络公开
仅供学习: 未考虑生产环境所需的稳健性与安全性
未使用数据库: 数据保存在 JSON 文件中
无认证: 不包含认证与授权机制
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/m-higuchi/mcp-sample'
If you have feedback or need assistance with the MCP directory API, please join our Discord server