Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
제작자가 쓴 설명(영어 원문)
MCP server for the Keeping time-tracking API
이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.
이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.
쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.
필요한 것
어떤 앱을 쓰세요?
위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.
Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요
{
"mcpServers": {
"keeping": {
"command": "npx",
"args": [
"-y",
"keeping-mcp"
]
}
}
}터미널에서 이 명령어를 실행하세요
claude mcp add keeping -- npx -y keeping-mcp프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요
{
"mcpServers": {
"keeping": {
"command": "npx",
"args": [
"-y",
"keeping-mcp"
]
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
프로젝트의 .vscode/mcp.json에 붙여 넣으세요
{
"servers": {
"keeping": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"keeping-mcp"
]
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.
선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.
이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 6일 점검
레지스트리 이름이 GitHub 계정 red-square-software 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요
내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요
내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
레지스트리에 필수 키가 나와 있지 않아요. 다만 처음 쓸 때 로그인을 요구하는 서버도 있어요.
내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).
GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(1.0.1)은 5개월 전 레지스트리에 올라왔어요.
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Node.js도 있어야 해요.
같은 카테고리에는: Spec Driven Development, Remote Desktop Commander, Fomu MCP
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Kenya government form guides: checklists, draft letters, eCitizen, Huduma, timelines. Sample data.
제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.
Open-source Model Context Protocol (MCP) server that exposes the Keeping (api.keeping.nl) time-tracking API as tools an AI coding assistant can call. Built for solo developers who use Claude Code (or any MCP-capable client) and want their billable hours logged into Keeping at the end of a session instead of typed in by hand, while keeping Keeping's existing native Jortt invoicing integration intact. Every write tool is dry-run by default — your hours never reach Keeping until you explicitly confirm.
## ⚠ Writes are dry-run BY DEFAULT
Every write tool (
keeping_add_entry,keeping_update_entry,keeping_delete_entry,
keeping_start_timer,keeping_stop_timer,keeping_resume_timer) returns a
preview unless you pass
confirm: truein the tool call.
Setting
KEEPING_REQUIRE_CONFIRM=falsein your environment disables this gate.
Writes then happen on the first call — there is no second chance.
Recommendation: never disable this gate unless you are running
the server in a non-interactive automation context and have explicitly accepted
the loss of the confirmation step.
No install required — npx fetches the package on first run:
KEEPING_TOKEN=kp_live_your_token_here npx -y keeping-mcp
The server speaks the MCP stdio protocol and stays in the foreground waiting for JSON-RPC frames on stdin — exit with Ctrl+C. In practice you do not run it by hand; an MCP-capable client (Claude Code, Claude Desktop, Cursor, etc.) spawns it for you using the config snippets below.
Optional — install globally so keeping-mcp is on your PATH:
npm install -g keeping-mcp
KEEPING_TOKEN=kp_live_your_token_here keeping-mcp
Requires Node.js >=22. The package is published to npmjs.com/package/keeping-mcp with sigstore provenance attestations.
Add to %APPDATA%\Claude\claude_desktop_config.json or to your project's .mcp.json file.
{
"mcpServers": { "keeping-mcp": { "command": "cmd", "args": ["/c", "npx", "-y", "keeping-mcp"], "env": { "KEEPING_TOKEN": "kp_live_your_token_here" } } } }
The cmd /c wrapper is required on Windows — npx resolves to npx.cmd, and Claude Code's process spawn does not search PATHEXT extensions (see anthropics/claude-code#58510).
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or ~/.config/Claude/claude_desktop_config.json (Linux), or your project's .mcp.json.
{
"mcpServers": { "keeping-mcp": { "command": "npx", "args": ["-y", "keeping-mcp"], "env": { "KEEPING_TOKEN": "kp_live_your_token_here" } } } }
Any MCP-capable client that supports the stdio transport works. The server is started by npx -y keeping-mcp and reads KEEPING_TOKEN from its environment. Discoverable in the MCP Registry as io.github.Red-Square-Software/keeping-mcp.
KEEPING_TOKEN in your shell environment OR in your Claude Code config env block.The token has full read+write access to your time entries — treat it like a password. Never commit it to git, never paste it into a chat, never read it back from a tool response (keeping-mcp never echoes it).
| Variable | Required | Default | Purpose |
|---|---|---|---|
KEEPING_TOKEN | yes | — | Keeping personal access token (created via the section above). |
KEEPING_REQUIRE_CONFIRM | no | true | When true, write tools return a preview unless called with confirm: true. Setting to false disables the gate entirely — see warning below. |
KEEPING_ORG_ID | no | — | Pin all calls to one organisation id. When unset and the token has access to multiple orgs, write tools require explicit organisation_id input per call. |
KEEPING_LOG_LEVEL | no | info | Server stderr log verbosity. Accepts: debug, info, warn, error. |
## ⚠ Writes are dry-run BY DEFAULT
Every write tool (
keeping_add_entry,keeping_update_entry,keeping_delete_entry,
keeping_start_timer,keeping_stop_timer,keeping_resume_timer) returns a
preview unless you pass
confirm: truein the tool call.
Setting
KEEPING_REQUIRE_CONFIRM=falsein your environment disables this gate.
Writes then happen on the first call — there is no second chance.
Recommendation: never disable this gate unless you are running
the server in a non-interactive automation context and have explicitly accepted
the loss of the confirmation step.
keeping-mcp registers 12 tools when the server starts. Read tools (keeping_me, keeping_organisations, keeping_projects, keeping_tasks, keeping_list_entries, keeping_timer_status) call Keeping's API without confirmation. Write tools (keeping_add_entry, keeping_update_entry, keeping_delete_entry, keeping_start_timer, keeping_stop_timer, keeping_resume_timer) return a dry-run preview unless invoked with confirm: true (default behavior controlled by KEEPING_REQUIRE_CONFIRM).
Write tools follow a two-step pattern: propose-then-confirm. The first call returns a preview of the HTTP request the server would send; the second call (with confirm: true) actually sends it.
Step 1 — preview (no confirm, no API call made). Illustrative; actual field names match Keeping's OpenAPI (see https://developer.keeping.nl).
{
"tool": "keeping_add_entry", "input": { "description": "Phase 4 release prep", "hours": 1.5, "project_id": 123 }, "response": { "would_post": { "method": "POST", "url": "https://api.keeping.nl/v1/456/time-entries", "body": { "description": "Phase 4 release prep", "hours": 1.5, "project_id": 123, "date": "2026-06-12", "purpose": "work" } } } }
Step 2 — confirm (confirm: true added, request is sent to Keeping). Illustrative; actual response shape mirrors Keeping's OpenAPI.
{
"tool": "keeping_add_entry", "input": { "description": "Phase 4 release prep", "hours": 1.5, "project_id": 123, "confirm": true }, "response": { "id": 98765, "day": "2026-06-12", "hours": 1.5, "description": "Phase 4 release prep", "project_id": 123, "purpose": "work" } }
Releases are published via GitHub Actions OIDC trusted publishing (no long-lived npm tokens). Every release carries an npm provenance attestation linking the published tarball to a specific commit in this repository.
npm audit signatures
npm view keeping-mcp --json | jq '.dist.attestations'
git clone https://github.com/red-square-software/keeping-mcp.git
cd keeping-mcp npm ci npm test npm run build KEEPING_TOKEN=kp_live_your_token_here node dist/bin/keeping-mcp.js
All server output goes to stderr — stdout is reserved for MCP JSON-RPC framing. Never write diagnostic output to stdout; use console.error for logging.
MIT — see LICENSE.