Token导航 LogoToken导航

MCP Server · 办公协作

Python MCP Timesheet Assistant

一个基于MCP协议的工时表管理工具,支持创建、查询、更新、删除和导出工时表,适用于个人和团队的时间跟踪与管理。

stdio官方级别未说明来源级核验工具 6
时间跟踪Python团队协作

快速开始

作者 / 组织
ramonemaxi
提供方
ramonemaxi
运行时
Python

工具数量

6

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

0

仓库热度

收录来源

1 个

MCP World

选型结论

Python MCP Timesheet Assistant 属于办公协作类 MCP Server,公开资料标注 6 个工具,通过stdio 本地进程接入,客户端适配情况以官方文档为准,有可以直接复制的安装命令;接入前要先准备 访问 Token。

分类

办公协作

传输方式

stdio

认证方式

访问 Token

部署方式

公开资料未说明

安装与配置

安装命令

python -m venv .venv

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    准备运行环境

    stdio 服务在本地起进程,需要先装好 Python,再按安装命令拉取依赖。

  2. 2

    安装服务

    复制下面的安装命令执行;命令里带占位符的位置换成自己的密钥或路径。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 6 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

详细介绍

Importante: Este proyecto ahora es SOLO Timesheets (PF)

Se eliminó el flujo antiguo de proyectos/time_entries (list_projects, get_project, add_time_entry, update_time_entry, delete_time_entry, list_time_entries). El servidor MCP expone únicamente las tools PF:

  • create_timesheet
  • list_timesheets
  • get_timesheet
  • update_timesheet
  • delete_timesheet
  • get_timesheet_fields_info
  • export_timesheets (también guarda el archivo en la carpeta exports/)

Demo MCP (Model Context Protocol) en Python: Asistente de Registro de Horas (Timesheets)

Este proyecto demuestra un flujo completo MCP en local con un dominio de registro de horas:

  • Un servidor MCP (por stdio) que expone tools para consultar proyectos asignados y registrar/editar/eliminar/listar horas del usuario actual en una base SQLite embebida.
  • Un cliente MCP que recibe instrucciones en lenguaje natural, consulta a un modelo (LM Studio u OpenAI, elegible al inicio) y, según la respuesta, ejecuta tools del servidor para cumplir la tarea.

Requisitos:

  • Python 3.10+
  • Opcional: LM Studio instalado y sirviendo una API OpenAI‑compatible (p. ej. http://localhost:1234/v1).
  • Si se usa OpenAI: variable OPENAI_API_KEY o introducir la clave al iniciar el cliente.

Instalación

1) Crear y activar entorno virtual (recomendado):

python -m venv .venv
source .venv/bin/activate  # Linux/macOS
# o
.venv\Scripts\activate    # Windows

2) Instalar dependencias:

pip install -r requirements.txt

Estructura del proyecto

client/
  client.py          # Cliente MCP: conversa con el modelo y ejecuta tools del servidor
server/
  server.py          # Servidor MCP: define y expone tools de timesheets por stdio
  db_utils.py        # Utilidades de base de datos (init/conn)
db/
  database.db        # SQLite embebida (se crea/actualiza al iniciar el servidor)
README.md
requirements.txt

Cómo ejecutar

1) Iniciar el cliente (el cliente arranca el servidor MCP automáticamente por stdio):

python -m client.client

2) Elegir proveedor de modelo:

  • lmstudio: usa API OpenAI‑compatible local (base_url configurable).
  • openai: usa OpenAI oficial (requiere OPENAI_API_KEY).

3) Ingresar identificador de usuario (person_id): por ejemplo maxi o maca (vienen pre‑cargados como ejemplo).

4) Escribir instrucciones en lenguaje natural. Ejemplos:

  • "listá mis proyectos"
  • "agregá 2.5 horas en el Limpiar el patio el 2025-09-05 con descripción 'cortar el pasto'"
  • "mostrame mis horas del Organizar cumpleaños entre 2025-09-01 y 2025-09-10"
  • "editá la entrada de horas 3 a 1.5 horas"
  • "eliminá la entrada 3"

Escribe salir o exit para terminar.

Notas de implementación

  • Servidor MCP: se inicia por stdio. Define tools con FastMCP del SDK MCP de Python. Cada tool opera la base SQLite db/database.db en el dominio de timesheets. Las tools incluyen:

