Intentions MCP Server
Personalized timing intelligence for AI agents — ask 'should I do X on this date?'
사용해야 할까요
품질 및 안전성
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"intentions-mcp": {
"url": "https://mcp.intentions.me/mcp"
}
}
}원격 엔드포인트
https://mcp.intentions.me/mcpstreamable-http할 수 있는 일
도구 목록
도구 (7)
🟢intentions_ask_day(question, targetDate, compareDates, dateRange, category, ...)
Call when the user asks about timing a decision for a specific date, or wants to pick the best day from a multi-day window. Covers trip dates, launch days, interview/meeting days, publish/send dates, travel, negotiation windows, relationship moments — any "when to X" question where the answer is a date ("should I X on April 23", "best day this month to Y", "下周四怎么样"). Modes: single date, compare up to 5 dates, or scan a range up to 31 days. Returns score (0-100), verdict, per-layer year/month/day breakdown (alerts + dimension signals), element breakdown, adverse alerts. For multi-month windows use `intentions_ask_month`; for hour precision use `intentions_ask_hour`.
입력 스키마
{
"type": "object",
"properties": {
"question": {
"type": "string",
"description": "The decision or action being considered"
},
"targetDate": {
"type": "string",
"description": "YYYY-MM-DD. Default: today"
},
"compareDates": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 4,
"description": "Up to 4 additional YYYY-MM-DD dates to compare against targetDate"
},
"dateRange": {
"type": "object",
"properties": {
"start": {
"type": "string"
},
"end": {
"type": "string"
}
},
"description": "Find best dates in range. Max 31 days — use ask_month for longer windows."
},
"category": {
"type": "string",
"enum": [
"career",
"relationship",
"health",
"finance",
"travel",
"general"
],
"description": "Decision domain — tunes the analysis weighting. Default: general."
},
"birthInfo": {
"type": "object",
"description": "Optional override. If provided, all 6 fields required: { year, month, day, hour, minute, gender } — use null for unknown hour/minute/gender. Omit entirely to use the stored profile."
}
},
"required": [
"question"
]
}🟢intentions_ask_hour(question, targetDate, targetHour, compareHours, bestInDay, ...)
Call when the user asks about timing within a specific day — best hour to act, morning vs afternoon, when during the day ("best time today to X", "morning or afternoon for Y", "几点去见面好"). Use for interview slots, meeting times, send/publish times, departure times, workout windows. Pro subscription required; on the free tier this returns a `subscription_required` error whose payload suggests `intentions_ask_day` for day-level analysis or `intentions_energy_chart` with period `weekly` / `yearly` for a visual overview (the caller LLM decides whether to retry). Modes: single (date+hour), compare up to 5 hour-pairs, or scan all 12 two-hour blocks of one day. Accepts any clock hour 0..23; internally mapped to the containing 2-hour block midpoint (0/2/4/…/22). 23:00–23:59 automatically rolls the effective day forward by one. Every output entry includes a `window { start, end }` local wall-clock span (`YYYY-MM-DDTHH:MM`, no timezone offset — interpret in the same frame as the input hour). Always cite this when presenting the time. Returns score, verdict, adverse alerts.
입력 스키마
{
"type": "object",
"properties": {
"question": {
"type": "string",
"description": "The decision or action being considered"
},
"targetDate": {
"type": "string",
"description": "YYYY-MM-DD. Default: today (single mode only)"
},
"targetHour": {
"type": "integer",
"minimum": 0,
"maximum": 23,
"description": "Clock hour 0..23. Auto-rounded to the containing 2-hour block. 23:XX rolls the effective day forward by one."
},
"compareHours": {
"type": "array",
"maxItems": 4,
"items": {
"type": "object",
"properties": {
"date": {
"type": "string"
},
"hour": {
"type": "integer",
"minimum": 0,
"maximum": 23
}
},
"required": [
"date",
"hour"
]
},
"description": "Up to 4 additional (date, clock-hour 0..23) pairs to compare against targetDate+targetHour. Pairs that resolve to the same 2-hour block (e.g. hours 7 and 8 on the same date) are deduplicated — submit distinct blocks if you want distinct results."
},
"bestInDay": {
"type": "object",
"properties": {
"date": {
"type": "string"
},
"top": {
"type": "integer",
"minimum": 1,
"maximum": 12,
"description": "Number of top hours to return (default 5)"
}
},
"required": [
"date"
],
"description": "Find best hours within a single day. Each entry carries an explicit `window` span."
},
"category": {
"type": "string",
"enum": [
"career",
"relationship",
"health",
"finance",
"travel",
"general"
],
"description": "Decision domain — tunes the analysis weighting. Default: general."
},
"birthInfo": {
"type": "object",
"description": "Optional override. If provided, all 6 fields required: { year, month, day, hour, minute, gender } — use null for unknown hour/minute/gender. Omit entirely to use the stored profile."
}
},
"required": [
"question"
]
}🟢intentions_ask_year(question, targetYear, category, birthInfo)
Call when the user asks about a full calendar year as a whole ("how is 2026", "今年怎么样", "what's next year like overall"). Returns year-level score, verdict, adverse alerts, and element dimensions. For month precision use `intentions_ask_month`; for day use `intentions_ask_day`. Window: currentYear-1 to currentYear+1 only.
입력 스키마
{
"type": "object",
"properties": {
"question": {
"type": "string",
"description": "The decision or action being considered"
},
"targetYear": {
"type": "integer",
"description": "YYYY. Default: current year. Allowed: currentYear-1 .. currentYear+1."
},
"category": {
"type": "string",
"enum": [
"career",
"relationship",
"health",
"finance",
"travel",
"general"
],
"description": "Decision domain — tunes the analysis weighting. Default: general."
},
"birthInfo": {
"type": "object",
"description": "Optional override. If provided, all 6 fields required: { year, month, day, hour, minute, gender } — use null for unknown hour/minute/gender. Omit entirely to use the stored profile."
}
},
"required": [
"question"
]
}🟢intentions_ask_month(question, targetMonth, compareMonths, monthRange, category, ...)
Call when the user asks at month granularity or wants the best month from a multi-month window ("how is next month", "best month in 2026 to X", "下个月适合吗"). Use for trip-month selection, launch months, content-calendar planning, quarterly/annual decisions. Modes: single month, compare up to 5 months, or scan up to 12 months (returns top 5). Returns month score, element breakdown, adverse alerts. For day precision near the 4th–6th of a month use `intentions_ask_day`; for hour precision use `intentions_ask_hour`.
입력 스키마
{
"type": "object",
"properties": {
"question": {
"type": "string",
"description": "The decision or action being considered"
},
"targetMonth": {
"type": "string",
"description": "YYYY-MM. Default: current month"
},
"compareMonths": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 4,
"description": "Up to 4 additional YYYY-MM months to compare against targetMonth"
},
"monthRange": {
"type": "object",
"properties": {
"start": {
"type": "string"
},
"end": {
"type": "string"
}
},
"description": "Find best months in range. Max 12 months. Inclusive on both ends."
},
"category": {
"type": "string",
"enum": [
"career",
"relationship",
"health",
"finance",
"travel",
"general"
],
"description": "Decision domain — tunes the analysis weighting. Default: general."
},
"birthInfo": {
"type": "object",
"description": "Optional override. If provided, all 6 fields required: { year, month, day, hour, minute, gender } — use null for unknown hour/minute/gender. Omit entirely to use the stored profile."
}
},
"required": [
"question"
]
}🟢intentions_energy_chart(period, date, birthInfo)
Call when the user wants a visual overview rather than a narrative answer ("show me this week", "chart for today", "next 12 months", "看一下图"). Returns an ASCII chart: `hourly` = 12 two-hour blocks of one day, `weekly` = 7 days, `yearly` = 12 months. The `hourly` mode emits the same hour-resolution scores as `intentions_ask_hour` and is gated behind the Pro subscription on the same terms — on the free tier it returns a `subscription_required` error whose payload suggests `weekly` / `yearly` chart modes or `intentions_ask_day` as alternatives. `weekly` and `yearly` are always free.
입력 스키마
{
"type": "object",
"properties": {
"period": {
"type": "string",
"enum": [
"hourly",
"weekly",
"yearly"
],
"description": "Which chart to render: `hourly` = 12 two-hour blocks of one day (Pro-gated), `weekly` = 7 days, `yearly` = 12 months."
},
"date": {
"type": "string",
"description": "YYYY-MM-DD. Default: today"
},
"birthInfo": {
"type": "object",
"description": "Optional override. If provided, all 6 fields required: { year, month, day, hour, minute, gender } — use null for unknown hour/minute/gender. Omit to use the stored profile."
}
},
"required": [
"period"
]
}🟡intentions_set_birth_info(year, month, day, hour, minute, ...)
Call once to register the user's birth date/time/gender. Each call is a complete replacement — all 6 fields must be supplied. For fields the user does not know or prefers not to share, pass `null` explicitly (e.g. `hour: null` for unknown birth time, `gender: null` for unspecified). To update just one field, first call `intentions_get_profile` to fetch the current values, merge the user's new input, then call this tool with the full merged payload. Identity-changing edits (year/month/day/hour/gender) are limited to 3 per calendar month; adding precision (e.g. filling in a previously-null hour) is always free. Returns the element profile.
입력 스키마
{
"type": "object",
"properties": {
"year": {
"type": "integer",
"minimum": 1920,
"maximum": 2030,
"description": "Birth year, 1920–2030."
},
"month": {
"type": "integer",
"minimum": 1,
"maximum": 12,
"description": "Birth month, 1–12."
},
"day": {
"type": "integer",
"minimum": 1,
"maximum": 31,
"description": "Birth day of month, 1–31."
},
"hour": {
"type": [
"integer",
"null"
],
"minimum": 0,
"maximum": 23,
"description": "null if unknown"
},
"minute": {
"type": [
"integer",
"null"
],
"minimum": 0,
"maximum": 59,
"description": "null if unknown; requires hour to also be non-null"
},
"gender": {
"type": [
"string",
"null"
],
"enum": [
"M",
"F",
null
],
"description": "null if unspecified"
}
},
"required": [
"year",
"month",
"day",
"hour",
"minute",
"gender"
]
}🟢intentions_get_profile
Fetch the user's currently stored birth info. Use this before `intentions_set_birth_info` when updating an existing profile so you can send back a complete merged payload. Returns { hasProfile, birthInfo: { year, month, day, hour, minute, gender } | null } where any unknown field (e.g. unknown hour) is returned as `null`. No quota cost.
입력 스키마
{
"type": "object",
"properties": {}
}커뮤니티
증거