Skip to main content
Glama

learnlog-mcp

LLM 학습 세션의 프롬프트를 로컬에 저장하여 메타인지를 돕는 MCP 서버

만들게 된 이유

LLM으로 공부하면서 계속 드는 의문이 있었습니다.

"나 이거 정말 아는 건가?"

AI의 설명을 읽으면 이해가 되는 것 같습니다. 고개를 끄덕이고, "아 그렇구나" 하고 넘어갑니다. 그런데 며칠 뒤 팀원에게 같은 개념을 설명하려고 하면 입이 잘 떨어지지 않습니다. 분명 여러 번 봤는데, 막상 말로 하려니 추상적인 느낌만 남아있습니다.

그때 깨달았습니다. 이해한 것 같은 느낌진짜 이해는 다르다는 것을.

LLM과 대화하면서 "알게 됐다"고 착각하기 쉽습니다. 하지만 내가 무엇을 물어봤는지 돌아보면, 실제로 어디서 막혔는지가 보입니다. 질문의 흐름을 보면 내 이해의 빈틈이 드러납니다.

그래서 만들었습니다. 내가 한 질문들을 가볍게 저장해두고, 나중에 돌아볼 수 있는 도구. AI의 긴 답변이 아니라, 내 짧은 질문들만 모아두면 충분합니다.

저는 이 도구를 활용해서 DevOps와 오픈소스 생태계를 깊이 파보려 합니다.

Related MCP server: Obsidian MCP Learning System

왜 프롬프트를 저장하는가?

LLM으로 학습할 때 우리는 보통 출력값(AI의 답변)을 노션이나 메모장에 저장합니다. 하지만 생각해보면:

  • 같은 프롬프트를 주면 비슷한 답변을 언제든 다시 얻을 수 있습니다

  • 출력값은 길고 무겁지만, 프롬프트는 짧고 가볍습니다

  • 내가 무엇을 물어봤는지가 곧 내가 무엇을 모르는지입니다

기존 방식: 세션 → AI 답변 복사 → 노션에 저장 → 나중에 찾기 어려움

learnlog 방식: 세션 → 프롬프트 자동 저장 → "오늘 뭐 공부했지?" → 즉시 확인

프롬프트를 저장하면 내가 어떤 부분에서 막혔는지, 무엇이 궁금했는지를 파악할 수 있습니다. 이것이 진짜 메타인지입니다.

핵심 철학

  1. 입력 > 출력: 출력값이 아닌 프롬프트를 저장합니다

  2. 경량화: 무거운 답변 대신 가벼운 질문만 보관합니다

  3. 메타인지: "내가 뭘 물어봤지?"를 통해 학습 현황을 파악합니다

  4. 세션 독립: 어떤 LLM, 어떤 세션에서든 학습 기록이 하나로 모입니다

설치

1. 저장소 클론 및 빌드

git clone https://github.com/YUJAEYUN/learnlog-mcp.git
cd learnlog-mcp
npm install
npm run build

2. Claude Code에 등록

claude mcp add learnlog-mcp node /path/to/learnlog-mcp/dist/index.js

3. Claude Desktop에 등록 (선택)

~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "learnlog-mcp": {
      "command": "node",
      "args": ["/path/to/learnlog-mcp/dist/index.js"]
    }
  }
}

사용법

자동 저장

학습 관련 질문을 하면 AI가 자동으로 프롬프트를 저장합니다. 별도로 "저장해줘"라고 말할 필요 없습니다.

학습 기록 확인

"오늘 뭐 공부했지?"
"오늘 뭐 물어봤지?"

→ 오늘 저장된 모든 프롬프트를 시간순으로 보여줍니다

특정 날짜 조회

"2025-12-20에 뭐 공부했어?"

최근 학습 현황

"최근 일주일 학습 현황 보여줘"

→ 날짜별 질문 개수를 요약해서 보여줍니다

저장 위치

