MCP 서버 레퍼런스
Fecit MCP 서버의 전체 기술 스펙 — 연결, 인증, 그리고 MCP 클라이언트가 호출할 수 있는57개 tool 전부.
연결
https://fecit.vaudium.net/api/mcp- 프로토콜
- Model Context Protocol (MCP)
- 전송
- Streamable HTTP (stateless, JSON 응답)
- 스코프
fecit
인증
서버는 OAuth 2.1 인증 서버입니다. 원격 MCP를 지원하는 클라이언트는 자동으로 발견·연결하며, 수동 키 관리가 필요 없습니다.
- 동적 클라이언트 등록 (RFC 7591) —
/api/mcp/register - Authorization Code + PKCE (S256), refresh 토큰 지원
- 메타데이터 발견:
/.well-known/oauth-protected-resource,/.well-known/oauth-authorization-server(path-aware) - 로그인은 Fecit 동의 페이지에서 진행 (Google·Apple·아이디/비밀번호) — 비밀번호는 클라이언트에 전달되지 않습니다
- access 토큰 수명 14일, refresh 토큰 90일; 커넥터 제거로 언제든 폐기
데이터 접근
- tool은 본인 데이터에만 접근하며, Fecit 앱과 동일한 권한을 따릅니다.
- 각 tool은 기존 Fecit API 엔드포인트를 재사용 — 별도의 권한 표면이 없습니다.
- tool은 읽기·쓰기·파괴적으로 표시되어, 클라이언트가 확인 흐름을 걸 수 있습니다.
Tools (57)
param* = 필수tool 설명은 서버가 제공하는 원문(영어)입니다.
Tasks
list_tasks읽기List the user's task records (execution instances). Filter by keyword, state, date range (ISO 8601), or project. Returns brief entries — use get_task for full detail.
keyword: stringstate: registered | started | completed | cancelledfrom_date: stringto_date: stringproject_id: stringlimit: integerskip: integerget_task읽기Get a task record in full detail, including all structured writing fields (description, target, expectation, obstacle, stakes, result, retrospect), schedule, state, and satisfaction.
task_id*: stringcreate_task쓰기Create a task record. priority/difficulty 1-5, dates ISO 8601, project_id links it to a goal. Title only — add a description later via update_task_writing only if the user dictates one. reminder_minutes_before (needs start_date): 0/5/15/30/60/1440; omit = none.
start_date: stringend_date: stringduration_seconds: integerpriority: integerdifficulty: integerproject_id: stringreminder_minutes_before: integerupdate_task쓰기Change a task record's fields after creation — pass only what changes. start_date/end_date set the schedule (ISO 8601); reminder_minutes_before is 0/5/15/30/60/1440 before start (needs a start_date); satisfaction 1-5 rates a completed task; priority/difficulty 1-5; point_color is the star color; address is a place name; instruction is how-to guidance; assigned_to is an achiever id (project tasks only); duration_seconds is planned duration. (To change state use set_task_state; for writing spaces target/result/… use update_task_writing.)
task_id*: stringstart_date: stringend_date: stringreminder_minutes_before: integersatisfaction: integerpriority: integerdifficulty: integerpoint_color: peach | salmon | scarlet | maple | apricot | lemon | lime | avocado | mint | seafoam | water | sky | peacock | indigo | violet | lavender | arctic | steel | charcoal | midnightaddress: stringinstruction: stringassigned_to: stringduration_seconds: integerset_task_state쓰기Change a task record's state (registered → started → completed / cancelled).
task_id*: stringstate*: registered | started | completed | cancelledset_focused_task쓰기Set (or unset) the user's single focused task — the one task to concentrate on now. Focusing a task automatically unfocuses any previously focused task.
task_id*: stringis_focused: booleanupdate_task_writing쓰기Write one of a task's structured writing spaces (Fecit core). Fields: target=current situation; expectation=desired change; obstacle=what's in the way; stakes=cost if it fails; result=what happened; retrospect=lessons; also description. Plain text with newlines OK.
task_id*: stringfield*: description | target | expectation | obstacle | stakes | result | retrospectvalue*: stringadd_subtasks쓰기Split a big task into a sequential chain of subtasks linked in order (step 1 → 2 → …). Use when a task feels too big and the user wants concrete next steps. Provide 2-5 SHORT ordered action titles (never numbered in the text); never more than 5. Steps append after existing ones; don't over-split a simple to-do.
task_id*: stringtitles*: arraydelete_task파괴적Permanently delete a task record. This cannot be undone.
task_id*: stringTask preparation & rules
add_preparation_item쓰기Add a preparation item to a task record (what's needed to do it). materials/tools take quantity+unit, venue takes address, personnel takes specialty, qualification takes issuer; cost is free text. Existing items are in get_task (each has an `order`).
task_id*: stringcategory*: materials | tools | venue | personnel | qualificationdescription: stringquantity: stringunit: stringaddress: stringspecialty: stringissuer: stringcost: stringremove_preparation_item파괴적Remove a preparation item from a task record by its `order` (from get_task).
task_id*: stringcategory*: materials | tools | venue | personnel | qualificationorder*: integeradd_response_rule쓰기Add a response rule (implementation intention) to a task record — an if-then plan: when `situation` happens, do `response`. Existing rules are visible in get_task (each has an `order`).
task_id*: stringsituation*: stringresponse*: stringremove_response_rule파괴적Remove a response rule from a task record by its `order` (from get_task).
task_id*: stringorder*: integerTask templates
search_task_templates읽기Search the user's task templates (reusable blueprints in the Library).
keyword: stringlimit: integerskip: integerget_task_template읽기Get a task template in full detail.
template_id*: stringcreate_task_from_template쓰기Instantiate a task record from a template, optionally scheduling it.
template_id*: stringstart_date: stringend_date: stringProjects (Goals)
list_projects읽기List the user's projects. A project IS a goal (not a folder), carrying target/expectation/result/retrospect.
state: registered | started | completedkeyword: stringlimit: integerskip: integerget_project읽기Get a project (goal) in full detail: goal-definition fields (target, expectation, obstacle, stakes), outcome fields (result, retrospect, satisfaction), state, dates, and milestones.
project_id*: stringcreate_project쓰기Create a new project (goal). abbreviation is a short code (e.g. 'FIT' for a fitness goal) used in task codes.
abbreviation*: stringupdate_project_goal쓰기Write into a project's goal-definition or outcome fields. target: the concrete goal / expectation: anticipated outcome / obstacle: foreseen blockers / stakes: why it matters / result: what actually happened / retrospect: lessons learned.
project_id*: stringfield*: description | target | expectation | obstacle | stakes | result | retrospectvalue*: stringset_project_state쓰기Change a project's state.
project_id*: stringstate*: registered | started | completeddelete_project파괴적Permanently delete a project (goal) along with its goal fields, journal, and milestones. This cannot be undone.
project_id*: stringadd_project_journal쓰기Add a journal entry to a project — an in-progress checkpoint note on how the goal is going.
project_id*: stringcontent*: stringlist_project_journal읽기List a project's journal entries (newest first).
project_id*: stringlimit: integerskip: integeradd_project_milestone쓰기Add a milestone (intermediate goal checkpoint) to a project. Milestones deliberately do not link to tasks.
project_id*: stringtarget_date: stringset_milestone_state쓰기Mark a project milestone as achieved (or back to pending). Get milestone_key from get_project's milestones array.
project_id*: stringmilestone_key*: stringstate*: pending | achievedget_project_activity읽기Get a project's activity feed — who did what (task completions, journal entries, member joins, state changes, milestone achievements). Useful for shared projects.
project_id*: stringlimit: integercursor: stringMemos
search_memos읽기Search the user's memo records by keyword and/or project.
keyword: stringproject_id: stringlimit: integerskip: integerget_memo읽기Get a memo record in full, including its content.
memo_id*: stringcreate_memo쓰기Create a memo record. Plain text content with newlines is accepted.
content: stringproject_id: stringupdate_memo_content쓰기Replace a memo's content. Plain text with newlines is accepted.
memo_id*: stringcontent*: stringdelete_memo파괴적Permanently delete a memo record. This cannot be undone.
memo_id*: stringReviews
list_daily_reviews읽기List the user's daily reviews in a date range (newest first).
from_date: stringto_date: stringwrite_daily_review쓰기Create or update the daily review for a given date (ISO 8601, the day being reviewed). satisfaction is 1-5.
date*: stringdescription: stringsatisfaction: integerwrite_weekly_review쓰기Create or update the weekly review for the week starting at week_start (ISO 8601 datetime — local midnight of the user's week start day, as provided by the weekly-review prompt or list_weekly_reviews). satisfaction is 1-5.
week_start*: stringdescription: stringsatisfaction: integerLabels
list_labels읽기List the user's labels (color-coded tags for tasks/memos). Filter by keyword or state.
keyword: stringstate: active | archivedlimit: integerskip: integercreate_label쓰기Create a label (color-coded tag). point_color is one of the 20 Fecit colors.
name*: stringpoint_color: peach | salmon | scarlet | maple | apricot | lemon | lime | avocado | mint | seafoam | water | sky | peacock | indigo | violet | lavender | arctic | steel | charcoal | midnightdescription: stringset_label_state쓰기Archive a label (hide it) or reactivate it.
label_id*: stringstate*: active | archiveddelete_label파괴적Permanently delete a label and its links to tasks/memos.
label_id*: stringlink_label쓰기Attach a label to a task record OR a memo record. Provide exactly one of task_id / memo_id.
label_id*: stringtask_id: stringmemo_id: stringunlink_label파괴적Detach a label from a task/memo by its label-link id (get the id from list_label_links).
label_link_id*: stringlist_label_links읽기List the label links on a task record OR a memo record (provide exactly one). Each entry has its link id (for unlink_label) and the nested label.
task_id: stringmemo_id: stringFolders
list_folders읽기List folders for one of the four item trees (task/memo × record/template). Folders are exclusive containers, separate from labels and projects. scope='project' needs project_id.
target_type*: task_record | memo_record | task_template | memo_templatescope: personal | projectproject_id: stringcreate_folder쓰기Create a folder in one of the four item trees. Nest it under parent_folder_id if given. scope='project' needs project_id.
name*: stringtarget_type*: task_record | memo_record | task_template | memo_templatescope: personal | projectparent_folder_id: stringproject_id: stringupdate_folder쓰기Rename a folder and/or move it under another parent folder. Only the fields you pass change.
folder_id*: stringname: stringparent_folder_id: stringdelete_folder파괴적Delete a folder and its subfolders (cascade). Items inside are NOT deleted — they just leave the folder.
folder_id*: stringmove_item_to_folder쓰기Move a task/memo (record or template) into a folder, or remove it from its folder (omit folder_id). item_type selects which of the four trees the folder belongs to.
item_type*: task_record | memo_record | task_template | memo_templateitem_id*: stringfolder_id: stringscope: personal | projectRoutines
list_routines읽기List the user's routines (recurring task generators). Filter by period (daily/weekly) and whether they're archived. With no period, returns both daily and weekly.
period: daily | weeklyarchived: booleanproject_id: stringlimit: integerskip: integerget_routine읽기Get a single routine in full detail.
routine_id*: stringcreate_routine쓰기Create a routine that spawns a task on a schedule. period='daily'/'weekly'. start_date (ISO 8601) sets when it begins and the time of day; for 'weekly' give weekday. Base it on a task_template_id or give a title. end_date optionally stops it; reminder_minutes_before reminds on each spawned task.
period*: daily | weeklystart_date*: stringdescription: stringweekday: mon | tue | wed | thu | fri | sat | suntask_template_id: stringreminder_minutes_before: integerend_date: stringproject_id: stringdelete_routine파괴적Permanently delete a routine. Tasks it already spawned are not affected.
routine_id*: stringWeb links
add_web_link쓰기Attach a web link (URL) to a task or memo (record or template). item_type selects which.
item_type*: task_record | memo_record | task_template | memo_templateitem_id*: stringurl*: stringdescription: stringremove_web_link파괴적Remove a web link from a task/memo by its order index (see the item's web_links list).
item_type*: task_record | memo_record | task_template | memo_templateitem_id*: stringorder*: integerInsights
get_streak읽기Get the user's completion streak: current_streak, longest_streak, completed_today, and streak start/last-completion dates. Use to recognize and celebrate their momentum.
get_achievements읽기List the user's achievements (badges) with progress — each has title, description, threshold, progress, and achieved_at (null if not yet earned). Use to acknowledge milestones.
get_dana_balance읽기Get the user's current Dana balance (Fecit's reward points).
Utility
current_datetime읽기Current datetime in the user's local timezone. Call before interpreting relative dates ('today'/'tonight'/'tomorrow'). When passing a datetime to other tools, output local wall-clock time (e.g. 2026-06-13T21:00:00); the system converts it to the correct instant.
연결 방법을 찾으시나요? Claude 연결 (MCP)를 보세요.