Knowledge MCP
A knowledge graph MCP server that stores, organizes, and manages entities and relations extracted by Claude into a SQLite-based graph. It solves knowledge fragmentation and reduces LLM context bloat by providing a structured, persistent knowledge base.
Ingest Knowledge (
ingest_knowledge): Accepts raw text with extracted entities (names, categories, descriptions, aliases, properties) and relations (source, target, type, description), upserting them into the knowledge graph.List & Search Nodes (
list_nodes): Query nodes by keyword (partial matching on name/summary), filter by category, paginate, sort, and optionally include connected edges.Merge Nodes (
merge_nodes): Consolidate duplicate nodes — keeps node A, absorbs node B (soft-deletes it), transferring aliases, deduplicating edges, and optionally applying a merged summary.Update Node (
update_node): Modify an existing node's summary, category, aliases, or custom properties.Delete Node (
delete_node): Soft-delete a node by name, with an optional cascade to also remove all connected edges.Delete Edge (
delete_edge): Soft-delete a relationship by edge ID or by specifying source/target/relation conditions.
Additional capabilities: SQLite storage in WAL mode for concurrency, configurable categories and database path, and natural language integration via Claude Desktop.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Knowledge MCPSave knowledge: TCP is reliable and connection-oriented"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Knowledge MCP
Air 프레임워크(https://docs.airmcp.dev/) 로 만든 배운 CS 지식을 그래프 구조로 자동 정리·병합하는 MCP 서버입니다.
Claude Desktop에서 자연어로 지식을 말하면, 핵심 개념(Entity)과 관계(Relation)를 추출해서 SQLite 기반 지식 그래프에 저장합니다. 같은 개념이 다시 나오면 기존 노드에 병합합니다.
해결하는 문제
지식 파편화: 같은 개념에 대해 시차를 두고 배운 정보가 하나의 노드에 누적
컨텍스트 비대화: 전체 대화를 넘기지 않고, 관련 노드만 꺼내서 토큰 절약
할루시네이션 방지: 정제된 지식 베이스를 기반으로 LLM 답변 품질 향상
Related MCP server: Knowledge Graph Memory Server
아키텍처
사용자 → Claude(Entity/Relation 추출) → MCP(저장) → SQLite(WAL 모드)MCP 내부에 별도 LLM이 없습니다. Claude가 추출과 판단을, MCP가 저장과 조회를 담당합니다.
도구
도구 | 설명 |
| Entity/Relation JSON을 받아 그래프에 upsert |
| 키워드 검색, 카테고리 필터, 페이지네이션 |
| 중복 노드 병합 (alias 이전, edge 중복 처리) |
| 노드 속성 직접 수정 |
| 노드 soft delete (cascade 옵션) |
| 관계 soft delete (ID 또는 조건) |
설치
git clone https://github.com/jihoho12/MyKnowledgeMCP.git
cd MyKnowledgeMCP
uv syncClaude Desktop 연동
claude_desktop_config.json에 추가:
{
"mcpServers": {
"knowledge": {
"command": "uv",
"args": ["run", "--directory", "/path/to/MyKnowledgeMCP", "python", "-m", "knowledge_mcp.server"]
}
}
}사용 예시
Claude Desktop에서 자연어로:
"HTTP는 TCP 위에서 동작하는 애플리케이션 계층 프로토콜이야. 정리해줘."
→ Claude가 Entity/Relation 추출 → ingest_knowledge 호출
"네트워크 관련 지식 보여줘"
→ list_nodes(category="network")
"'서버'랑 'Server' 같은 개념이니까 합쳐줘"
→ merge_nodes(node_a="서버", node_b="Server")기술 스택
구성 요소 | 선택 |
MCP 서버 | Python + FastMCP |
저장소 | SQLite (WAL 모드) |
패키지 관리 | uv |
Entity 추출 | Claude (대화 중인 LLM) |
설정
config.toml에서 카테고리 목록, DB 경로, summary 통합 임계값을 변경할 수 있습니다.
[knowledge]
categories = ["general", "network", "os", "database", "web", "security", "language", "algorithm", "architecture", "devops"]
summary_consolidation_threshold = 500테스트
48개 테스트 전체 통과 (기능 28 + 고급 20)
도구별 정상/에러 경로
동시성 (WAL 멀티스레드)
대량 데이터 성능 (500 노드)
데이터 무결성 (SQL injection, 특수문자, 외래키)
복구 (DB 손상, 백업/복원)
라이선스
MIT
Available Tools
6 toolsdelete_edgeA
edge를 삭제(soft delete)합니다. edge_id로 직접 삭제하거나, source/target/relation 조건으로 삭제합니다.
Args: edge_id: 삭제할 edge ID (이 값이 있으면 다른 조건 무시) source: source 노드 이름 (조건 삭제용) target: target 노드 이름 (조건 삭제용) relation: 관계 타입 (조건 삭제용)
| Name | Required | Description | Default |
|---|---|---|---|
| edge_id | No | ||
| source | No | ||
| target | No | ||
| relation | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description only mentions 'soft delete' without explaining implications (e.g., reversibility, logging). No disclosure of side effects, idempotency, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences plus bulleted args. No fluff. Front-loaded with purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers main functionality and param relationships. Lacks detail on output schema, behavior when no match, or handling multiple matches. Output schema exists but not referenced.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds meaning beyond schema: explains edge_id overrides other params, and source/target/relation are for conditional deletion. Schema coverage is 0%, so description compensates well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it deletes edges (soft delete) and specifies two modes: by edge_id or by source/target/relation conditions. Distinguishes from sibling tool delete_node by focusing on edges.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use direct vs conditional deletion, nor when not to use. Does not mention prerequisites or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_nodeA
노드를 삭제(soft delete)합니다.
Args: name: 삭제할 노드 이름 cascade: True면 연결된 edge도 함께 삭제. False면 edge가 있을 경우 거부.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| cascade | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses soft delete behavior and cascade parameter effects. With no annotations, the description carries the full burden and adequately covers key behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: two sentences and parameter docs. Front-loaded with the main action, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and sibling context, the description is mostly complete. It could mention error cases (e.g., node not found), but covers the core behavior well.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description adds meaning to both parameters: name (the node to delete) and cascade (behavior when edges exist). This compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it deletes a node with soft delete, distinguishing it from siblings like delete_edge (edge deletion) and update_node (modification). However, it does not explicitly contrast itself with other siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., merge_nodes or update_node). The description lacks context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ingest_knowledgeA
지식을 그래프에 저장합니다. Claude가 추출한 Entity/Relation JSON을 받습니다.
Args: raw_text: 사용자가 입력한 원본 텍스트 (로그용) entities: JSON 배열. 예: [{"name": "서버", "category": "network", "description": "클라이언트에게 서비스를 제공하는 컴퓨터", "aliases": ["Server"], "properties": {}}] relations: JSON 배열. 예: [{"source": "서버", "target": "클라이언트", "relation": "serves", "description": "서비스 제공 관계"}]
| Name | Required | Description | Default |
|---|---|---|---|
| raw_text | Yes | ||
| entities | Yes | ||
| relations | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It fails to disclose behavioral traits such as idempotency, error handling, side effects (e.g., overwriting existing nodes), or authorization requirements. The description merely states 'save' without elaboration.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively concise with a clear structure: a purpose statement followed by an Args section. However, it mixes Korean and English, which may reduce clarity for international users. Slightly more verbose than necessary but still efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description thoroughly covers parameter semantics with examples, addressing a key gap from missing schema descriptions. However, it lacks behavioral context (e.g., idempotency, validation) and assumes an output schema exists but doesn't detail return values. Overall adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema coverage is 0%, but the description adds rich, detailed documentation for all three parameters, including examples of JSON format for entities and relations and explanation of raw_text for logging. This greatly exceeds the schema's minimal type information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Save knowledge to the graph' and specifies it receives Entity/Relation JSON from Claude, clearly indicating the verb and resource. It distinguishes from sibling tools like delete_node or update_node.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for ingesting knowledge extracted by Claude but does not explicitly state when to use versus alternatives or provide exclusion criteria. Context is clear but lacks guidance on when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_nodesA
지식 그래프의 노드 목록을 조회합니다.
Args: keyword: 검색어 (name, summary에서 부분 매칭). 빈 문자열이면 전체 조회. category: 카테고리 필터. 빈 문자열이면 전체. include_edges: 각 노드의 연결된 edge 포함 여부 limit: 최대 반환 수 (기본 20, 최대 100) offset: 페이지네이션 오프셋 sort_by: 정렬 기준 (updated_at, created_at, name) sort_order: 정렬 방향 (asc, desc)
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | No | ||
| category | No | ||
| include_edges | No | ||
| limit | No | ||
| offset | No | ||
| sort_by | No | updated_at | |
| sort_order | No | desc |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool lists nodes with filtering and pagination, and implies read-only behavior via '조회' (inquiry). It does not mention permissions or side effects, but for a listing tool, the level of detail is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph with a brief summary followed by a clear bullet-style parameter list. It is front-loaded with the purpose and each sentence adds value. Minor improvement: could be slightly more concise by grouping related parameters, but it is well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters and an output schema (not shown in detail), the description covers all inputs and the basic function. It does not describe the output structure, but the presence of an output schema mitigates that. Error cases or edge cases (e.g., invalid sort_by values) are not mentioned, but overall it is sufficient for a listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning the schema alone provides no semantics. The description explicitly explains all 7 parameters, including their defaults and meanings (e.g., keyword for partial matching, category filter, pagination). This fully compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a list of nodes from the knowledge graph. The verb '조회' (retrieve) and resource '노드 목록' (node list) are specific. Sibling tools are all mutation tools (delete, update, merge, ingest), so the purpose is distinct and easily understood.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides parameter-level guidance (e.g., empty keyword returns all nodes) but does not explicitly state when to use this tool versus alternatives. No comparison or exclusion criteria are given for sibling tools, though their functions are obviously different.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merge_nodesA
두 노드를 하나로 병합합니다. node_a를 유지하고 node_b를 흡수합니다.
Args: node_a: 유지할 노드 이름 node_b: 흡수될 노드 이름 (병합 후 soft delete) merged_summary: Claude가 합쳐서 작성한 통합 요약 (선택. 비어있으면 단순 append)
| Name | Required | Description | Default |
|---|---|---|---|
| node_a | Yes | ||
| node_b | Yes | ||
| merged_summary | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses that node_b is soft-deleted after merge and that merged_summary, if empty, results in simple append. Provides key behavioral traits but omits permissions or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentence overview plus a clean Args section. Every sentence is informative; no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all three parameters and key behavior. Output schema exists, so return values not needed. No mention of errors or prerequisites, but adequate for a merge tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully explains each parameter: node_a is kept, node_b is absorbed and soft-deleted, merged_summary is optional with default empty meaning append. Adds significant meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it merges two nodes into one, keeping node_a and absorbing node_b. Verb 'merge' and resource 'nodes' are explicit. Differentiates from sibling tools like delete_node.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Describes which node is kept and which is absorbed, but does not explicitly state when to use this tool versus alternatives like delete_node or update_node. Usage is implied, not directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_nodeA
특정 노드의 속성을 수정합니다.
Args: name: 수정할 노드 이름 summary: 새 요약 (전체 교체). 빈 문자열이면 변경 안 함. category: 새 카테고리. 빈 문자열이면 변경 안 함. add_aliases: 추가할 별칭 JSON 배열. 예: ["웹서버", "web server"]. 빈 문자열이면 변경 안 함. properties: 추가할 속성 JSON 객체. 기존 속성에 merge. 빈 문자열이면 변경 안 함.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| summary | No | ||
| category | No | ||
| add_aliases | No | ||
| properties | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses important behaviors: summary and category are fully replaced, add_aliases append, properties merge, and empty strings mean no change. However, it does not mention return values, side effects, or idempotency. With no annotations, the burden is higher.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured as an Args list with a clear purpose first. It is reasonably concise, though the repeated '빈 문자열이면 변경 안 함' could be condensed without loss.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and schema coverage, the description covers all parameters and their behaviors adequately. However, it does not describe the output or any safety/authorization context, leaving some completeness gaps for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema coverage, the description thoroughly explains each parameter: purpose, behavior with empty string, and examples for add_aliases and properties. This adds significant meaning beyond the input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states '특정 노드의 속성을 수정합니다' (modifies properties of a specific node), which is a specific verb+resource. It distinguishes from siblings like delete_node and merge_nodes by implying a single-node update, but could be more explicit about when to use update_node vs merge_nodes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives (e.g., merge_nodes). The description does not provide context for when not to use it or mention prerequisites.
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. Dates show when Glama detected each change.
6 tool updates
v0.1.0- First observed
delete_edge - First observed
delete_node - First observed
ingest_knowledge - First observed
list_nodes - First observed
merge_nodes - First observed
update_node
TDQS
Each tool targets a distinct operation (delete node, delete edge, ingest, list, merge, update) with clear boundaries. No two tools overlap in purpose.
All tool names follow a consistent verb_noun snake_case pattern (e.g., delete_edge, list_nodes). No mixing of conventions.
6 tools is well-scoped for a knowledge graph server, covering creation, deletion, update, list, and merge without being too sparse or too heavy.
Basic CRUD for nodes is covered, but edges lack update and list operations. There is no dedicated get tool for individual nodes or edges, which may hinder agents.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Personal wiki and memory layer for AI assistants. Persistent, structured memory across sessions.
Shared semantic graph for AI reviews, classification and structured memory across AI assistants.
Give your AI agent a persistent map of your project's structure, dependencies, and bugs.
- ContextaOAuthcc.contexta
Persistent memory and knowledge graph for AI assistants — keyword + vector + graph search.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables Claude to automatically extract entities and relationships from URLs, PDFs, and YouTube videos to build structured knowledge graphs in Neo4j. It supports custom schemas, academic citation extraction, and community detection for advanced research and content analysis.Apache 2.0
- AlicenseNot gradedqualityDmaintenanceProvides persistent memory for Claude by implementing a local knowledge graph to store and retrieve entities, relations, and observations. This enables long-term information retention and personalization across different chat sessions.73,646-
- AlicenseAqualityCmaintenanceSelf-hosted personal knowledge graph for Claude that persists across sessions, devices, and tools. Built on Neo4j with local semantic embeddings; OAuth 2.1 lets Claude Code, Claude Desktop, and claude.ai web all hit the same graph.231242MIT
- FlicenseNot gradedqualityCmaintenanceProvides Claude Desktop with persistent, structured memory and semantic search via a local SQLite knowledge graph, plus a web UI for visualization and management.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jihoho12/MyKnowledgeMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server