~/learnlog/
└── prompts/
    ├── 2025-12-20.json
    ├── 2025-12-21.json
    └── 2025-12-22.json

각 파일에는 해당 날짜의 프롬프트가 질문 타입과 함께 저장됩니다:

{
  "date": "2026-01-13",
  "summary": {
    "total": 5,
    "byType": {
      "fact": 2,
      "principle": 1,
      "application": 1,
      "comparison": 0,
      "connection": 1
    },
    "depthScore": 1.8
  },
  "prompts": [
    {
      "prompt": "N+1 쿼리 문제가 뭐야?",
      "timestamp": "2026-01-13T10:30:00.000Z",
      "type": "fact"
    },
    {
      "prompt": "왜 N+1이 성능 문제를 일으키는 거야?",
      "timestamp": "2026-01-13T10:35:00.000Z",
      "type": "principle"
    }
  ]
}

질문 타입

시스템은 자동으로 질문을 5가지 타입으로 분류합니다:

  • fact (1점): 사실/정의 질문 - "N+1 쿼리가 뭐야?"

  • principle (3점): 원리/이유 질문 - "왜 N+1이 문제가 돼?"

  • application (2점): 적용/실습 질문 - "eager loading을 어떻게 구현해?"

  • comparison (2점): 비교 질문 - "eager vs lazy loading 차이는?"

  • connection (3점): 연결 질문 - "ORM과 쿼리 최적화는 어떻게 연관돼?"

학습 깊이 점수

각 질문 타입의 점수를 평균내어 학습 깊이를 측정합니다:

  • 1.0-1.5: 표면적 학습 (주로 개념 익히기)

  • 1.5-2.0: 보통 학습 (균형잡힌 접근)

  • 2.0-2.5: 깊이 있는 학습 (원리 탐구)

  • 2.5-3.0: 매우 깊은 학습 (개념 연결)

도구 목록

MCP Tools

도구

설명

save_prompt

프롬프트 저장 (AI가 자동 호출)

get_today_prompts

오늘의 질문 목록 조회

get_prompts_by_date

특정 날짜 질문 조회

get_recent_prompts

최근 N일 학습 현황

get_learning_stats

학습 통계 및 깊이 분석

Claude Skills

Skill

설명

사용법

/review

학습 리뷰 및 메타인지 강화

"오늘 공부 리뷰해줘"

Claude Skills를 사용하려면 skills/ 폴더를 Claude Skills 디렉토리에 추가하세요.

활용 예시

1. 학습 통계 확인

사용자: 오늘 학습 통계 보여줘

AI: 📊 2026-01-13 학습 통계

총 질문 수: 27개

질문 타입 분포:
  • fact: 8개 (30%)
  • principle: 5개 (19%)
  • application: 4개 (15%)
  • comparison: 6개 (22%)
  • connection: 4개 (15%)

학습 깊이 점수: 2.0/3.0 (깊이 있는 학습)

💡 Tip:
- fact: 사실/정의 질문 (1점)
- comparison: 비교 질문 (2점)
- application: 적용/실습 질문 (2점)
- principle: 원리/이유 질문 (3점)
- connection: 연결 질문 (3점)

2. 일일 학습 리뷰 (Skills)

사용자: 오늘 공부 리뷰해줘

AI: 📝 오늘의 학습 리뷰

[학습 통계 요약]
- 총 27개 질문
- 학습 깊이: 2.0/3.0 (깊이 있는 학습)

[질문 타입 분석]
오늘은 균형잡힌 학습이었습니다.
특히 비교 질문(22%)을 통해 개념 간 차이를 명확히 하려는 노력이 보입니다.
원리 질문도 적절히 섞여있어 단순 암기가 아닌 이해 중심 학습이었네요.

[학습 패턴]
VPC → NAT → IGW로 이어지는 깊은 탐구 체인이 있었습니다.
같은 주제를 여러 각도에서 질문하며 완전히 이해하려는 모습이 인상적입니다.

