TF
Tech Frontier

Claude Code + MCP: Query Databases and Manage GitHub Issues in Plain English

Mar 11, 2026 912 views

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:

  1. GET /repos/:owner/:repo/issues?labels=P0,P1&state=open
  2. Filter for assignee: null
  3. PATCH /repos/:owner/:repo/issues/:number for 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.

Related Articles