Skip to main content

AgentKit — A Governed MCP Tool Server

CI License: AGPL v3

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/latest and 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 engineGET /api/policy publishes the capability envelope
  • Audit trailGET /api/audit, allowed and denied, with deny reasons
  • Multi-provider LLM routing incl. self-hostedGET /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 to anthropic/claude-sonnet-4-6)
  • LLM_DEFAULT — the tool-calling analyst agent (defaults to groq/llama-3.3-70b-versatile)
  • LLM_JUDGE — used by the eval suite (defaults to anthropic/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_LEVEL to DEBUG for 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)

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.

telemetry

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

agentkit_mcp-0.1.9.tar.gz (141.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

agentkit_mcp-0.1.9-py3-none-any.whl (133.7 kB view details)

Uploaded Python 3

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

Hashes for agentkit_mcp-0.1.9.tar.gz
Algorithm Hash digest
SHA256 62495d2ae6c064d20c4754f1577a4e10544f8ec9fce1ae9080852bf5d6d419d3
MD5 bea3003b138cf3bb71a489ce2529e7b0
BLAKE2b-256 efb74148695f1fdd59cdc86ae4134780ac5f04e14efacce15f7afc0a1ddb4bb0

See more details on using hashes here.

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

Hashes for agentkit_mcp-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 80edcd45259f839bf2b41fb945c33c19c94890a40d794a66d7229c6ae31b5046
MD5 81ec7a51a9959fd798d4210e9aa02e63
BLAKE2b-256 c82f3f7cefb43fdb4bb02bfb0062dfdec738d9932d0b4df5d84df60255d27958

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page