Skip to main content
Glama
m-higuchi

Task MCP Server

by m-higuchi

Task MCP Server — MCP 学习示例

本示例的目的

这是一个学习示例,旨在通过一个简单的 ToDo 管理服务器,让您全面体验 MCP (Model Context Protocol) 的基本要素:Resources(资源) / Tools(工具) / Prompts(提示词)

Related MCP server: Todo MCP Server

您将学到什么

  • 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 获取

使用 tasks://all 返回所有任务列表

Tools

客户端 → 服务器

操作执行。传递参数并调用处理

使用 add_task 添加任务

Prompts

服务器 → 客户端

AI 指令模板。可动态嵌入数据

使用 daily_review 根据今日情况生成提示词

通信流程(本示例)

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: 「追加しました」
  1. 用户用自然语言提出请求

  2. 宿主的 LLM 选择合适的工具,并通过 MCP 客户端进行调用

  3. MCP 服务器执行处理(本示例中为读写 tasks.json)并返回结果

  4. 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

  1. 从 Claude Desktop 菜单打开 Settings

  2. 选择左侧菜单的 Developer

  3. 点击 Edit Config 按钮打开配置文件

  4. 在配置文件中添加以下内容(请将 cwd 替换为您放置此仓库的目录的绝对路径)

  5. 保存文件并重启 Claude Desktop

  6. 如果聊天输入框中出现锤子图标,则表示连接成功

注意: 重启 Claude Desktop 时,点击窗口右上角的 × 按钮并不会关闭应用程序(它会留在后台)。请从菜单栏的 File > Exit(macOS 上为 Claude > Quit Claude)完全退出后再重新启动。

配置文件位置:

OS

路径

macOS

~/Library/Application Support/Claude/claude_desktop_config.json

Windows

%APPDATA%\Claude\claude_desktop_config.json

配置内容(请根据环境修改路径):

{
  "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_tasklist_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}"
    }
  }
}
  1. 保存 .vscode/mcp.json 后,文件顶部会出现 Start 按钮

  2. 点击 Start 启动服务器

  3. 即可从 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 服务器:

  1. 打开 Manus 的 Settings(设置)

  2. MCP Servers 部分点击 Add Server

  3. 设置以下内容:

项目

Name

task-server

Transport

STDIO

Command

python

Arguments

/path/to/mcp-sample/server.py(替换为绝对路径)

注意: 由于 Manus 在云端运行,要连接本地 MCP 服务器,需要使服务器可从远程访问,或使用 Manus 提供的本地连接功能。详情请参阅 Manus 官方文档。

保存设置后,Manus 代理在执行任务时将能够自动选择并调用本服务器的工具。

使用示例 — 向 Manus 发出如下指令:

タスク一覧を確認して、期限が近いものを優先度順に整理して
  → list_tasks ツールで一覧を取得し、整理した結果を返す

「企画書を書く」というタスクを追加して、さらに小さなステップに分解して
  → add_task でタスクを追加し、break_down_task で分解まで自動実行

提示: 由于 Manus 会自主组合工具执行,因此也可以一次性处理跨越多个步骤的指令。

提供的 MCP 功能列表

Resources(数据读取)

URI

说明

tasks://all

所有任务列表

tasks://incomplete

未完成任务列表(open / doing)

tasks://stats

统计信息(total, open, doing, done, overdue)

tasks://detail/{task_id}

特定任务详情

Tools(操作)

工具名称

说明

add_task

添加任务

list_tasks

任务列表(可通过 status / priority / tag / limit 过滤)

update_task

更新任务(仅指定需要更改的字段)

complete_task

将任务标记为完成

delete_task

删除任务

search_tasks

对 title / notes 进行部分匹配搜索

Prompts(AI 模板)

提示词名称

说明

参数

daily_review

整理今日待办事项的每日回顾

break_down_task

将大任务拆解为小任务

task_id

weekly_summary

周度回顾与下周计划

数据存储位置

  • tasks.json(在服务器所在目录自动创建)

  • 以 JSON 格式保存所有任务

测试

python -m pytest tests/ -v

测试执行命令在 Bash / PowerShell 中通用。

限制事项

  • 单用户: 不支持并发访问或用户管理

  • 仅限本地: 未考虑网络公开

  • 仅供学习: 未考虑生产环境所需的稳健性与安全性

  • 未使用数据库: 数据保存在 JSON 文件中

  • 无认证: 不包含认证与授权机制

Related MCP Connectors

Related MCP Servers