[다음 학습 제안]
1. 오늘 배운 AWS 네트워크를 직접 실습해보세요 (application 강화)
2. VPC와 온프레미스 네트워크의 연결 방식을 탐구해보세요 (connection 확장)

계속 이런 깊이로 학습하시면 탄탄한 기반이 만들어질 거예요! 👍

3. 질문 목록 확인

사용자: 오늘 뭐 공부했지?

AI: 📝 오늘의 질문 (5개)

1. [10:30] N+1 쿼리 문제가 뭐야?
2. [10:35] eager loading은 어떻게 구현해?
3. [14:20] 인덱스는 언제 걸어야해?
4. [14:45] 복합 인덱스 순서가 중요한 이유?
5. [16:00] EXPLAIN ANALYZE 결과 해석법?

→ 오늘 데이터베이스 최적화에 대해 공부했구나!

4. 학습 패턴 파악

사용자: 최근 일주일 현황 보여줘

AI: 📊 최근 7일간 학습 기록

• 2026-01-13: 27개 질문
• 2026-01-11: 13개 질문
• 2026-01-10: 12개 질문
• 2026-01-09: 7개 질문
• 2026-01-08: 19개 질문

총 78개 질문

5. 이전 학습 이어가기

사용자: 1월 8일에 뭐 물어봤었지?

AI: 📝 2026-01-08의 질문 (19개)

1. [09:00] Docker Compose 설정 방법
2. [09:15] Docker 네트워크 구조
...

→ 아, Docker 공부했었지. 이어서 질문해야겠다!

마이그레이션

기존 데이터를 새 스키마로 마이그레이션하려면:

npm run build
node dist/scripts/migrate.js

마이그레이션 후 백업 파일(.old)이 생성됩니다. 확인 후 삭제하세요:

