Onur Ovalı

Official Python Libraries > MCPs

I use Claude Code daily for my work. After watching Teresa Torres on Peter Yang's podcast running her entire life through Claude Code, I wanted to connect my Google Calendar, Gmail, and Notion to it too. But I kept looking at MCPs as the only solution. Since I didn't trust any of them, I just... didn't do it.

Then I saw David Siegel's claude-canvas demo and asked which MCP he was using. His reply: "Just using official python libraries." I was enlightened 😅 and decided to use each product's official Python libraries.

The MCP Problem

MCPs expose only a subset of what APIs can do. Limited schemas, missing capabilities, poor error handling. I spent more time working around MCP limitations than actually getting work done.

The Python Library Approach

So I built ai-agent-tools - a Python CLI that wraps the actual Google and Notion APIs. The key insight: AI agents don't need fancy protocols. They need CLI tools with JSON output.

Here's what it looks like in practice:

# List my calendar events
aitools google calendar list --days 7 --json

# Check my Notion tasks
aitools notion tasks list DATABASE_ID --status "Todo" --json

# Create a new task
aitools notion tasks create DATABASE_ID "Write blog post" --priority High

Every command supports --json for structured output that Claude can parse. No protocol overhead, no schema limitations, just direct API access.

Architecture: Library + Skill

Architecture diagram: ai-agent-tools connects AI agents to external productivity services through Claude Code skills and official Python libraries from Google and Notion
ai-agent-tools connects AI agents to external productivity services through Claude Code skills and official Python libraries

The clever part is the separation of concerns:

This means you can clone the library, install it, and then create a simple skill file that tells Claude how to use it for your specific setup:

---
name: my-productivity
description: Use when user asks about tasks, calendar, or email
---

# My Productivity Tools

## Notion Config
- Todo Database ID: abc123...
- Schema: Task (title), Status, Priority, topic, due date

## Commands
List tasks: aitools notion tasks list abc123 --json
Create task: aitools notion tasks create abc123 "Title" --status Todo

Now when I say "add a task to buy groceries", Claude knows exactly which database to use and how to format the command.

Get It

The library is open source: github.com/jnuo/ai-agent-tools

Currently it supports:

Contributions are welcome. If you want to add support for another API, fork the repo, add your integration, and send a PR.

If you're frustrated with MCP limitations, give this approach a try. Sometimes the simplest solution - a CLI with JSON output - is the best one.

Back to blog Home