Tribal is an MCP (Model Context Protocol) server implementation for error knowledge tracking and retrieval. It provides both REST API and native MCP interfaces for integration with tools like Claude Code and Cline. Tribal helps Claude remember and learn from programming errors, storing solutions and searching for similar problems when encountered.
cd /path/to/tribal
uv pip install .
cd /path/to/tribal
uv pip install -e .
cd /path/to/tribal
uv pip install build
python -m build
uv pip install dist/tribal-0.1.0-py3-none-any.whl
uv tool install
commandcd /path/to/tribal
uv tool install .
which tribal
tribal version
claude mcp add tribal --launch "tribal"
claude mcp list
claude mcp add tribal http://localhost:5000
add_error
- Create new error record (POST /errors)get_error
- Retrieve error by UUID (GET /errors/{id})update_error
- Modify existing error (PUT /errors/{id})delete_error
- Remove error record (DELETE /errors/{id})search_errors
- Find errors by criteria (GET /errors)find_similar
- Semantic similarity search (GET /errors/similar)get_token
- Obtain JWT token (POST /token)When Claude encounters an error:
I'll track this error and look for similar problems in our knowledge base.
When Claude finds a solution:
I've found a solution! I'll store this in our knowledge base for next time.
You can ask Claude to:
tribal
tribal help
tribal version
tribal server --port 5000 --auto-port
python -m mcp_server_tribal.mcp_app
python -m mcp_server_tribal.app
mcp-server
mcp-api
mcp-api --reload
mcp-server --reload
mcp-api --port 8080
mcp-server --port 5000
mcp-api --auto-port
mcp-server --auto-port
PERSIST_DIRECTORY
: ChromaDB storage path (default: "./chroma_db")API_KEY
: Authentication key (default: "dev-api-key")SECRET_KEY
: JWT signing key (default: "insecure-dev-key-change-in-production")REQUIRE_AUTH
: Authentication requirement (default: "false")PORT
: Server port (default: 8000)MCP_API_URL
: FastAPI server URL (default: "http://localhost:8000")MCP_PORT
: MCP server port (default: 5000)MCP_HOST
: Host to bind to (default: "0.0.0.0")API_KEY
: FastAPI access key (default: "dev-api-key")AWS_ACCESS_KEY_ID
, AWS_SECRET_ACCESS_KEY
, AWS_S3_BUCKET
: For AWS integrationPOST /errors
: Create new error recordGET /errors/{error_id}
: Get error by IDPUT /errors/{error_id}
: Update error recordDELETE /errors/{error_id}
: Delete errorGET /errors
: Search errors by criteriaGET /errors/similar
: Find similar errorsPOST /token
: Get authentication tokenmcp-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"
mcp-client --action get --id <error-id>
mcp-client --action search --error-type ImportError --language python
mcp-client --action similar --query "ModuleNotFoundError: No module named 'pandas'"
pytest
pytest tests/path_to_test.py::test_name
ruff check .
mypy .
black .
This project uses GitHub Actions for continuous integration and deployment. The workflow automatically runs tests, linting, and type checking on push to main and pull requests.
chmod +x scripts/test-workflow.sh
./scripts/test-workflow.sh
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 follows Semantic Versioning. See VERSIONING.md for complete details.
uv pip add <package-name>
uv pip sync requirements.txt requirements-dev.txt
docker-compose up -d --build
docker-compose logs -f
docker-compose down
API_PORT=8080 MCP_PORT=5000 REQUIRE_AUTH=true API_KEY=your-secret-key docker-start
~/Library/Application Support/Claude/claude_desktop_config.json
Add the MCP server configuration:
json
{
"mcpServers": [\
{\
"name": "tribal",\
"launchCommand": "tribal"\
}\
]
}
Restart Claude for Desktop
Start the container:
shell
cd /path/to/tribal
docker-start
Configure Claude for Desktop:
json
{
"mcpServers": [\
{\
"name": "tribal",\
"url": "http://localhost:5000"\
}\
]
}
claude mcp add tribal http://localhost:5000
claude mcp add tribal --launch "tribal"
claude mcp list
claude mcp test tribal
which tribal
claude mcp list
tribal status
The project includes placeholder implementations for AWS services:
S3Storage
: For storing error records in Amazon S3DynamoDBStorage
: For using DynamoDB as the database