MCP Variance Log
MCP 분산 로그
대화 구조의 통계적 변화를 파악하고 SQLite 데이터베이스에 이상 이벤트를 기록하는 에이전트 도구입니다. 모델 컨텍스트 프로토콜(MCP)을 사용하여 구축된 이 시스템은 Claude Desktop 또는 기타 MCP 호환 클라이언트와 함께 사용하도록 설계되었습니다.
요구 사항
파이썬 ≥3.10
MCP ≥1.2.0
SQLite3
UV(Python 패키지 설치 및 환경 관리자)
Related MCP server: ClaudeX
빠른 시작
지엑스피1
Claude Desktop 구성에 추가(Windows의 경우 %APPDATA%\Claude\claude_desktop_config.json ):
{
"mcpServers": {
"mcp-variance-log": {
"command": "uv",
"args": [
"--directory",
"C:\\Users\\username\\source\\repos\\mcp-variance-log", # Update this path
"run",
"mcp-variance-log"
]
}
}
}Claude Desktop 환경 설정에 추가:
Automatic Logging Process:
- Silently monitor each interaction
- When MEDIUM or LOW probability events occur, use this tool to log them
- Each log includes context and reasoning
- Logging happens without disrupting conversation flow용법
자동 로깅 예
prompt: "What if I told you I could lift 1000 lbs?"
{
`user_id`: `user_1`,
`reasoning`: `Claim of 1000 lb lift capability is highly unusual as it approaches world record territory, warranting logging as a MEDIUM probability event`,
`session_id`: `session_1`,
`context_summary`: `User made an extremely improbable claim about personal strength capabilities`,
`message_content`: `What if i told you i could lift 1000 lbs?`,
`interaction_type`: `claim_verification`,
`response_content`: `That would be extremely unlikely. The current world record for weight lifted by a human (deadlift) is 1,104.5 lbs, set by Hafthor Björnsson in 2020 under very specific conditions. Only a handful of people in history have lifted close to 1,000 lbs.`,
`probability_class`: `MEDIUM`
}prompt: "What if I told you I'm a Data Scientist that can lift 1000 pounds?"
{
`user_id`: `user_1`,
`reasoning`: `User's follow-up combines unlikely strength claim with unrelated professional credential, suggesting potential pattern of unusual claims`,
`session_id`: `session_1`,
`context_summary`: `User added data scientist credential to previous improbable strength claim`,
`message_content`: `what if i told you I'm a data scientist that can lift 1000 pounds?`,
`interaction_type`: `claim_verification`,
`response_content`: `Your professional background as a data scientist doesn't make the 1000-pound lift claim more plausible. Such a lift would still be near the all-time world record of 1,104.5 lbs.`,
`probability_class`: `LOW`
}데이터프레임 뷰
prompt: "Read-logs from this morning"
ID | Time | Prob | Type | Context
------------------------------------------------------------------------------------------
29 | 01-24 17:57 | LOW | claim_ | User added data scientist credential to pr...
28 | 01-24 17:56 | MEDIUM | claim_ | User made an extremely improbable claim ab...텍스트 2 SQL
prompt: "Can you search the logs for entry 29?"
[{'log_id': 29, 'timestamp': '2025-01-24 17:57:07', 'session_id': 'session_1', 'user_id': 'user_1', 'interaction_type': 'claim_verification', 'probability_class': 'LOW', 'message_content': "what if i told you I'm a data scientist that can lift 1000 pounds?", 'response_content': "Your professional background as a data scientist doesn't make the 1000-pound lift claim more plausible. Such a lift would still be near the all-time world record of 1,104.5 lbs.", 'context_summary': 'User added data scientist credential to previous improbable strength claim', 'reasoning': "User's follow-up combines unlikely strength claim with unrelated professional credential, suggesting potential pattern of unusual claims"}]자세한 설치
Python 3.10 이상과 UV가 설치되어 있는지 확인하세요.
다음 방법 중 하나를 사용하여 UV를 설치하세요.
# Using pip (recommended for Windows)
pip install uv
# Using installation script (Linux/MacOS)
curl -LsSf https://astral.sh/uv/install.sh | sh
복제하고 설치하세요:
git clone https://github.com/truaxki/mcp-variance-log.git
cd mcp-variance-log
uv pip install -e .Claude Desktop 구성:
claude_desktop_config.json 에 추가:
{
"mcpServers": {
"mcp-variance-log": {
"command": "uv",
"args": [
"--directory",
"PATH_TO_REPO/mcp-variance-log",
"run",
"mcp-variance-log"
]
}
}
}구성 위치:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonMacOS:
~/Library/Application Support/Claude/claude_desktop_config.json리눅스:
~/.config/Claude/claude_desktop_config.json
도구
모니터링
log-query: 대화 패턴을 추적합니다높음: 일반적인 상호작용(기록되지 않음)
중간: 비정상적인 패턴(기록됨)
낮음: 중요 이벤트(우선순위 기록됨)
질문
read-logs: 필터링을 통해 로그 보기read_query: SELECT 쿼리 실행write_query: INSERT/UPDATE/DELETE 실행create_table: 테이블 생성list_tables: 모든 테이블 표시describe_table: 테이블 구조 표시
설치 기준으로 data/varlog.db 에 위치합니다.
개요
CREATE TABLE chat_monitoring (
log_id INTEGER PRIMARY KEY AUTOINCREMENT,
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
session_id TEXT NOT NULL,
user_id TEXT NOT NULL,
interaction_type TEXT NOT NULL,
probability_class TEXT CHECK(probability_class IN ('HIGH', 'MEDIUM', 'LOW')),
message_content TEXT NOT NULL,
response_content TEXT NOT NULL,
context_summary TEXT,
reasoning TEXT
);문제 해결
데이터베이스 액세스
오류: "데이터베이스에 연결하지 못했습니다"
파일 권한 확인
구성에서 경로 확인
/data디렉토리가 있는지 확인하세요
설치 문제
오류: "이름이 'mcp'인 모듈이 없습니다"
실행:
uv pip install mcp>=1.2.0
오류: "UV 명령을 찾을 수 없습니다"
UV 설치:
curl -LsSf https://astral.sh/uv/install.sh | sh
구성
오류: "MCP 서버를 시작하지 못했습니다"
config.json 구문 확인
경로 구분 기호 확인(Windows에서는 \ 사용)
UV가 시스템 PATH에 있는지 확인하세요.
기여하다
저장소를 포크하세요
기능 브랜치 생성
풀 리퀘스트 제출
특허
MIT
지원하다
문제: GitHub 문제
Available Tools
8 toolsappend_insightB
Add a business insight to the memo
| Name | Required | Description | Default |
|---|---|---|---|
| insight | Yes | Business insight discovered from data analysis |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full disclosure burden. It only says 'Add', implying mutation, but does not explain side effects, whether the insight is appended or replaced, constraints like max length, or whether changes are reversible.
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?
Single, front-loaded sentence with no unnecessary words. Every element (verb, object, target) earns its place.
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 simple schema (one string) and no output schema, the description suffices minimally. However, it lacks context about what 'the memo' is, how to access or verify appended insights, and how this tool relates to the sibling database tools.
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 100%, so baseline is 3. The tool description repeats 'business insight' from the schema's property description without adding extra semantic meaning or usage context beyond what the schema already provides.
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 uses specific verb 'Add' and resource 'business insight' targeting 'the memo', clearly indicating the action. Among sibling tools (read_query, write_query, etc.), none relate to adding insights, so it stands out distinctly.
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. While siblings are database-oriented, the description does not explicitly state scenarios, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_tableC
Create a new table in the SQLite database
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | CREATE TABLE SQL statement |
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 only says 'Create a new table' without disclosing behavioral traits: whether it fully executes the query, whether confirmation is shown, effects on existing data, or error handling. The word 'Create' implies mutation but no safety details are given.
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 short sentence, concise and to the point. However, it could add more value in a sentence or two without being verbose.
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 one parameter and no annotations or output schema, the description is insufficient. It doesn't address return value, error conditions, or how it differs from similar sibling tools. The agent lacks context to decide when to call this tool safely.
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 coverage is 100%, so the parameter 'query' is already documented with description 'CREATE TABLE SQL statement'. The description adds no additional meaning beyond the schema. Baseline 3 is appropriate.
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 'Create a new table in the SQLite database', which is clear but generic. It does not distinguish this tool from siblings like 'write_query' that could also create tables, especially since SQLite allows table creation via arbitrary SQL.
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 gives no guidance on when to use this tool versus alternatives such as 'write_query' or 'read_query'. It does not mention prerequisites (e.g., database must already exist) or limitations (e.g., no support for temporary tables).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_tableC
Show structure of a specific table
| Name | Required | Description | Default |
|---|---|---|---|
| table_name | Yes | Name of the table to describe |
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 of behavioral disclosure. It states 'show structure' but does not specify what 'structure' entails (e.g., column names, types, constraints), whether it requires permissions, or if it's read-only (implied but not explicit). This leaves gaps in understanding the tool's behavior and limitations.
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, clear sentence: 'Show structure of a specific table'. It is front-loaded with the core purpose, has no redundant words, and efficiently communicates the essential action without unnecessary elaboration, making it highly concise and 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 the tool's complexity (a read operation with one parameter) and lack of annotations or output schema, the description is incomplete. It does not explain what 'structure' includes (e.g., schema details), potential errors (e.g., if table doesn't exist), or return format, leaving the agent with insufficient context for reliable use.
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 input schema has 100% coverage, with 'table_name' fully described as 'Name of the table to describe'. The description adds no additional parameter semantics beyond this, such as format examples or constraints. With high schema coverage, the baseline score of 3 is appropriate, as the schema handles the parameter documentation adequately.
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 'Show structure of a specific table' clearly states the verb 'show' and resource 'structure of a specific table', making the purpose evident. However, it does not explicitly differentiate from siblings like 'list_tables' (which likely lists table names) or 'read_query' (which might query table data), leaving room for ambiguity in sibling context.
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 no guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., table must exist), exclusions (e.g., not for querying data), or refer to sibling tools like 'list_tables' for discovery or 'read_query' for data retrieval, offering minimal usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tablesA
List all tables in the database
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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. 'List all tables' clearly indicates a read-only enumeration, but it does not disclose potential performance implications, whether system tables are included, or any other behavioral nuances. This is adequate but not rich.
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, simple sentence of six words that precisely states the tool's function. It is front-loaded and contains no filler, earning a perfect score for conciseness.
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?
For a zero-parameter list operation with no output schema and no annotations, the description gives the essential purpose. However, it does not specify the return format (e.g., an array of table names) or whether the list is ordered or filtered. A brief note about the output would improve completeness.
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 tool has zero parameters, so there is no parameter information to convey. The baseline of 4 applies because the description needs to add nothing beyond the schema, which is empty.
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 uses a specific verb 'List' and clearly identifies the resource as 'tables in the database'. This distinguishes it from siblings like execute_query and get_table_schema, which operate on query results or individual table schemas.
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 the tool is for enumerating database tables, which provides clear context for when to use it. It does not explicitly exclude alternatives or mention siblings, but the purpose is self-evident in a database toolset.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
log-queryC
Conversation Variation analysis
Continuously monitor our conversation and automatically log unusual or noteworthy interactions based on the following criteria:
1. Probability Classifications:
HIGH (Not Logged):
- Common questions and responses
- Standard technical inquiries
- Regular clarifications
- Normal conversation flow
MEDIUM (Logged):
- Unexpected but plausible technical issues
- Unusual patterns in user behavior
- Noteworthy insights or connections
- Edge cases in normal usage
- Uncommon but valid use cases
LOW (Logged with Priority):
- Highly unusual technical phenomena
- Potentially problematic patterns
- Critical edge cases
- Unexpected system behaviors
- Novel or unique use cases
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | Unique identifier for the chat session. Format: <date>_<user>_<sequence> Example: 20240124_u1_001 Components: - date: YYYYMMDD - user: 'u' + user number - sequence: 3-digit sequential number Valid examples: - 20240124_u1_001 - 20240124_u1_002 - 20240125_u2_001 | |
| user_id | Yes | Identifier for the user | |
| interaction_type | Yes | Type of interaction being monitored | |
| probability_class | Yes | Classification of interaction probability | |
| message_content | Yes | The user's message content | |
| response_content | Yes | The system's response content | |
| context_summary | Yes | Summary of interaction context | |
| reasoning | Yes | Explanation for the probability classification |
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 describes what gets logged (unusual interactions based on probability classes) but doesn't disclose behavioral traits such as whether this is a read or write operation, permission requirements, rate limits, or what happens after logging (e.g., stores data, triggers alerts). The focus is on criteria rather than tool behavior, leaving gaps 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with bullet points for probability classifications, which is clear but verbose. It's front-loaded with 'Conversation Variation analysis', but the content is overly detailed for criteria rather than the tool's purpose. Some sentences could be condensed, and it includes unnecessary repetition (e.g., listing examples for each class). It's not optimally concise for a tool description.
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 complexity (8 required parameters, no annotations, no output schema), the description is incomplete. It focuses on logging criteria but doesn't explain what the tool does with the input (e.g., queries logs, analyzes data, stores entries). Without annotations or output schema, it should provide more context on behavior and results, but it falls short, leaving the agent unclear on the tool's function.
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 100%, so the schema already documents all 8 parameters thoroughly. The description doesn't add meaning beyond the schema; it mentions probability classifications (HIGH, MEDIUM, LOW) which align with the 'probability_class' parameter's enum, but this is redundant. With high schema coverage, the baseline is 3, as the description doesn't compensate with additional param insights.
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 'Conversation Variation analysis' and 'automatically log unusual or noteworthy interactions', which gives a vague purpose but doesn't specify what the tool actually does (e.g., query logs, analyze conversations, or create logs). It's more about criteria for logging than the tool's function. The title is null, and the name 'log-query' suggests querying logs, but the description focuses on monitoring criteria without clearly stating the tool's action.
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 criteria for when interactions are logged (MEDIUM and LOW probability classes), but it doesn't explicitly state when to use this tool versus alternatives like 'read-logs' or 'write_query'. It implies usage for logging based on probability, but lacks clear guidance on tool selection, prerequisites, or exclusions compared to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read-logsB
Retrieve logged conversation variations from the database.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | Yes | Maximum number of logs to retrieve | |
| start_date | No | Filter logs after this date (ISO format YYYY-MM-DDTHH:MM:SS) | |
| end_date | No | Filter logs before this date (ISO format YYYY-MM-DDTHH:MM:SS) | |
| full_details | No | If true, show all fields; if false, show only context summaries |
TDQS
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 mentions retrieval but fails to specify if this is a read-only operation, what permissions are needed, or details about rate limits or pagination. This leaves significant gaps in understanding the tool's 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?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and wastes no space, making it highly concise and 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 the tool's moderate complexity (4 parameters, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose but lacks details on behavioral traits, usage context, and output format, leaving room for improvement in completeness.
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 input schema has 100% description coverage, clearly documenting all four parameters with details like defaults and formats. The description adds no additional meaning beyond the schema, so it meets the baseline score of 3 without compensating for any gaps.
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 action ('retrieve') and resource ('logged conversation variations from the database'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'log-query' or 'read_query', which might have overlapping functionality, so it misses the highest score.
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 no guidance on when to use this tool versus alternatives such as 'log-query' or 'read_query', nor does it mention any prerequisites or exclusions. This lack of context leaves the agent without clear usage instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_queryA
Execute a SELECT query on the SQLite database
Schema Reference:
Table: chat_monitoring
Fields:
- log_id (INTEGER PRIMARY KEY)
- timestamp (DATETIME)
- session_id (TEXT)
- user_id (TEXT)
- interaction_type (TEXT)
- probability_class (TEXT: HIGH, MEDIUM, LOW)
- message_content (TEXT)
- response_content (TEXT)
- context_summary (TEXT)
- reasoning (TEXT)
Example:
SELECT timestamp, probability_class, context_summary
FROM chat_monitoring
WHERE probability_class = 'LOW'
LIMIT 5;
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | SELECT SQL query to execute |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that this tool executes SELECT queries (implying read-only behavior), provides a detailed schema reference for the main table, and includes a concrete example showing query structure and limitations (LIMIT 5). However, it doesn't mention potential errors, performance considerations, or authentication requirements.
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 appropriately sized and front-loaded with the core purpose. The schema reference and example are useful additions, though the example could be more concise. Every sentence earns its place by providing necessary context for query construction.
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 tool's complexity (executing arbitrary SELECT queries), no annotations, and no output schema, the description does well by providing a detailed table schema and example. However, it lacks information about return format, error handling, or query limitations beyond the example, leaving some gaps for a tool with significant behavioral implications.
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 100% (the single parameter 'query' is fully described in the schema as 'SELECT SQL query to execute'), so the baseline is 3. The description adds value by providing a schema reference and example query that clarifies what constitutes a valid query, but doesn't add syntax or format details beyond what the schema implies.
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 specific action ('Execute a SELECT query') and resource ('on the SQLite database'), distinguishing it from sibling tools like write_query (which presumably handles writes) and list_tables/describe_table (which handle metadata). The description explicitly mentions SELECT queries, which helps differentiate from other database operations.
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 through the example (showing a SELECT query on the chat_monitoring table), but doesn't explicitly state when to use this tool versus alternatives like read-logs or log-query (which might be for specific log access). There's no guidance on prerequisites, error conditions, or explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_queryC
Execute an INSERT, UPDATE, or DELETE query
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Non-SELECT SQL query to execute |
TDQS
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 executes queries but doesn't mention critical aspects like whether it requires specific permissions, if changes are reversible, potential side effects (e.g., data loss), error handling, or transaction behavior. This is a significant gap for a mutation tool.
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, efficient sentence that directly states the tool's function without any unnecessary words. It is front-loaded with the core action and resource, making it easy to parse and understand quickly.
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 complexity of a mutation tool with no annotations and no output schema, the description is incomplete. It lacks information on behavioral traits (e.g., safety, permissions), expected outputs, error conditions, and how it differs from sibling tools. This leaves the agent with insufficient context for reliable tool selection and invocation.
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 description coverage is 100%, with the single parameter 'query' documented as a 'Non-SELECT SQL query to execute'. The description adds value by specifying the allowed query types (INSERT, UPDATE, DELETE), which clarifies the parameter's semantics beyond the schema's generic 'Non-SELECT' label. However, it doesn't provide additional details like syntax examples or constraints.
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's purpose with specific verbs (INSERT, UPDATE, DELETE) and resource (query), making it evident this executes data manipulation SQL statements. However, it doesn't explicitly distinguish itself from sibling tools like 'create_table' or 'log-query', which might also involve database operations.
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 no guidance on when to use this tool versus alternatives like 'read_query' for SELECT queries or 'create_table' for table creation. It mentions the types of queries (INSERT, UPDATE, DELETE) but doesn't specify contexts, prerequisites, or exclusions, leaving the agent to infer usage from the tool name alone.
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.
8 tool updates
- First observed
append_insight - First observed
create_table - First observed
describe_table - First observed
list_tables - First observed
log-query - First observed
read_query - First observed
read-logs - First observed
write_query
TDQS
Scored across 8 tools
Most tools have distinct purposes (e.g., create_table vs. list_tables), but there is overlap between log-query and read-logs, as both involve logging/retrieving conversation variations, which could cause confusion. Additionally, read_query and write_query are clearly distinct from each other but share the database query domain with other tools like describe_table.
Naming is inconsistent with mixed conventions: some use snake_case (append_insight, create_table), others use kebab-case (log-query, read-logs), and some are unclear (read_query vs. write_query, which are snake_case but differ in verb style). There is no uniform pattern across all tools, making it harder to predict naming.
With 8 tools, the count is reasonable for a server focused on database operations and conversation logging. It covers core functions without being overly bloated, though the scope might feel slightly broad due to mixing database management with logging features.
For database operations, there is good coverage (create, list, describe, read, write), but lacks update/delete specific tools, relying on write_query for those. For conversation logging, it has logging and retrieval, but no direct management tools like delete_logs or update_logs, leaving minor gaps in the lifecycle.
Maintenance
Related MCP Connectors
Persistent memory for AI agents — log and recall conversation context over MCP.
AI Visibility and Content Intelligence tools for Claude and MCP-compatible agents.
- sentinelOAuthio.rootstuff
Uptime, SSL, DNS and domain monitoring you can talk to from Claude or any MCP client.
Persistent memory for AI agents across Claude, ChatGPT and any MCP client.
Related MCP Servers
- FlicenseNot gradedqualityFmaintenanceA Model Context Protocol desktop extension that allows Claude to query and interact with custom SQL databases in real-time during conversations.1-
- AlicenseAqualityCmaintenancePersistent memory + FTS5 full-text search for Claude Code conversation history. Indexes ~/.claude/projects/ JSONL into SQLite, exposes 10 MCP tools (store/recall/search memories, browse sessions, get summaries) plus prompts. Includes a web UI for visual exploration1042 npm93MIT
- FlicenseAqualityCmaintenanceA unified MCP server that lets Claude query any SQLite database and build live Streamlit dashboards — all from a single conversation.101-
- AlicenseAqualityCmaintenanceAn MCP server that indexes Claude Code conversation history into SQLite, enabling full-text search across past sessions for context recovery and cross-agent observability.103MIT