Tribal Knowledge Service
部落 - 知识服务
Tribal 是一个用于错误知识跟踪和检索的 MCP(模型上下文协议)服务器实现。它提供 REST API 和原生 MCP 接口,可与 Claude Code 和 Cline 等工具集成。
特征
存储和检索具有完整上下文的错误记录
使用 ChromaDB 进行向量相似性搜索
REST API(FastAPI)和原生 MCP 接口
使用 API 密钥进行 JWT 身份验证
本地存储(ChromaDB)和 AWS 集成
Docker-compose部署
CLI 客户端集成
Related MCP server: MemoCall
概述
Tribal 帮助 Claude 记住编程错误并从中学习。当您启动 Claude Code 会话时,Tribal 会自动通过 MCP 启动,无需额外导入。
克劳德将:
商店编程错误和解决方案
遇到问题时搜索类似错误
构建特定于您的编码模式的知识库
使用 uv 打包并安装 Tribal
先决条件
Python 3.12+
uv 包管理器(推荐)
构建和安装步骤
选项 1:直接使用 uv 安装
最简单的方法是直接从当前目录安装:
# From the project root directory
cd /path/to/tribal
# Install using uv
uv pip install .选项 2:开发安装
对于希望立即反映更改的开发工作:
# From the project root directory
cd /path/to/tribal
# Install in development mode
uv pip install -e .选项 3:首先构建包
如果您想构建可分发的包:
# Make sure you're in the project root directory
cd /path/to/tribal
# Install the build package if needed
uv pip install build
# Build the package
python -m build
# This creates distribution files in the dist/ directory
# Now install the wheel file
uv pip install dist/tribal-0.1.0-py3-none-any.whl选项 4:使用uv tool install命令
您也可以使用工具安装方法:
# Install as a global tool
cd /path/to/tribal
uv tool install .
# Or install in development mode
uv tool install -e .确认
安装后,验证该工具是否正确安装:
# Check the installation
which tribal
# Check the version
tribal version与克劳德的整合
安装完成后,即可与Claude集成:
# Add Tribal to Claude Code
claude mcp add tribal --launch "tribal"
# Verify the configuration
claude mcp list
# For Docker container
claude mcp add tribal http://localhost:5000用法
可用的 MCP 工具
Tribal 提供以下 MCP 工具:
add_error- 创建新的错误记录 (POST /errors)get_error- 通过 UUID 检索错误(GET /errors/{id})update_error- 修改现有错误 (PUT /errors/{id})delete_error- 删除错误记录 (DELETE /errors/{id})search_errors- 根据条件查找错误 (GET /errors)find_similar- 语义相似性搜索(GET /errors/similar)get_token- 获取 JWT 令牌 (POST /token)
Claude 的示例用法
当克劳德遇到错误时:
I'll track this error and look for similar problems in our knowledge base.当克劳德找到解决方案时:
I've found a solution! I'll store this in our knowledge base for next time.克劳德的命令
您可以要求 Claude:
“在我们的部落知识库中查找类似的错误”
“将此解决方案存储到我们的错误数据库中”
“检查我们之前是否见过这个错误”
运行服务器
使用部落命令
# Run the server
tribal
# Get help
tribal help
# Show version
tribal version
# Run with options
tribal server --port 5000 --auto-port使用 Python 模块
# Run the Tribal server
python -m mcp_server_tribal.mcp_app
# Run the FastAPI backend server
python -m mcp_server_tribal.app使用旧式入口点
# Legacy MCP server
mcp-server
# Legacy FastAPI server
mcp-api命令行选项
# Development mode with auto-reload
mcp-api --reload
mcp-server --reload
# Custom port
mcp-api --port 8080
mcp-server --port 5000
# Auto port selection
mcp-api --auto-port
mcp-server --auto-portFastAPI 服务器的地址为http://localhost:8000 ,API 文档位于 /docs。MCP 服务器的地址为http://localhost:5000,适用于 Claude 和其他兼容 MCP 的 LLM。
环境变量
FastAPI 服务器
PERSIST_DIRECTORY:ChromaDB存储路径(默认值:“./chroma_db”)API_KEY:身份验证密钥(默认值:“dev-api-key”)SECRET_KEY:JWT 签名密钥(默认值:“insecure-dev-key-change-in-production”)REQUIRE_AUTH:身份验证要求(默认值:“false”)PORT:服务器端口(默认值:8000)
MCP 服务器
MCP_API_URL:FastAPI 服务器 URL(默认值:“ http://localhost:8000 ”)MCP_PORT:MCP 服务器端口(默认值:5000)MCP_HOST:绑定到的主机(默认值:“0.0.0.0”)API_KEY:FastAPI 访问密钥(默认值:“dev-api-key”)AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_S3_BUCKET:用于 AWS 集成
API 端点
POST /errors:创建新的错误记录GET /errors/{error_id}:通过 ID 获取错误PUT /errors/{error_id}:更新错误记录DELETE /errors/{error_id}:删除错误GET /errors:按条件搜索错误GET /errors/similar:查找类似的错误POST /token:获取身份验证令牌
使用客户端
# Add a new error record
mcp-client --action add --error-type ImportError --language python --error-message "No module named 'requests'" --solution-description "Install requests" --solution-explanation "You need to install the requests package"
# Get an error by ID
mcp-client --action get --id <error-id>
# Search for errors
mcp-client --action search --error-type ImportError --language python
# Find similar errors
mcp-client --action similar --query "ModuleNotFoundError: No module named 'pandas'"工作原理
Tribal 使用 ChromaDB 存储错误记录和解决方案
当 Claude 遇到错误时,它会将错误详细信息发送给 Tribal
Tribal 将错误向量化并搜索类似的错误
克劳德拿回相关解决方案建议
存储新的解决方案以供将来参考
发展
运行测试
pytest
pytest tests/path_to_test.py::test_name # For specific testsLinting 和类型检查
ruff check .
mypy .
black .GitHub 工作流程
该项目使用 GitHub Actions 进行持续集成和部署。工作流程会自动在推送到主代码和拉取请求时运行测试、代码检查和类型检查。
工作流程步骤
测试:运行 linting、类型检查和单元测试
使用 Python 3.12
使用 uv 安装依赖项
运行 ruff、black、mypy 和 pytest
构建并发布:构建包并将其发布到 PyPI
仅在推送到主分支时触发
使用 Python 的构建系统
使用 twine 发布到 PyPI
本地测试
您可以使用提供的脚本在本地测试 GitHub 工作流程:
# Make the script executable
chmod +x scripts/test-workflow.sh
# Run the workflow locally
./scripts/test-workflow.sh此脚本在您的本地机器上模拟 GitHub 工作流程步骤:
检查 Python 版本(建议 3.12)
使用 uv 安装依赖项
使用 ruff 进行除毛
用黑色检查格式
使用 mypy 运行类型检查
使用 pytest 运行测试
构建包
注意:该脚本跳过本地测试的发布步骤。
项目结构
tribal/
├── src/
│ ├── mcp_server_tribal/ # Core package
│ │ ├── api/ # FastAPI endpoints
│ │ ├── cli/ # Command-line interface
│ │ ├── models/ # Pydantic models
│ │ ├── services/ # Service layer
│ │ │ ├── aws/ # AWS integrations
│ │ │ └── chroma_storage.py # ChromaDB implementation
│ │ └── utils/ # Utility functions
│ └── examples/ # Example usage code
├── tests/ # pytest test suite
├── docker-compose.yml # Docker production setup
├── pyproject.toml # Project configuration
├── VERSIONING.md # Versioning strategy documentation
├── CHANGELOG.md # Version history
├── .bumpversion.cfg # Version bumping configuration
└── README.md # Project documentation版本控制
Tribal 遵循语义版本控制。有关以下内容的完整详细信息,请参阅VERSIONING.md :
版本编号(MAJOR.MINOR.PATCH)
数据库兼容性的架构版本控制
分支命名约定
发布和修补程序程序
使用以下命令检查版本:
# Display version information
tribal version管理依赖关系
# Add a dependency
uv pip add <package-name>
# Add a development dependency
uv pip add <package-name>
# Update dependencies
uv pip sync requirements.txt requirements-dev.txt部署
Docker 部署
# Build and start containers
docker-compose up -d --build
# View logs
docker-compose logs -f
# Stop containers
docker-compose down
# With custom environment variables
API_PORT=8080 MCP_PORT=5000 REQUIRE_AUTH=true API_KEY=your-secret-key docker-startClaude 用于桌面集成
选项 1:让 Claude for Desktop 启动服务器
打开
~/Library/Application Support/Claude/claude_desktop_config.json添加 MCP 服务器配置(假设 Tribal 工具已安装):
{ "mcpServers": [ { "name": "tribal", "launchCommand": "tribal" } ] }重启 Claude 桌面版
选项 2:连接到正在运行的 Docker 容器
启动容器:
cd /path/to/tribal docker-start配置 Claude 桌面版:
{ "mcpServers": [ { "name": "tribal", "url": "http://localhost:5000" } ] }
Claude Code CLI 集成
# For Docker container
claude mcp add tribal http://localhost:5000
# For directly launched server
claude mcp add tribal --launch "tribal"
# Test the connection
claude mcp list
claude mcp test tribal故障排除
验证部落安装:
which tribal检查配置:
claude mcp list测试服务器状态:
tribal status在 Claude 输出中查找错误消息
检查数据库目录是否存在并且具有适当的权限
云部署
该项目包括 AWS 服务的占位符实现:
S3Storage:用于在 Amazon S3 中存储错误记录DynamoDBStorage:使用 DynamoDB 作为数据库
执照
Available Tools
6 toolsdelete_errorB
Delete an error record.
Args:
error_id: UUID of the error record
Returns:
True if deleted, False if not found
| Name | Required | Description | Default |
|---|---|---|---|
| error_id | Yes |
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 action ('Delete') and return values, but lacks critical details: it doesn't specify if deletion is permanent/reversible, mention authentication or permission requirements, indicate side effects (e.g., cascading deletions), or note rate limits. For a destructive tool, this leaves significant gaps in understanding its 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 well-structured and front-loaded with the core purpose. It uses three concise sentences (purpose, args, returns) with zero wasted words. Each sentence earns its place by adding distinct value: action, parameter meaning, and outcome.
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 (destructive operation with no annotations and no output schema), the description is incomplete. It lacks context on safety (e.g., confirmation prompts, irreversible effects), error handling beyond 'not found', and integration with sibling tools. The return value explanation is minimal, but without an output schema, more detail on responses would be helpful.
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 0%, so the description must compensate. It adds essential semantics: it clarifies that 'error_id' is a 'UUID of the error record', which is not in the schema (which only lists 'Error Id' as the title). This provides meaningful context beyond the schema, though it doesn't elaborate on UUID format or sourcing.
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 verb ('Delete') and resource ('an error record'), making the purpose unambiguous. It distinguishes itself from siblings like 'get_error_by_id' (read) and 'track_error' (create). However, it doesn't explicitly differentiate from potential destructive siblings beyond the verb, so it's not a perfect 5.
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 'search_errors' or 'find_similar_errors'. It doesn't mention prerequisites (e.g., needing the error_id from another operation) or warn against misuse. The only implied usage is when you have an error_id to delete, but this is basic and insufficient for a destructive operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_similar_errorsC
Find errors similar to the given query.
Args:
query: Text to search for in the knowledge base
max_results: Maximum number of results to return
Returns:
List of similar error records
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No |
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 mentions returning a list of similar error records but doesn't disclose behavioral traits such as how similarity is determined, whether it's read-only, performance characteristics, or error handling. This is a significant gap for a search tool with zero annotation coverage.
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 Args and Returns sections are structured clearly, though the 'Returns' part could be more specific. Every sentence adds value, but it could be slightly more concise by integrating the sections more fluidly.
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 similarity search tool with no annotations, no output schema, and low schema coverage, the description is incomplete. It doesn't explain what 'similar' means, the return format beyond 'List of similar error records', or how results are ordered, leaving gaps for the agent to infer behavior.
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%, so the schema provides no parameter descriptions. The description adds basic semantics for 'query' ('Text to search for in the knowledge base') and 'max_results' ('Maximum number of results to return'), which compensates partially but lacks details like format constraints or default behavior beyond the schema's default value.
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 'Find errors similar to the given query' which provides a clear verb ('Find') and resource ('errors'), but it's vague about what constitutes 'similar' and doesn't distinguish from sibling tools like 'search_errors'. It's not tautological but lacks specificity about the similarity mechanism.
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 is provided on when to use this tool versus alternatives like 'search_errors' or 'get_error_by_id'. The description implies usage for finding similar errors but doesn't specify contexts, prerequisites, or exclusions, leaving the agent to guess based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_api_statusC
Check the API status.
Returns:
API status information
| 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. It states the tool 'Check[s] the API status' and 'Returns API status information', but doesn't disclose behavioral traits like whether it's read-only, requires authentication, has rate limits, or what specific information is included in the return. For a tool with zero annotation coverage, this is a significant gap.
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 concise with two sentences, but it's not front-loaded effectively. The first sentence states the purpose, but the second ('Returns: API status information') is redundant and doesn't add value beyond what's implied. It could be more structured to emphasize key details.
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 output schema, the description is incomplete. It doesn't explain what 'API status information' includes, how it's formatted, or any behavioral context. For a tool that might be critical for monitoring, this leaves too many gaps for effective agent 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 tool has 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description doesn't add parameter semantics, but this is appropriate given the lack of parameters, warranting a baseline score of 4.
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 the tool 'Check[s] the API status', which is a clear verb+resource combination. However, it doesn't differentiate this from sibling tools like 'track_error' or 'get_error_by_id' that might also provide status-related information, nor does it specify what aspects of API status are checked (health, uptime, version, etc.).
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 is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites, timing, or how it differs from sibling tools like 'track_error' or 'search_errors' that might overlap in monitoring contexts. This leaves the agent with no usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_error_by_idA
Get an error record by its ID.
Args:
error_id: UUID of the error record
Returns:
The error record or None if not found
| Name | Required | Description | Default |
|---|---|---|---|
| error_id | Yes |
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 retrieves an error record or returns None if not found, which clarifies the read-only nature and potential outcomes. However, it lacks details on permissions, rate limits, or error handling beyond the basic return 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 front-loaded with the core purpose, followed by structured sections for Args and Returns, making it highly efficient and easy to parse. Every sentence adds value without redundancy, adhering to best practices 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?
Given the tool's low complexity (one parameter, no output schema, no annotations), the description is adequate but has clear gaps. It covers the basic operation and parameter semantics but lacks details on behavioral aspects like authentication or error scenarios. Without annotations or output schema, more context 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 schema description coverage is 0%, so the description must compensate. It adds meaningful context by specifying that 'error_id' is a UUID, which clarifies the parameter's format beyond the schema's generic string type. Since there's only one parameter, this is sufficient to elevate the score above the baseline.
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 a specific verb ('Get') and resource ('an error record by its ID'), making it immediately understandable. It distinguishes this from siblings like 'search_errors' or 'find_similar_errors' by focusing on direct ID-based retrieval rather than search operations. However, it doesn't explicitly contrast with 'delete_error' or 'track_error', keeping it from a perfect 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 implies usage when you have a specific error ID, as opposed to searching or finding similar errors, but it doesn't provide explicit guidance on when to use this tool versus alternatives like 'delete_error' or 'track_error'. There's no mention of prerequisites or exclusions, leaving some ambiguity in context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_errorsC
Search for errors in the knowledge base.
Args:
error_type: Type of error to filter by
language: Programming language to filter by
framework: Framework to filter by
error_message: Error message to search for
code_snippet: Code snippet to search for
task_description: Task description to search for
max_results: Maximum number of results to return
Returns:
List of matching error records
| Name | Required | Description | Default |
|---|---|---|---|
| error_type | No | ||
| language | No | ||
| framework | No | ||
| error_message | No | ||
| code_snippet | No | ||
| task_description | No | ||
| max_results | No |
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 the tool searches and returns a list, but lacks critical details: whether it's read-only, how results are ordered, if there's pagination, error handling, or performance characteristics. For a search tool with 7 parameters, this leaves significant gaps in understanding its 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 well-structured with clear sections ('Args:', 'Returns:') and uses bullet points for parameters, making it easy to scan. It's appropriately sized for a tool with 7 parameters, though the parameter explanations are minimal. There's no wasted text, but it could be more front-loaded with key usage information.
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 (7 parameters, no annotations, no output schema), the description is incomplete. It covers the basic purpose and parameters but lacks behavioral details, usage guidelines, and output specifics. For a search tool in a knowledge base context, this leaves the agent with insufficient information to use it effectively without trial and error.
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 description lists all 7 parameters with brief labels, but schema description coverage is 0%, so the schema provides no additional documentation. The description adds basic semantic context (e.g., 'error_type: Type of error to filter by'), which helps interpret parameters beyond their names. However, it doesn't explain formats, constraints, or interactions between parameters, leaving room for ambiguity.
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: 'Search for errors in the knowledge base.' This specifies the verb ('search') and resource ('errors in the knowledge base'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'find_similar_errors' or 'get_error_by_id', which prevents a perfect 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. It doesn't mention sibling tools like 'find_similar_errors' or 'get_error_by_id', nor does it specify contexts where this search tool is preferred. The agent must infer usage from the tool name alone, which is insufficient for optimal selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_errorA
Track an error and its solution in the knowledge base.
Args:
error_type: Type of error (e.g., ImportError, TypeError)
error_message: The error message
language: Programming language (e.g., python, javascript)
framework: Framework used (e.g., fastapi, react)
code_snippet: The code that caused the error
task_description: What the user was trying to accomplish
solution_description: Brief description of the solution
solution_code_fix: Code that fixes the error
solution_explanation: Detailed explanation of why the solution works
solution_references: List of reference links
Returns:
The created error record
| Name | Required | Description | Default |
|---|---|---|---|
| error_type | Yes | ||
| error_message | Yes | ||
| language | Yes | ||
| framework | No | ||
| code_snippet | No | ||
| task_description | No | ||
| solution_description | No | ||
| solution_code_fix | No | ||
| solution_explanation | No | ||
| solution_references | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool creates a record ('track an error'), implying a write operation, but doesn't mention permissions needed, whether the operation is idempotent, rate limits, or what happens on failure. The return statement is minimal ('The created error record') without format details.
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 well-structured with clear sections (purpose, args, returns) and uses bullet-like formatting for parameters. Every sentence earns its place by explaining functionality or parameters. It could be slightly more concise in the parameter explanations but remains efficient overall.
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 10-parameter creation tool with no annotations and no output schema, the description provides good parameter documentation but lacks behavioral context. It explains what data to provide but not how the tool behaves operationally (e.g., error handling, authentication). The return value is mentioned but not described in detail.
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 and 10 parameters, the description provides comprehensive parameter semantics beyond the schema. It clearly explains each parameter's purpose with examples (e.g., 'error_type: Type of error (e.g., ImportError, TypeError)'), adding significant value that compensates for the schema's lack of 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's purpose with a specific verb ('track') and resource ('error and its solution in the knowledge base'). It distinguishes from sibling tools like 'delete_error', 'find_similar_errors', and 'search_errors' by focusing on creation rather than deletion, retrieval, or search 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 'search_errors' or 'find_similar_errors'. It mentions no prerequisites, exclusions, or specific contexts for usage, leaving the agent to infer when this creation tool is appropriate versus other operations.
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.
6 tool updates
- First observed
delete_error - First observed
find_similar_errors - First observed
get_api_status - First observed
get_error_by_id - First observed
search_errors - First observed
track_error
TDQS
Scored across 6 tools
Most tools have distinct purposes: track_error creates records, get_error_by_id retrieves single records, delete_error removes them, search_errors filters by multiple criteria, and find_similar_errors performs semantic similarity searches. However, search_errors and find_similar_errors could potentially be confused as both search for errors, though their approaches differ (filtering vs. similarity).
All tools follow a consistent verb_noun pattern with snake_case: delete_error, find_similar_errors, get_api_status, get_error_by_id, search_errors, and track_error. The naming is predictable and readable throughout the set.
With 6 tools, this is well-scoped for a knowledge base service focused on error tracking. Each tool serves a clear purpose (CRUD operations, searching, and status checks), and none feel redundant or missing given the domain.
The toolset covers core CRUD operations (create via track_error, read via get_error_by_id, delete via delete_error) and searching (search_errors, find_similar_errors), with get_api_status for monitoring. A minor gap is the lack of an update tool to modify existing error records, which agents might need to work around by deleting and recreating.
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
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
Cloud-hosted MCP server for durable AI memory
- mcpOAuthai.butlerbrain
Persistent memory for AI assistants. Save once; recall from Claude, ChatGPT, or any MCP client.
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that gives Claude persistent memory by storing conversation context, entities, and enabling semantic search across sessions.61MIT
- AlicenseAqualityDmaintenanceAn MCP server that lets Claude Code recall the context of past conversations from any project on demand.5372MIT
- AlicenseBqualityBmaintenanceA persistent memory MCP server for Claude Code that automatically saves conversations and retrieves relevant history across sessions to provide context.1711MIT
- FlicenseAqualityDmaintenanceMCP server that indexes a knowledge base of past bugs and fixes, making them searchable via BM25 from Claude Code or any MCP client.4-