Music Graph Project: Upgrading My AI Workflow with MCP
This is somewhat of a one off post for the project. I was feeling the pain of all the cutting and pasting I was doing. This is caused a problem for me because I didn’t want to relinqish full control to AI with something like claude code. I also didn’t want to pay per api call/token. I came up with the idea of using MCP servers as a bridge. This way I could still control the code, but offload boring tasks to Claude like writing these blog posts. Below is the unedited post describing our MCP setup written by Claudecd
Before diving into Phase 6 (CI/CD), I needed to solve a growing pain point in my development workflow. The copy/paste approach that worked fine in Phase 1 was becoming a significant friction point as the project grew.
The Problem
My workflow through Phase 5 looked like this:
- Have a conversation with Claude about what to build
- Copy code from my editor into Claude
- Get suggestions/fixes from Claude
- Copy code back to my editor
- Repeat for every file that needed changes
For small tasks: Annoying but manageable.
For Phase 5 deployment: Painful. I was juggling terraform files, Docker configs, Nginx configuration, Python code, and environment variables across multiple sessions. The context window limits meant I couldn’t show Claude everything at once.
For Phase 6 and beyond: Unsustainable. CI/CD will touch even more files across multiple repositories.
The Options I Considered
Option 1: Keep the current workflow
- Pros: Free (included in $20/month Claude Pro), familiar
- Cons: Doesn’t scale, wastes time, limits what’s possible
Option 2: Switch to Cline (VS Code extension with API)
- Pros: Direct file access, works in my editor
- Cons: API costs (variable, potentially expensive), changes my interface
Option 3: Use Model Context Protocol (MCP)
- Pros: Direct file access, uses existing Claude Pro subscription, same interface
- Cons: Newer technology, requires setup
I went with MCP. Here’s why and how.
What is MCP?
Model Context Protocol is a standard way to give AI assistants access to external data sources and tools. In my case, MCP servers give Claude Desktop direct read/write access to:
- My local file system
- GitHub repositories
- Potentially databases, APIs, or other services (future use)
The key insight: This isn’t about replacing Claude - it’s about giving the same Claude I’ve been working with better access to the project files.
Why MCP Over API-Based Tools
Cost: MCP uses my existing Claude Pro subscription ($20/month). API access with Cline would add variable costs that could get expensive during deep coding sessions.
Continuity: The entire Music Graph project has been a “journey with Claude.” Switching to a different AI model or interface would break that narrative, especially since I’m documenting the process on my blog.
Familiarity: I’m already comfortable with Claude Desktop’s interface. MCP just enhances it rather than requiring me to learn a new tool.
Control: I still review and approve every change. MCP gives Claude file access, not autonomous execution.
What I Set Up
I configured three MCP servers:
1. GitHub MCP Server
- Access to music-graph repository
- Access to blog repository (billgrant.github.io)
- Can read code, create branches, view issues
Why: Some code changes happen on the GCP VM and are only visible in the GitHub repo. This solves the “code exists but I can’t easily show it to Claude” problem.
2. Local Music-Graph Filesystem
- Direct access to
/home/billgrant/code/music-graph - Read/write terraform files, Docker configs, Python code
- Test changes before committing
Why: For local development and changes I want to test before pushing to GitHub.
3. Local Blog Filesystem
- Direct access to
/home/billgrant/code/billgrant.github.io - Create/edit blog posts, update project documentation
Why: Creating blog posts involves updating multiple files (new post, intro post, README). MCP lets this happen in one conversation instead of multiple copy/paste cycles.
The Setup Process
Prerequisites:
- Claude Desktop installed
- Node.js/npx available (for running MCP servers)
- GitHub personal access token
Configuration file location:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - Mac:
~/Library/Application Support/Claude/claude_desktop_config.json
My configuration:
{
"mcpServers": {
"github": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-github"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_your_token_here"
}
},
"filesystem-music-graph": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"\\\\wsl$\\Ubuntu\\home\\billgrant\\code\\music-graph"
]
},
"filesystem-blog": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"\\\\wsl$\\Ubuntu\\home\\billgrant\\code\\billgrant.github.io"
]
}
}
}
Note the WSL path format: \\\\wsl$\\Ubuntu\\... allows Windows applications to access WSL2 file systems.
After editing the config:
- Save the file
- Completely quit Claude Desktop (not just close - quit from system tray)
- Restart Claude Desktop
- MCP tools appear automatically in conversations
Testing the Setup
To verify everything worked, I had Claude:
- Read the music-graph README from GitHub
- List files in the local music-graph directory
- List files in the blog directory
All three operations succeeded without any copy/pasting on my part.
What This Changes
Old workflow (writing a blog post):
- Draft post with Claude in chat
- Copy post content to new file
- Open intro post and copy to Claude
- Get updated intro post
- Copy back to file
- Open README and copy to Claude
- Get updated README
- Copy back to file
New workflow: “Create Phase X blog post, update intro post to link to it, and update README progress”
Claude does all of it in one conversation. I review the changes and commit.
For Phase 6 work:
- Claude can read terraform configurations directly
- Can update multiple docker-compose files in one go
- Can reference GitHub issues and pull requests
- Can create documentation alongside code changes
Cost Comparison
Current setup (MCP with Claude Pro): $20/month (what I was already paying)
If I had gone with Cline/API: $20/month (Pro) + variable API costs
- Light usage: maybe $10-15/month additional
- Heavy coding sessions: could be $30-50/month or more
- No built-in spending limits (risk of surprise bills)
For a personal project where I’m already taking breaks when I hit message limits, the fixed cost model works better.
What I’m NOT Changing
I’m still doing the coding. MCP gives Claude better context and eliminates copy/paste friction, but I’m still:
- Making architectural decisions
- Writing the code (with assistance)
- Understanding what I’m building
- Learning the technologies
This isn’t about letting AI write my project - it’s about removing workflow friction so I can focus on learning and building.
Future MCP Plans
Once I have the Music Graph API built (future phase), I’m planning to:
- Build a custom MCP server that wraps the API
- Explore what it means to query my own application through Claude
- Learn MCP server development as a skill
This is partly learning (“how do you build an MCP server?”) and partly exploration (“what would conversational access to my music graph look like?”).
Lessons Learned
MCP is new but stable enough: I was concerned about using newer technology, but the filesystem and GitHub servers worked immediately without issues.
WSL path quirks: The \\wsl$\Ubuntu\... path format was the only real gotcha. Standard WSL paths didn’t work from Windows applications.
Three servers is the right balance: GitHub for reference, local filesystems for active work. More than that might be overkill for this project.
Setup time investment: Took about 30 minutes total, including generating the GitHub token and figuring out the WSL path format. Well worth it.
What’s Next
With MCP in place, I’m ready to tackle Phase 6: CI/CD and DevOps. The workflow improvements will be especially valuable for:
- GitHub Actions configuration (YAML files)
- Terraform updates (infrastructure changes)
- Documentation updates (README, blog posts)
- Managing multiple environments (dev/prod)
The goal for Phase 6 is to enable continuous development without disrupting Aidan’s use of the production application. MCP makes the multi-file, multi-repo coordination much more manageable.
Alternative: Try Cline Later
I’m not ruling out Cline entirely. Once I have experience with MCP, I plan to:
- Try Cline for one complete phase (maybe Phase 7)
- Compare the experience and costs
- Write a blog post comparing the two approaches
This gives me data to make an informed decision rather than just picking one tool blindly.
Resources
MCP Documentation:
MCP Servers I’m Using:
Claude Desktop:
This post documents a workflow improvement that makes the rest of the Music Graph project more sustainable. Sometimes the best development work is improving your development process itself.
This is part of the Music Genre Graph project series. See the project introduction for the full roadmap.