- list_projects(current_user_id, ...): lista los proyectos asignados al usuario. - get_project(current_user_id, project_id): obtiene un proyecto si el usuario está asignado. - list_time_entries(current_user_id, ...): lista horas del usuario actual (opcionalmente por proyecto y rango de fechas). - add_time_entry(current_user_id, project_id, work_date, hours, description): crea una parte de horas (valida fecha y horas; requiere asignación y descripción obligatoria). - update_time_entry(current_user_id, entry_id, [...]): actualiza una entrada del propio usuario (con validaciones). - delete_time_entry(current_user_id, entry_id): borra una entrada del propio usuario.

  • Cliente MCP: lanza y conecta el servidor por stdio, descubre las tools y corre un bucle de "agente". El cliente pide el person_id inicial y además inyecta automáticamente current_user_id en cada llamada de tool. El modelo recibe el catálogo de tools y debe responder en JSON con action = tool/final.

Reglas y seguridad

  • Control de acceso: el usuario sólo puede operar sobre sus propias horas y consultar únicamente proyectos a los que está asignado (tabla assignments).
  • Validaciones: work_date debe ser YYYY-MM-DD, hours debe ser numérico en (0, 24].
  • No hay tools para crear/editar proyectos; sólo se pueden consultar.

Comentarios clave (en el código)

  • En server/server.py hay comentarios sobre cómo se inicializa un servidor MCP por stdio y cómo registrar tools.
  • En client/client.py se explica cómo se arranca el servidor MCP, se establece la sesión y cómo el cliente orquesta al modelo y a las tools (inyectando current_user_id).

Troubleshooting

  • Si LM Studio no responde, verifica que el servidor HTTP esté activo, el modelo cargado y la base_url correcta.
  • Si usas OpenAI, asegura que OPENAI_API_KEY esté configurada o introdúcela cuando lo pida el cliente.
  • En Windows, podría ser necesario usar python o py para lanzar el módulo.

