Connecting MCP Servers
What this gives you: Claude connected directly to your live business data. Your calendar, CRM, payment system, project boards, and meeting transcripts - all accessible in one conversation. Ask 'what revenue did we do this month?' and get a real answer.
What Is MCP?
MCP stands for Model Context Protocol. It is an open standard developed by Anthropic that defines how AI models connect to external tools and data sources. Think of it as a standardised plug socket: instead of every AI tool and every data source needing a custom integration, they both implement MCP and they just work together.
Before MCP, connecting Claude to an external service meant writing custom code: an API wrapper, a function that Claude could call, error handling, auth management. It worked, but every integration was its own small project. MCP standardises all of that. You configure a server once, and Claude gets native access to every tool that server exposes - no custom code, no wrappers.
How it differs from manual API calls
When you ask Claude to "check my Stripe revenue," there are two ways it can do that. The old way: Claude writes a curl command, you run it, paste the output back, Claude reads it. Or Claude writes a Python script, you execute it, copy the JSON, paste it in. Every step is manual and the context gets polluted with raw API responses.
With MCP: Claude has a stripe_list_charges tool. It calls it directly, receives structured data, and uses it - all in the same turn. No copy-paste, no script-writing, no context pollution. The tool call is invisible to you. You just see the answer.
| Approach | How It Works |
|---|---|
| Manual API calls | Write code, execute, paste output, Claude reads it. 3-5 manual steps per data fetch. |
| MCP tool calls | Claude calls the tool, reads the result, responds. Zero manual steps. |
| Latency | MCP calls complete in under 2 seconds for most services. No file I/O, no subprocess overhead. |
| Context | MCP results are injected into Claude's context cleanly. Raw API paste can eat 2,000+ tokens for simple responses. |
The 10 MCP Servers Used Daily
These are not theoretical - these are the servers running in an active Claude Code setup, used across real client work every day. Each one is listed with what it gives you and the primary use cases.
| Server | What It Connects | What You Can Do |
|---|---|---|
| Google Calendar | Your calendar | Check availability, create events, see upcoming meetings |
| GoHighLevel | Your CRM | Search contacts, view conversations, update pipeline stages |
| n8n | Your automation platform | Create workflows, trigger automations, manage connections |
| Trello | Your project boards | Create cards, move tasks, add comments, manage checklists |
| Notion | Your knowledge base | Search pages, create docs, update databases |
| Stripe | Your payments | Check revenue, view customers, pull subscription data |
| Fireflies | Your meeting recordings | Search transcripts, get summaries, extract action items |
| fal.ai | AI image/video generation | Generate thumbnails, edit images, create video |
| Canva | Your design tool | Create designs, export assets, use brand kits |
| Apify | Web scraping | Scrape LinkedIn, extract website data, run actors |
Configuration: settings.json Structure
MCP servers are configured in ~/.claude/settings.json. This file is read by Claude Code at startup. Each server gets its own entry under the mcpServers key.
${VAR_NAME} syntax in settings.json - Claude Code automatically reads these from your environment. Your secrets stay in ~/.env and are never hardcoded into the config file.Walkthrough: Connect Google Calendar MCP
Google Calendar is the most useful first MCP to connect because it immediately unlocks meeting prep and scheduling workflows. Here is the full process from zero to working tool calls.
Step 1: Create a Google Cloud project
Go to console.cloud.google.com and create a new project. Name it something like "Claude Code MCP." Inside the project, enable the Google Calendar API from the API Library.
Step 2: Create OAuth2 credentials
In the Google Cloud Console, go to APIs and Services > Credentials. Create an OAuth 2.0 Client ID. Set the application type to "Desktop app." Download the JSON credentials file - you'll need the client_id and client_secret from it.
Step 3: Generate the refresh token
Step 4: Add credentials to ~/.env
Step 5: Add to settings.json
Add the Google Calendar entry to ~/.claude/settings.json as shown in the configuration section above.
Step 6: Verify
Restart Claude Code and ask: "What's on my calendar today?" Claude should call the list_events tool and return your actual calendar data. If it returns an error, check that your ~/.env is being sourced in your shell profile (source ~/.env in ~/.zshrc).
Walkthrough: Connect GoHighLevel MCP
GHL is the highest-leverage MCP for service businesses. Every contact, pipeline, conversation, and appointment lives there. Connecting it to Claude gives you a CRM you can talk to.
Step 1: Generate your GHL API key
In GoHighLevel, go to Settings > Integrations > API Keys. Create a new API key. Give it a descriptive name like "Claude Code MCP." Copy the key immediately - GHL only shows it once.
Step 2: Find your Location ID
Your Location ID is in the GHL URL when you're inside a sub-account: app.gohighlevel.com/location/abc123xyz/dashboard. Copy the alphanumeric string - that is your Location ID.
ghl-client-a and ghl-client-b. Never mix credentials across client accounts.Step 3: Add to ~/.env and settings.json
Step 4: Verify
Restart Claude Code and ask: "Search my CRM for [a contact name you know exists]." Claude should call search_contacts and return the matching record with their pipeline stage, tags, and contact details.
Security: Credentials and Permissions
Two rules that protect you from the most common MCP security mistakes:
| Rule | Why It Matters |
|---|---|
| Read-only by default | For any agent that runs automatically (scheduled, triggered by webhook, or managed by a VA), use read-only API keys where the service supports them. GHL has read-only tokens. Stripe has restricted keys. Use them. An agent that can only read cannot accidentally delete data or send messages. |
| Credentials in .env, never in settings.json | The ${VAR_NAME} syntax exists precisely for this. Your settings.json can be committed to a private dotfiles repo safely because it contains no actual secrets - only references to environment variables that live in ~/.env. |
Troubleshooting MCP Connection Issues
The most common failure modes and how to resolve them:
Tool calls return "tool not found"
The MCP server is not connecting at startup. Check: (1) the package name in args is spelled correctly, (2) npx can install it (run the npx command manually in your terminal), (3) Claude Code has been restarted since you edited settings.json - changes are not hot-reloaded.
Authentication errors
The env vars are not being loaded. Check: (1) your ~/.env file has the correct variable names matching exactly what settings.json references, (2) your shell profile sources ~/.env on startup (grep "source ~/.env" ~/.zshrc), (3) the API key hasn't expired or been revoked.
Tool calls succeed but return empty data
Auth is working but permissions are wrong. This usually means the API key has access to a different location/workspace than the one you're querying. Double-check the Location ID, workspace ID, or account ID matches the data you're expecting.
Slow tool calls (5+ seconds)
MCP servers launched via npx download the package on first use. After the first call they're cached. If you're consistently seeing slow calls, consider installing the package globally: npm install -g @modelcontextprotocol/server-google-calendar and changing the command to the installed binary path.