The Model Context Protocol (MCP) is what turns Claude Code from a code editor into a full development agent. Connect your database, GitHub repos, and Slack — then control all of them with natural language.
What MCP Enables
Once configured:
- "Show me all users who haven't logged in for 30 days" → Claude runs a SQL query against your SQLite database
- "Assign all Critical-tagged Issues in the v2.0 milestone to me" → GitHub API calls happen automatically
- "Post the deployment result to #deployments with the version from package.json" → Claude reads the file, then calls the Slack API
No switching tabs. No API docs. Just describe what you need.
Setup: One CLI Command
# SQLite
claude mcp add --transport stdio sqlite-db -- \
npx @modelcontextprotocol/server-sqlite ./data/app.sqlite3
# GitHub
claude mcp add --transport stdio github -- \
--env GITHUB_TOKEN=$GITHUB_TOKEN \
npx @modelcontextprotocol/server-github
# Slack
claude mcp add --transport stdio slack -- \
--env SLACK_BOT_TOKEN=$SLACK_BOT_TOKEN \
npx @modelcontextprotocol/server-slack
Or manage everything in .mcp.json:
{
"mcpServers": {
"app-db": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-sqlite", "./data/app.db"]
},
"github": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": { "GITHUB_TOKEN": "${GITHUB_TOKEN}" }
}
}
}
Real Example: Database Analysis
You: "Show me the top 10 users by purchase amount this month,
and flag anyone who placed more than 5 orders in 24 hours."
Claude generates and executes:
-- Suspicious high-frequency buyers
SELECT
u.id, u.email,
COUNT(o.id) as order_count,
SUM(o.total) as total_spent
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE o.created_at > datetime('now', '-1 month')
GROUP BY u.id
ORDER BY total_spent DESC
LIMIT 10;
-- Fraud flag: 5+ orders in 24h
SELECT user_id, COUNT(*) as rapid_orders
FROM orders
WHERE created_at > datetime('now', '-1 day')
GROUP BY user_id
HAVING rapid_orders >= 5;
You get the results without writing a single SQL query.
Real Example: GitHub Triage
You: "List all open bugs tagged P0 or P1 with no assignee.
Assign them to @yourhandle and add the 'needs-triage' label."
Claude makes multiple GitHub API calls:
GET /repos/:owner/:repo/issues?labels=P0,P1&state=open- Filter for
assignee: null -
PATCH /repos/:owner/:repo/issues/:numberfor each match
This kind of batch triage operation normally takes 20-30 minutes manually. With MCP, it's a single instruction.
Server Catalog
| Package | Use Case |
|---|---|
server-sqlite |
SQLite read/write |
server-github |
Issues, PRs, branches, commits |
server-slack |
Channel messages, search |
server-postgres |
PostgreSQL |
server-fetch |
Web page retrieval |
server-brave-search |
Web search |
server-filesystem |
Extended file operations |
Full list: github.com/modelcontextprotocol/servers
Build a Custom Server (Python)
For internal tools not covered by official servers:
from mcp.server import Server
from mcp.server.stdio import stdio_server
import asyncio
server = Server("internal-erp")
@server.list_tools()
async def list_tools():
return [{
"name": "get_inventory",
"description": "Query internal ERP inventory",
"inputSchema": {
"type": "object",
"properties": {"sku": {"type": "string"}},
"required": ["sku"]
}
}]
@server.call_tool()
async def call_tool(name, args):
if name == "get_inventory":
result = query_erp(args["sku"]) # your internal function
return [{"type": "text", "text": str(result)}]
async def main():
async with stdio_server() as streams:
await server.run(*streams)
asyncio.run(main())
Register it:
claude mcp add --transport stdio erp -- python erp_server.py
Security Notes
Never hardcode tokens in configuration:
// Good
"env": { "GITHUB_TOKEN": "${GITHUB_TOKEN}" }
// Bad - token stored in plaintext
"env": { "GITHUB_TOKEN": "ghp_xxxxx" }
Restrict filesystem access:
{
"args": [
"-y", "@modelcontextprotocol/server-filesystem",
"./src", // only allow these paths
"./docs"
]
}
The Bigger Picture
MCP is what makes Claude Code genuinely agentic. Without it, you're pair-programming. With it, you're delegating entire workflows.
Start with SQLite + GitHub. Those two alone eliminate a large portion of routine development overhead — database inspection, Issue triage, branch management.
If you want pre-built Claude Code skills that work well in MCP-connected environments, the **Security Pack* (¥1,480) and Code Review Pack (¥980) are available on PromptWorks.*
Myouga (@myougatheaxo) — Security-focused Claude Code engineer.
Top comments (0)