standup-journal-mcp

standup-journal-mcp

MCP server for logging daily tasks, retrieving tasks by date, and generating standup reports.

Category
访问服务器

README

Following Along (YouTube Tutorial)

This project follows MCP Tutorial: Build Your First MCP Server — steps below mirror that walkthrough, adapted for uv and the current v2 SDK.

Step 1: Initialize the project and install the MCP SDK

From an empty repo, in your terminal:

uv init
uv add "mcp[cli]"

This creates pyproject.toml, uv.lock, and a .venv, with mcp[cli] installed as a dependency.

Step 2: Write the server

Create main.py in the project root: (paste the code above)

This mirrors the PyPI quickstart skeleton (from mcp.server import MCPServer, @mcp.tool() decorators), swapped in with the standup journal's own tools:

  • log_task(task_description, status="done") — log what you did.
  • get_tasks_by_date(log_date) — see everything logged on a given day.
  • generate_standup_report() — pull yesterday's done items and current blockers into a Slack-ready bulleted message.

Note on the video: the tutorial uses FastMCP from mcp.server.fastmcp(the v1.x SDK API from April 2025). uv add "mcp[cli]" today installs the v2 SDK, where FastMCP was renamed MCPServer and moved to mcp.server. The concepts and decorators (@mcp.tool(), @mcp.resource()) are unchanged; only the import path and class name differ.

Data lives in a local SQLite file at ~/.standup-journal/standups.db (override with STANDUP_DB_PATH), created automatically on first run.

Step 3: Install the server into Claude Desktop

From the project root:

uv run mcp install main.py

This imports main.py, reads the server's name ("standup-journal", set via MCPServer("standup-journal")), and writes the launch command directly into Claude Desktop's config file for you — no manual JSON editing needed.

Example output:

INFO     Added server 'standup-journal' to Claude config
INFO     Successfully installed standup-journal in Claude app

Fully quit Claude Desktop (not just the window) and reopen it for the new server to show up. Your tools — log_task, update_task_status, get_tasks_by_date, get_tasks_between, search_tasks, list_tags, generate_standup_report, generate_exec_summary, generate_weekly_summary — should then be available in chat.

Under the hood, mcp install writes an entry that launches your server via uv run, pinned to the exact mcp version installed in your project, so Claude Desktop always runs it in the right environment, without you needing standup-journal on your system PATH.

Step 4: Verify the tools are visible in Claude Desktop

mcp install edits the config file automatically, but if you ever need to check or edit it by hand (or just confirm the entry is there), the config lives under Claude Desktop's Developer settings.

  1. Open Claude Desktop.
  2. Open the app menu (Windows/Linux: hamburger menu; macOS: the app name in the system menu bar) and select Settings.
  3. Go to the Developer tab.
  4. Click Edit Config — this opens claude_desktop_config.json in your default text editor. You should see a standup-journal entry under mcpServers, written there by mcp install in Step 3.
  5. Save the file (even with no changes) and fully quit and reopen Claude Desktop to load the tools.

Once it restarts, click the + (or paperclip) icon in the chat box and select Connectors — standup-journal should be listed there, with your tools available.

Testing in Claude Desktop

Once standup-journal shows as connected under Connectors (Step 4), test it with natural chat requests. Claude decides which tool to call based on what you ask and each tool's docstring.

Try this sequence

  1. Log a completed task:

    "Log that I finished the login screen styling."

Claude should call log_task. The first time, you'll get a permission prompt, approve it. Look for an expandable tool-call block in the chat showing the tool name and arguments used. Permission Prompt

  1. Log a blocker:

    "Log that I'm blocked on the AWS deployment because permissions are broken."

  2. Check what's logged today:

    "What have I logged for today?" Log Example1 Log Example2

Should trigger get_tasks_by_date with today's date.

  1. Generate the standup report:

    "Generate my standup report."

    Should call generate_standup_report and return a bulleted, Slack-ready summary of yesterday's done items, today's in-progress items, and open blockers.

If a tool doesn't get called

Claude decides whether to call a tool based on phrasing. Try being more explicit ("use the standup journal to log...") if it's not picking it up.

Verify the data actually landed by checking the SQLite file directly:

sqlite3 ~/.standup-journal/standups.db "SELECT * FROM tasks;"

(adjust the path if you set STANDUP_DB_PATH)

If the connector won't connect or shows an error

Claude Desktop keeps a log per server:

  • macOS: ~/Library/Logs/Claude/mcp-server-standup-journal.log
  • Windows: %APPDATA%\Claude\logs\

Check there for a Python traceback if main.py failed to start.

Usually the issue is anything printed to stdout before the server starts. Stdio is the protocol channel for this transport, so a stray print() statement corrupts the connection. Use logging (which writes to stderr) instead of print() if you need to debug inside the server.

Sources: MCP docs — Connect local servers, Claude docs — MCP Apps troubleshooting, PyPi MCP Docs


Additional tools (added after Step 2)

  • update_task_status(task_id, status) — resolve a blocker or change any logged task's status.
  • log_task(..., tag?) — optional free-text category, inferred from phrasing like "tag this as X" / "log under X", or set explicitly. No predefined list — invent tags as you go. Each tag gets a consistent royal-themed emoji (👑💎🦋🕯️ etc.), assigned automatically per tag name.
  • get_tasks_by_date / get_tasks_between(start_date, end_date) — both accept an optional tag filter.
  • search_tasks(keyword) — find past entries by keyword, any date/status.
  • list_tags() — all tags currently in use, with open task counts.
  • generate_exec_summary(days=7) — quick counts (done/in progress/blocked) plus open blockers.
  • generate_weekly_summary(week_start?) — 7-day rollup for retros or 1:1s.

Talking naturally works across all of these — e.g. "Finished the login screen, still working on the API integration, tag it acme-client, and I'm blocked on AWS permissions" gets split into separate logged entries automatically.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选