Karini MCP Server
MCP (Model Context Protocol) server for integrating Karini AI copilots, webhook recipes, and dataset search.
Features
- 🤖 AI Copilot Integration - Ask questions and get AI-powered responses from your Karini copilots
- 📄 Document Processing - Process documents stored in S3 through copilots and webhooks
- 🔗 Webhook Recipes - Trigger asynchronous data processing workflows
- 📊 Status Tracking - Monitor webhook execution status and results
- 🔍 Dataset Search - Query your Karini knowledge base with semantic search
- 🔎 Event Tracing - Trace and debug Karini events by request ID
Installation
Via uvx (Recommended)
uvx karini-mcp-server
Via pip
pip install karini-mcp-server
Configuration
Claude Desktop Setup
Edit your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Full Configuration (All Features)
{
"mcpServers": {
"karini-mcp-server": {
"command": "uvx",
"args": ["karini-mcp-server@latest"],
"env": {
"KARINI_API_BASE": "https://app.karini.ai",
"KARINI_COPILOT_ID": "karini-copilot-id",
"KARINI_API_KEY": "karini-api-key",
"WEBHOOK_API_KEY": "karini-webhook-api-key",
"WEBHOOK_RECIPE_ID": "karini-webhook-recipe-id",
"KARINI_DATASET_ID": "karini-dataset-id"
}
}
}
}
Copilot Only Configuration
{
"mcpServers": {
"karini-mcp-server": {
"command": "uvx",
"args": ["karini-mcp-server@latest"],
"env": {
"KARINI_API_BASE": "https://app.karini.ai",
"KARINI_COPILOT_ID": "karini-copilot-id",
"KARINI_API_KEY": "karini-api-key"
}
}
}
}
Webhook Only Configuration
{
"mcpServers": {
"karini-mcp-server": {
"command": "uvx",
"args": ["karini-mcp-server@latest"],
"env": {
"KARINI_API_BASE": "https://app.karini.ai",
"WEBHOOK_API_KEY": "karini-webhook-api-key",
"WEBHOOK_RECIPE_ID": "karini-webhook-recipe-id"
}
}
}
}
Dataset Search Only Configuration
{
"mcpServers": {
"karini-mcp-server": {
"command": "uvx",
"args": ["karini-mcp-server@latest"],
"env": {
"KARINI_API_BASE": "https://app.karini.ai",
"KARINI_API_KEY": "karini-api-key",
"KARINI_DATASET_ID": "karini-dataset-id"
}
}
}
}
Note: Only tools with valid configuration will be available. Configure only the features you need.
Environment Variables
| Variable | Required For | Description |
|---|---|---|
KARINI_API_BASE |
All | Base URL for Karini API (e.g., https://app.karini.ai) |
KARINI_API_KEY |
Copilot, Dataset, Tracing | API key for authentication |
KARINI_COPILOT_ID |
Copilot | Your copilot's unique identifier |
KARINI_DATASET_ID |
Dataset | Your dataset's unique identifier |
WEBHOOK_API_KEY |
Webhook | API key for webhook authentication |
WEBHOOK_RECIPE_ID |
Webhook | Webhook recipe identifier |
Available Tools
Copilot Tools
ask_karini_copilot
Ask questions to your Karini AI copilot and receive intelligent responses.
Parameters:
question(string, required): The question or query to askfiles(list, optional): S3 file paths to include in the query- Example:
["s3://bucket/document.pdf", "s3://bucket/data.txt"]
- Example:
Webhook Tools
invoke_webhook_recipe
Trigger a webhook recipe for asynchronous data processing.
Parameters:
question(string, optional): Input message or queryfiles(list, optional): S3 file paths to process (content type auto-detected)- Example:
["s3://bucket/invoice.pdf", "s3://bucket/receipt.jpg"]
- Example:
metadata(dict, optional): Additional context as key-value pairs- Example:
{"user_id": "123", "priority": "high", "source": "email"}
- Example:
Returns: JSON with request_id for status tracking
get_webhook_status
Check the status of webhook recipe executions.
Parameters:
request_id(string, optional): Specific request ID to check. If not provided, returns recent requests.limit(integer, optional): Number of recent requests to return (default: 5)
Dataset Tools
query_karini_dataset
Search and retrieve information from your Karini knowledge base using semantic search.
Parameters:
text(string, required): The search query or questiontop_k(integer, optional): Number of results to return (default: 5, max: 20)
Tracing Tools
get_traces
Trace and retrieve detailed information about a specific Karini event using its request ID.
Parameters:
request_id(string, required): The unique identifier of the Karini event to trace
Returns: Detailed trace information including execution steps, timing, and debug data
Examples:
Trace event "67309a4f8b1c2d3e4f5a6b7c"
Get traces for request ID "abc123def456"
Development
Local Testing
# Clone repository
git clone https://github.com/yourusername/karini-mcp-server.git
cd karini-mcp-server
# Install dependencies
pip install -e .
# Run locally
python -m src.main
Project Structure
karini-mcp-server/
├── src/
│ ├── main.py # Entry point
│ ├── server.py # MCP server setup
│ ├── services/
│ │ ├── config.py # Configuration management
│ │ └── client.py # Karini API client
│ └── tools/
│ └── tools.py # Tool definitions
├── pyproject.toml
└── README.md
Metadata
Release files for karini-mcp-server-test 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| karini_mcp_server_test-0.1.2.tar.gz | 7.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| karini_mcp_server_test-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 17.0 kB
Release files / karini_mcp_server_test-0.1.2.tar.gz
| Download URL | karini_mcp_server_test-0.1.2.tar.gz |
|---|---|
| Size | 7.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b7e3a8e4cf7dd52e6e506f533cc30133c42b3bfd3396aaa9ca65acc22664f52d
|
|
BLAKE2b-256 checksum How to use checksums |
bab3cc47845032837d55dfa8964ea014cf89755f4f4fcd3fd70757d91f45ac58
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.9
|
Release files / karini_mcp_server_test-0.1.2-py3-none-any.whl
| Download URL | karini_mcp_server_test-0.1.2-py3-none-any.whl |
|---|---|
| Size | 9.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
152d6dd9ae5c6b492017dad726b33860ba16f56c1999ed3b9c1cef01f2ad755c
|
|
BLAKE2b-256 checksum How to use checksums |
a70ef5093b675b8e630765ffa18dd26ff10e2d7b76939940837f07d67a74f454
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.9
|