AgentKit — A Governed MCP Tool Server
An MCP server where tools are declarative, effects are typed, and every action is policy-gated and audited — usable by any MCP client (Claude Desktop, Cursor, LangGraph, Claude Agent SDK, CrewAI).
Three things distinguish it from a typical MCP server:
- Declarative tools — define tools in YAML over your own Postgres or HTTP API. No Python, no fork. (docs/REUSE.md)
- Real actions, not just reads — tools declare an effect (
read/write/destructive) and mutating tools genuinely mutate. - Guardrails that hold regardless of the prompt — writes are off by default, destructive actions need a human-held approval token the model never sees, everything supports dry-run, and every call (allowed and denied) is audited. (SECURITY.md)
The bundled business-intelligence tools below are the reference pack that demonstrates all of this — not the limit of what the server does.
🔗 Live MCP server (dashboard): https://agentkit.ysiddo-ai-projects.app — connect from Claude Desktop via
mcp-remote(see claude_desktop_config.example.json). On-demand backend (first call ~30–60 s). Self-hosting: see SELF_HOSTING.md.
What It Does
Reference BI pack (built in):
- 6 MCP Tools:
query_kpis,get_company_health,detect_kpi_anomalies,forecast_metric,list_available_metrics,get_executive_summary - 6 MCP Resources:
kpi://Finance/latestand similar for Growth, Operations, People, ESG, IT_Ops - 1 Reusable Prompt:
monthly_executive_briefing
Platform capabilities:
- Declarative tool packs — add tools over your own Postgres/HTTP in YAML (
packs/) - Typed effects + policy engine —
GET /api/policypublishes the capability envelope - Audit trail —
GET /api/audit, allowed and denied, with deny reasons - Multi-provider LLM routing incl. self-hosted —
GET /api/llm-routing - LangGraph 3-agent workflow in
workflow.py(Planner → Analyst → Reporter) - Claude Agent SDK demo in
demos/claude_agent_sdk_demo.py - CrewAI demo in
demos/crewai_demo.py - DSPy research scaffold in
research/dspy_experiment.py - 34 tests across smoke, API, integration, and LangGraph workflow
PyPI Package
pip install agentkit-mcp # v0.1.9
agentkit-mcp # CLI entrypoint
Quick Start
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # fill in keys + POSTGRES_URL
python mcp_server.py
Claude Desktop Setup
Add to ~/.config/Claude/claude_desktop_config.json:
{
"mcpServers": {
"agentkit": {
"command": "python",
"args": ["/abs/path/to/agentkit/mcp_server.py"],
"env": {
"MCP_TRANSPORT": "stdio",
"POSTGRES_URL": "postgresql://...",
"LOG_LEVEL": "DEBUG",
"TELEMETRY_OPT_OUT": "true"
}
}
}
}
MCP_TRANSPORT=stdio is required here — without it mcp_server.py defaults to serving
over SSE (a network port) instead of talking JSON-RPC over the pipes Claude Desktop
spawns it with, and no tools will appear. Local stdio mode doesn't need
MCP_AUTH_TOKEN (the OS process boundary is the auth boundary); that variable only
matters for the SSE/network path — e.g. connecting to a remote deployment via
mcp-remote (see the note at the top of this README).
Multi-Provider LLM Routing
The 3-agent LangGraph workflow (workflow.py) and the demos/research scripts route
each role to its own model via LiteLLM, configured with
plain provider/model strings — no code changes to switch providers:
LLM_REASONING— planner + reporter agents (defaults toanthropic/claude-sonnet-4-6)LLM_DEFAULT— the tool-calling analyst agent (defaults togroq/llama-3.3-70b-versatile)LLM_JUDGE— used by the eval suite (defaults toanthropic/claude-haiku-4-5)LLM_LOCAL+INFERENCE_MODE=local— route to a local/self-hosted model (e.g. Ollama) instead of a hosted provider
Set the matching provider API key(s) (GROQ_API_KEY, ANTHROPIC_API_KEY,
OPENAI_API_KEY) for whichever models you reference above. See .env.example.
- Diagnostics: adjust
LOG_LEVELtoDEBUGfor verbose logs. - Telemetry: an anonymous startup ping is sent by default; disable with
TELEMETRY_OPT_OUT=true.
Restart Claude Desktop, then ask:
- "What's our company health right now?"
- "Forecast revenue for the next 6 months."
- "Are there anomalies in the Finance KPIs?"
LangGraph Workflow
from agentkit_mcp.workflow import analyze
result = analyze("What drove gross margin in Q1?")
print(result["report"])
Architecture
Claude Desktop / Cursor / LangGraph
│
▼ MCP
┌──────────────────┐
│ mcp_server.py │
│ 6 tools │
│ 6 resources │
│ 1 prompt │
└────────┬─────────┘
│
┌──────────────┼──────────────┐
▼ ▼ ▼
pg_store insights forecasting
(KPIs) (health, (LinearReg
anomalies) + Monte Carlo)
Research Novelty & Scientific Contributions
AgentKit is both industry-proof and scientifically reproducible:
- Standardized Model Context Protocol (MCP) Middleware: Unified stdio and SSE transport for hot-swappable agent tools.
- Zero-Latency Schema Validation: Formal runtime schema type checking and injection safety bounds.
- Multi-Agent Interoperability: Tested and verified across Claude Desktop, Cursor IDE, and Devin AI.
For full theoretical formulation, math bounds, and citation details, see RESEARCH.md.
Benchmark Replication Suite
Run the reproducible benchmark evaluation suites:
# Test MCP framework overhead
python3 eval/run_benchmarks.py --seed 42
# Test Agent Tool Selection & Quality
python3 eval/run_agent_eval.py
# Test Comprehensive MCP Tool Execution Metrics
python3 eval/run_mcp_tools_benchmark.py
Integration Guides (Claude Desktop, Cursor, Devin)
- Claude Desktop: See claude_desktop_config.example.json and docs/INTEGRATION_GUIDE.md
- Cursor IDE: See cursor_mcp.example.json
- Devin AI Agent: See devin_mcp.example.json
Automated client verification:
python3 tests/test_mcp_client.py
License & Enterprise Use (Dual-License)
This project is open-source under the AGPL-3.0 License. It is completely free for researchers, students, and open-source hobbyists. Commercial license: see COMMERCIAL.md.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agentkit_mcp-0.1.9.tar.gz.
File metadata
- Download URL: agentkit_mcp-0.1.9.tar.gz
- Upload date:
- Size: 141.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
62495d2ae6c064d20c4754f1577a4e10544f8ec9fce1ae9080852bf5d6d419d3
|
|
| MD5 |
bea3003b138cf3bb71a489ce2529e7b0
|
|
| BLAKE2b-256 |
efb74148695f1fdd59cdc86ae4134780ac5f04e14efacce15f7afc0a1ddb4bb0
|
File details
Details for the file agentkit_mcp-0.1.9-py3-none-any.whl.
File metadata
- Download URL: agentkit_mcp-0.1.9-py3-none-any.whl
- Upload date:
- Size: 133.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
80edcd45259f839bf2b41fb945c33c19c94890a40d794a66d7229c6ae31b5046
|
|
| MD5 |
81ec7a51a9959fd798d4210e9aa02e63
|
|
| BLAKE2b-256 |
c82f3f7cefb43fdb4bb02bfb0062dfdec738d9932d0b4df5d84df60255d27958
|