Variables de entorno (opcional)

  • LMSTUDIO_BASE_URL: URL de la API OpenAI‑compatible de LM Studio. Si no se define, el cliente te pedirá la URL y podrás ajustarla (por ejemplo, http://localhost:1234/v1 según tu instalación de LM Studio).
  • LMSTUDIO_MODEL: nombre del modelo en LM Studio. Por defecto, el cliente propone un valor configurable.
  • LMSTUDIO_API_KEY: token (string) requerido por algunos clientes HTTP. El cliente propone un valor por defecto.
  • OPENAI_API_KEY: clave para OpenAI si eliges el proveedor 'openai'.
  • OPENAI_MODEL: modelo de OpenAI a usar. Por defecto "gpt-4o-mini" (puedes sobrescribirlo por variable).

Comportamiento del cliente (anti‑invención de datos)

Para la tool add_time_entry el cliente aplica validaciones adicionales y no completa datos por su cuenta:

  • Son obligatorios: project_id, work_date (YYYY‑MM‑DD), hours y description.
  • El cliente NO asume valores por defecto (no usa "hoy", ni inventa horas o descripciones).
  • En el texto de tu instrucción debes mencionar explícitamente:

- La fecha en formato YYYY‑MM‑DD. - La cantidad de horas con unidades (h/hs/hora/horas), p. ej. "2 horas" o "1.5 h". - La descripción (tal como la quieres registrar).

  • Si falta cualquiera de esos datos en el mensaje del usuario, el cliente no llamará a la tool y te pedirá aclararlos.

Pruebas rápidas

Puedes ejecutar algunos scripts de smoke test:

python -m client.smoke_test
python -m client.smoke_test_timesheets
python -m client.smoke_test_missing_fields

Tips de troubleshooting adicionales

  • Si al listar proyectos no ves resultados, verifica el person_id que ingresaste: la base de ejemplo incluye usuarios como "alice" y "bob" con asignaciones. Otros (p. ej., "marcelo") no tienen proyectos por defecto.
  • Si quieres re‑inicializar los datos de ejemplo, elimina el archivo db/database.db y vuelve a ejecutar: se recrearán tablas y datos seed automáticamente.

Nuevas tools PF (Plantilla PF_PlantillaRegTiempos.csv)

El servidor ahora expone herramientas para cargar tareas diarias y exportarlas en el formato exacto de PF_PlantillaRegTiempos.csv.

Tools MCP nuevas:

  • create_timesheet(nombre_personal?, legajo_personal, fecha, cliente, nombre_cliente?, contrato_division, nombre_division?, contrato_tipo, nombre_tipo?, contrato_numero, nombre_contrato?, tarea, nombre_tarea?, tiempo, observaciones?, categoria?)

- Obligatorios: legajo_personal, fecha, cliente, contrato_division, contrato_tipo, contrato_numero, tarea, tiempo. - Formatos aceptados: - fecha: "YYYY-MM-DD", "DD/MM/YYYY" o timestamp. - tiempo: "HH:MM", minutos enteros (p. ej. 90), horas decimales (1.5 u "1.5h").

  • list_timesheets(date_from?, date_to?, legajo?, limit?, offset?)
  • export_timesheets(date_from?, date_to?, legajo?) -> { filename, content, count }

- content es el CSV (UTF-8, sin BOM) con: - Las primeras 10 líneas de encabezado idénticas a la plantilla del repo. - Filas de datos que comienzan con "D;" seguidas de 16 campos en el orden exacto, separados por ";".

Ejemplos de uso (vía cliente MCP interactivo):

  • "crear 3 timesheets con legajo MAXI, fecha 2025-01-21, cliente 1, división IOT, tipo 7, número 1456, tarea ATC, tiempo 01:30"
  • "crear timesheets con legajo RAMON, para 2025-09-23, cliente 1, división IOT, tipo 7, número 1456, tarea UDP, tiempo 8"
  • "exportar timesheets del 2025-01-01 al 2025-01-31 para legajo BRAIAN"

Nueva prueba de humo PF

Ejecuta la prueba que inserta registros y valida la exportación:

python -m client.smoke_test_pf_timesheets

Esto generará una exportación en memoria y verificará que:

  • Las 10 primeras líneas coincidan exactamente con la plantilla del repo.
  • Cada fila de datos empiece con "D;" y tenga 16 separadores ";" (17 partes al dividir por ";").
  • Los formatos de FECHA y TIEMPO sean DD/MM/AAAA y HH:MM respectivamente.

Campos de Timesheet (obligatorios y opcionales)

  • Obligatorios: legajo_personal, fecha, cliente, contrato_division, contrato_tipo, contrato_numero, tarea, tiempo.
  • Opcionales: nombre_personal, nombre_cliente, nombre_division, nombre_tipo, nombre_contrato, nombre_tarea, observaciones, categoria.
  • Formatos:

- fecha: "YYYY-MM-DD", "DD/MM/YYYY" o timestamp; se almacena como YYYY-MM-DD y se exporta como DD/MM/AAAA. - tiempo: "HH:MM", minutos enteros (p. ej. 90) u horas decimales (1.5 / "1.5h"); se almacena en minutos (tiempo_minutos) y se exporta como HH:MM.

Puedes consultar esta información en tiempo de ejecución con la tool MCP get_timesheet_fields_info.

Exportación a CSV (PF)

La tool export_timesheets ahora también guarda el archivo generado en la carpeta exports/ del proyecto y retorna saved_path junto con filename, content y count. El contenido respeta la plantilla PF_PlantillaRegTiempos.csv (encabezados y filas "D;" con 16 campos separados por punto y coma).

工具与能力

工具数量

6

资源数量

0

提示词数量

0

能力标签

工时管理Python本地部署时间跟踪团队协作SQLite数据库MCP协议

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

消息与邮件处理

把群消息、邮件接进助手,按规则汇总和回复。

工单与任务流转

在对话里建单、改状态,少切换系统。

团队信息同步

把会议纪要和文档更新同步到协作工具。

选择建议

值得选的地方

  • 只提供 6 个工具,职责集中,接入后不容易误操作。
  • 有现成的安装命令,不用自己找入口,照着跑就能起服务。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

  • stdio 方式要求本地装好 Python,换机器要重新装一遍。
  • 需要自备访问 Token,没有凭据没法直接试。
  • 公开摘要偏短,具体能力和限制要回到仓库确认。

更适合

  • 需要在办公协作场景里让模型直接调用外部能力的人。
  • 想先快速试一下、能接受在本地跑服务的人。

不太适合

  • 完全不想在本地装环境的人。
  • 暂时拿不到访问 Token的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
Python MCP Timesheet Assistant

MCP World · 本页

6stdio有1 个2026-05-17
Karakeep MCP

MCP World

0未说明未标注1 个2026-05-17
Excalidraw MCP App

MCP World

0未说明未标注1 个2026-05-17
Slack MCP

MCP.so

18stdio有4 个2026-05-17
HiveChat MCP

MCP World

0HTTP未标注2 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

Python MCP Timesheet Assistant 怎么安装?

公开资料给出的安装命令是 python -m venv .venv,运行环境为 Python。装完后按客户端要求写进 MCP 配置,重启客户端生效。

Python MCP Timesheet Assistant 怎么在 Claude Desktop、Cursor 里配置?

它是stdio 本地进程,客户端配置里要写启动命令和参数,运行环境是 Python;保存后完全退出客户端再打开,配置才会生效。

Python MCP Timesheet Assistant 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

Python MCP Timesheet Assistant 需要 API Key 吗?

公开资料标注的认证方式是访问 Token,也就是要先拿到凭据才能连上;凭据只填在自己本地的配置里,不要写进公开仓库。

Python MCP Timesheet Assistant 支持哪些客户端?

公开资料没有标注具体客户端;能配置本地 MCP 命令的客户端都能接,配置方式参照官方文档。

来源信息

继续浏览同类 MCP