Skip to main content
Glama

My Own MCP Based on a Meeting Minutes Generation Project

An educational local MCP package that reads unstructured meeting notes, builds a meeting-minutes writing prompt, validates the draft, and saves it after user approval.

The company names, person names, schedules, incidents, figures, and statements in this package are all synthetic data created for educational purposes.

Learning Objectives

After completing the lab, trainees will be able to:

  1. Explain the roles of MCP Host, Server, and Tool.

  2. Run a local STDIO MCP server with Python.

  3. Implement and modify a Tool that reads unstructured data.

  4. Design write Tools with validation and approval boundaries.

  5. Customize the MCP to their own meeting-minutes format.

  6. Connect the server to Codex or Claude Desktop and demonstrate it working.

  7. Design tool descriptions, schemas, responses, and errors from a harness engineering perspective.

Related MCP server: Local Knowledge Desk

What's Included

  • 3 synthetic unstructured meeting notes at different difficulty levels

  • A working FastMCP server: 11 tools, 3 resources, 1 prompt

  • A standard meeting-minutes template

  • Approval-token-based saving and overwrite detection

  • A grounding checker against the source text

  • 5 trainee lab workbooks

  • 1 instructor answer key

  • Unit tests for domain, grounding, and harness conventions, plus an STDIO smoke test

Quick Start

Required environment: Python 3.11 or later, uv

uv sync --extra dev
uv run pytest -q
uv run python scripts/smoke_stdio.py

To use MCP Inspector, run:

uv run mcp dev src/meeting_mcp/server.py

Provided Tools

The recommended flow is in the order below, and the next_actions field in every response tells you the next step.

DISCOVER → READ → GROUND → DRAFT → CHECK → PREVIEW → [사용자 승인] → SAVED

Step

Tool

Read/Write

Role

DISCOVER

list_dummy_notes

Read

View the 3 synthetic notes

READ

read_meeting_note

Read

View the source text. Supports line ranges and L14 citation anchors

GROUND

extract_note_facts

Read

Extract decision candidates, dates, and unconfirmed expressions with line numbers

DRAFT

build_minutes_prompt

Read

Combine the template with the source text

CHECK

validate_minutes_draft

Read

Structural validation. Provides rule_id·severity·line·fix (save gate)

CHECK

check_minutes_grounding

Read

Cross-check that people, dates, and figures exist in the source (advisory; does not block saving)

PREVIEW

diff_minutes_against_saved

Read

Check the difference against the previously saved version

PREVIEW

preview_save_minutes

Read

Shows validation, grounding, and diff together and issues an approval token

SAVED

save_approved_minutes

Write

Saves only when the approval token matches (the only write tool)

OBSERVE

list_saved_minutes

Read

List saved meeting minutes

OBSERVE

read_minutes_audit_log

Read

View the save audit log

Resources and Prompts

Type

URI or Name

Role

Resource

note://{note_id}

Source meeting note

Resource

template://minutes

Standard meeting-minutes template

Resource

minutes://{note_id}

Saved meeting minutes

Prompt

write_minutes

Meeting-minutes writing workflow including the approval boundary

Harness Design

This server treats not only functionality but also the way the model uses the tools as a design target. See Lab 5 for details.

  • Every response includes stage and next_actions, so the model can pick the next tool from the response alone.

  • Errors return a cause code, a recovery method, and selectable values together.

  • Argument schemas are kept flat ({"note_id": "..."}). Using a Pydantic model as the argument type nests them as {"params": {...}} and changes the call shape.

  • Return values are Pydantic models, so outputSchema is generated automatically.

  • Only definite checks (structure) block saving; heuristic checks (grounding) are only reported as warnings.

  • Every tool carries readOnlyHint / destructiveHint to distinguish write tools.

Connecting to Codex

Run the following command from the package root:

codex mcp add personal-meeting -- uv --directory "$PWD" run python src/meeting_mcp/server.py
codex mcp list

In the Codex app, you can also add it as an STDIO server under Settings → MCP servers → Add server. Per OpenAI's official documentation, the Codex app, CLI, and IDE extension share the MCP configuration of the same host.

Connecting to Claude Desktop

Replace ABSOLUTE_PROJECT_PATH in config/claude_desktop_config.example.json with the absolute path to this folder, then apply it to the Claude Desktop settings. You must fully quit the app and relaunch it.

personal-meeting MCP에서 사용 가능한 더미 회의 메모를 보여주세요.
training_design 메모를 읽고, 제공된 회의록 템플릿에 맞춰 초안을 작성하세요.
원문에 없는 담당자와 기한은 추정하지 마세요.
incident_review 메모에서 extract_note_facts로 ambiguity_flags를 먼저 확인하고,
확정되지 않은 항목은 전부 '미정'으로 남긴 회의록을 작성하세요.
작성한 회의록을 validate_minutes_draft와 check_minutes_grounding으로 검증하고,
통과하면 preview_save_minutes까지만 실행하세요. 저장은 아직 하지 마세요.

Training Sequence

  1. START_HERE.md

  2. Lab 1: Data and Tools

  3. Lab 2: Meeting-Minutes Prompt

  4. Lab 3: Validation and Approval

  5. Lab 4: Client Connection

  6. Lab 5: Harness Engineering

Verification Commands

uv run pytest -q
uv run python scripts/smoke_stdio.py
uv run python scripts/validate_package.py

Design Principles

  • MCP does not call any separate LLM API.

  • Codex or Claude handles summarization; MCP handles data, validation, and saving.

  • Information not confirmed in the source text is never generated, and the grounding checker mechanically cross-checks this.

  • Final saving requires both the approval token issued at preview and the user's explicit approval.

  • The approval token is a hash of (note_id, body), so the approved content and the saved content cannot diverge.

  • Domain logic (core, grounding) is separated from tool conventions (server, harness).

  • In real training, no customer, employee, or contract-related data is used.

References

Install Server
A
license - permissive license
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • MCP server for generating rough-draft project plans from natural-language prompts.

  • Markdown-based note-taking with a hosted MCP server. Your notes serve you and your AI.

  • MCP-native collaborative markdown editor with real-time AI document editing

View all MCP Connectors

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/minsik102/fileanalyzer_mcp_testmode'

If you have feedback or need assistance with the MCP directory API, please join our Discord server