rm ~/learnlog/prompts/*.old

License

ISC

Available Tools

5 tools
get_learning_statsC

특정 날짜의 학습 통계를 조회합니다. 질문 타입별 분포, 학습 깊이 점수를 확인할 수 있습니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo조회할 날짜 (YYYY-MM-DD 형식, 기본값: 오늘)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves statistics, implying a read-only operation, but does not address critical aspects such as authentication requirements, rate limits, error handling, or response format. The description lacks details on what '학습 깊이 점수' entails or how data is structured, leaving behavioral traits unclear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded, with two sentences that efficiently convey the tool's purpose and key data points. There is no wasted language, and it avoids redundancy. However, it could be slightly more structured by explicitly separating purpose from data details, but it remains highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (retrieving statistical data) and the absence of annotations and output schema, the description is incomplete. It mentions what data is available but does not explain the return values, data formats, or any behavioral constraints. For a tool with no structured output information, the description should provide more context on what to expect from the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the 'date' parameter well-documented in the schema. The description adds no additional parameter semantics beyond implying date-based filtering. Since schema coverage is high, the baseline score is 3, as the description does not compensate with extra details but doesn't detract from the schema's clarity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '특정 날짜의 학습 통계를 조회합니다' (retrieves learning statistics for a specific date), specifying the verb (조회/retrieve) and resource (학습 통계/learning statistics). It distinguishes from siblings by focusing on statistics rather than prompts, though it doesn't explicitly contrast with them. The additional detail about '질문 타입별 분포, 학습 깊이 점수' (distribution by question type, learning depth score) adds specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It mentions what data is retrieved but does not indicate scenarios for its use, prerequisites, or comparisons to sibling tools like get_prompts_by_date or get_today_prompts. Usage is implied through the action described, but explicit context or exclusions are absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_prompts_by_dateC

특정 날짜에 했던 질문들을 조회합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYes조회할 날짜 (YYYY-MM-DD 형식)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('조회합니다') but doesn't describe whether this is a read-only operation, what permissions are needed, how results are returned (e.g., format, pagination), or any rate limits. For a tool with no annotation coverage, this leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is appropriately sized for a simple tool, though it could be slightly more structured (e.g., by explicitly mentioning the parameter). Every part of the sentence contributes to understanding the tool's function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., list of prompts, error handling), behavioral traits like safety or performance, or how it differs from sibling tools. For a tool with no structured metadata, the description should provide more context to compensate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the single parameter 'date' fully documented in the schema as '조회할 날짜 (YYYY-MM-DD 형식)' (date to retrieve in YYYY-MM-DD format). The description adds no additional parameter semantics beyond what the schema provides, such as examples or edge cases, meeting the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('조회합니다' - retrieves/looks up) and resource ('질문들' - questions/prompts) with a specific scope ('특정 날짜에 했던' - done on a specific date). It distinguishes from 'get_recent_prompts' and 'get_today_prompts' by specifying date-based retrieval, though not explicitly contrasting them. The purpose is unambiguous but could more directly differentiate from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'get_recent_prompts' or 'get_today_prompts'. The description implies usage for historical date queries but doesn't specify prerequisites, exclusions, or comparative contexts. Without explicit alternatives or constraints, the agent lacks clear decision-making criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_recent_promptsC

최근 며칠간의 질문들을 조회합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo조회할 일수 (기본값: 7)

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It indicates this is a read operation ('조회합니다'), but doesn't specify whether it requires authentication, has rate limits, returns paginated results, or what the output format might be. For a tool with no annotations, this leaves significant gaps in understanding its behavior and constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence in Korean that directly states the tool's function. It's front-loaded with the core action and resource, with no unnecessary words. However, it could be slightly more structured by explicitly naming the parameter or output, but it's appropriately concise for its purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (a read operation with one parameter) and the absence of annotations and output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., list of prompts, metadata), error conditions, or behavioral details like authentication needs. For a tool with no structured support, the description should provide more context to be fully helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description mentions '최근 며칠간' (recent days), which aligns with the 'days' parameter in the schema. Since schema description coverage is 100% (the parameter is fully documented with a description and default value), the description adds minimal value beyond what the schema provides. The baseline score of 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool's purpose ('조회합니다' meaning 'retrieves' or 'queries') and specifies the resource ('질문들' meaning 'questions/prompts') with a time scope ('최근 며칠간' meaning 'recent days'). However, it doesn't clearly distinguish this tool from its siblings like 'get_prompts_by_date' or 'get_today_prompts', which also retrieve prompts with different time filters. The purpose is clear but lacks sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get_prompts_by_date' (which might allow specific date ranges) or 'get_today_prompts' (which likely retrieves only today's prompts), nor does it specify prerequisites or exclusions. Usage is implied by the time scope but not explicitly defined.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_today_promptsA

오늘 했던 질문들을 조회합니다. 사용자가 '오늘 뭐 공부했지?', '오늘 뭐 물어봤지?' 같은 요청을 할 때 사용합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states this is a query/retrieval operation ('조회합니다'), implying read-only behavior, but doesn't disclose important behavioral traits like whether it requires authentication, returns paginated results, has rate limits, or what format/schema the output follows. For a tool with zero annotation coverage, this leaves significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly concise with two sentences: one stating the purpose, one providing usage examples. Every word earns its place, and the structure is front-loaded with the core functionality followed by contextual guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, no output schema, no annotations), the description adequately covers purpose and usage. However, for a query tool with sibling alternatives, it could better address differentiation and output expectations. The absence of annotations means the description should ideally provide more behavioral context, but it's minimally complete for basic understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the absence of inputs. The description appropriately doesn't discuss parameters, maintaining focus on the tool's purpose and usage. This meets the baseline expectation for parameterless tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '오늘 했던 질문들을 조회합니다' (retrieves today's questions). It specifies the resource (today's questions) and verb (retrieve/query). However, it doesn't explicitly differentiate from sibling tools like 'get_prompts_by_date' or 'get_recent_prompts', which likely have overlapping functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context with examples: '사용자가 "오늘 뭐 공부했지?", "오늘 뭐 물어봤지?" 같은 요청을 할 때 사용합니다' (use when users ask questions like 'What did I study today?' or 'What did I ask today?'). This gives good guidance on when to invoke the tool, though it doesn't explicitly mention when NOT to use it or alternatives among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_promptA

학습 관련 질문이나 메모를 저장합니다. 사용 방법:

  1. 자동 저장: AI가 사용자의 학습 관련 질문을 인식하여 자동으로 저장

  2. 수동 저장: 사용자가 "이거 저장해줘", "'질문내용' 저장해줘"라고 요청하면 저장 예시: "N+1 쿼리가 뭐야? 저장해줘" 또는 "방금 질문 저장해줘"

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYes저장할 질문 또는 메모 내용

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It describes the saving action and usage modes but lacks details on behavioral traits such as permissions needed, whether saves are permanent or reversible, rate limits, or error handling. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded, starting with the core purpose and followed by usage instructions and examples. Each sentence adds value, with no redundant information. However, the structure could be slightly improved by separating the purpose and usage sections more clearly, but it remains efficient and easy to follow.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (a mutation tool with no annotations and no output schema), the description is partially complete. It covers purpose and usage well but lacks behavioral details and output information. With sibling tools for retrieval, the context is somewhat addressed, but more completeness is needed for safe and effective use by an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the parameter 'prompt' documented as '저장할 질문 또는 메모 내용' (question or note content to save). The description doesn't add meaning beyond this, as it focuses on usage rather than parameter details. With high schema coverage, the baseline score of 3 is appropriate, as the schema adequately handles parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '학습 관련 질문이나 메모를 저장합니다' (saves learning-related questions or notes). It specifies the resource (learning-related content) and verb (save), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like get_prompts_by_date, which might retrieve saved prompts, leaving some ambiguity about its unique role in the toolset.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidelines with two modes: automatic saving (when AI recognizes learning-related questions) and manual saving (when users request it with phrases like '이거 저장해줘'). It includes examples ('N+1 쿼리가 뭐야? 저장해줘') and specifies context (learning-related content), giving clear instructions on when and how to use the tool effectively.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv1.0.0
    • First observedget_learning_stats
    • First observedget_prompts_by_date
    • First observedget_recent_prompts
    • First observedget_today_prompts
    • First observedsave_prompt

TDQS

B3.2/5.0

Scored across 5 tools

Disambiguation3/5

The tools have some overlap in purpose, particularly the three prompt retrieval tools (get_prompts_by_date, get_recent_prompts, get_today_prompts) which all fetch prompts with different time filters. While their descriptions clarify the distinctions, an agent might still confuse them when selecting the appropriate one for a query about 'recent' or 'today's' prompts. However, get_learning_stats and save_prompt are clearly distinct.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with snake_case (e.g., get_learning_stats, save_prompt). The naming is predictable and readable throughout the set, with no deviations in style or convention.

Tool Count5/5

With 5 tools, the count is well-scoped for a learning log server focused on tracking and retrieving prompts and statistics. Each tool appears to serve a specific purpose without redundancy, making the set manageable and appropriate for the domain.

Completeness3/5

The tool surface covers retrieval (get_*) and saving (save_prompt) for prompts and statistics, but there are notable gaps. For example, there are no tools for updating or deleting saved prompts, which could limit agent workflows if users need to modify or remove entries. The domain suggests a CRUD-like system, but only create and read operations are provided.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that enables users to interact with local documents for educational purposes through tools for listing and reading files. It features an integrated agent capable of automatically generating document summaries and study flashcards.
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    A learning-focused MCP server demonstrating tool, resource, and prompt functionalities including greeting, arithmetic, time retrieval, file reading, dynamic profiles, and document summarization.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    An MCP server that provides an open, local-first record of a child's learning, enabling an AI tutor to read, teach from, and update the child's knowledge, interests, and progress.
    1
    Apache 2.0