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
The clever part is the separation of concerns:
- The library is generic: No credentials, no personal configuration. Just Python code that wraps APIs.
- The skill is personal: A Claude Code skill file contains YOUR database IDs, YOUR timezone, YOUR preferences.
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:
- Google Calendar and Gmail (OAuth)
- Notion tasks and pages (API key)
- Example Claude Code skill template
- Comprehensive docs on setting up credentials
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.