谁该读这篇
- 用 Claude Code 跑日常开发的 indie hacker
- 公司有 Notion / Airtable / 自家 Postgres 等私有数据
- 想让 Claude「能查公司数据」而不是每次手动复制粘贴
- 走中转 (ANTHROPIC_BASE_URL) 担心 MCP 不兼容
MCP 在你工作流的位置
你的话术 ──► Claude Code
├─► (拿数据) MCP Server ──► Notion / DB / API
└─► (调模型) 中转 baseURL ──► Claude 4.7 / Sonnet 4.6
MCP 在客户端层,跟中转无关。换中转方不影响 MCP——按 MCP 文档(访问于 2026-05-19),任何兼容 Claude Code 的客户端都能用 MCP server,与具体走哪家 API 解耦。
最小 Python MCP server 示例
# my-notion-mcp/server.py
from mcp.server.fastmcp import FastMCP
import requests, os
mcp = FastMCP("notion-readonly")
NOTION_TOKEN = os.environ["NOTION_TOKEN"]
NOTION_DB_ID = os.environ["NOTION_DB_ID"]
@mcp.tool()
def list_recent_feedback(days: int = 7) -> str:
"""列出最近 N 天的客户反馈,默认 7 天"""
r = requests.post(
f"https://api.notion.com/v1/databases/{NOTION_DB_ID}/query",
headers={"Authorization": f"Bearer {NOTION_TOKEN}",
"Notion-Version": "2022-06-28"},
json={"page_size": 50},
)
return r.text # 实际要做过滤 + 格式化
if __name__ == "__main__":
mcp.run() # 默认 stdio
依赖 pip install mcp requests,带 NOTION_TOKEN 环境变量启动即可。Claude Code 端编辑 ~/.config/claude/claude_desktop_config.json 加 mcpServers.notion-readonly 项,command: python、args: [server.py 路径]、env: {NOTION_TOKEN, NOTION_DB_ID}。重启 Claude Code 后说「查 Notion 最近 7 天的客户反馈」即自动调 list_recent_feedback。
stdio vs HTTP 模式对比
| 维度 | stdio | HTTP |
|---|---|---|
| 启动开销 | 低(子进程) | 高(需 server 跑着) |
| 适合场景 | 本地工具 / 本地数据 | 远程服务 / 多设备共享 |
| 跨设备复用 | 代码 commit 到 git,新设备跑 | 部署一次,所有设备连 |
| 网络稳定性 | 不需要 | 需要稳定连 server |
| 安全风险 | 低(本地) | 高(远程暴露需鉴权) |
| indie 推荐 | PoC 阶段 | 长期 / 多人团队 |
按 MCP 协议文档(访问于 2026-05-19),两种 transport 是平级支持的,server 代码几乎一致,只差 mcp.run(transport="stdio") vs mcp.run(transport="sse", port=8000)。
中转兼容性详解
走中转的 indie hacker 经常担心:MCP 是不是 Anthropic 独家协议?MCP 跟中转方完全无关——Claude Code 客户端先调 MCP server 拿数据,把数据放进 prompt 后再调 ANTHROPIC_BASE_URL。中转方收到的就是普通带 context 的请求,不需要知道这些 context 来自 MCP。同一份 .claude/(含 MCP 配置)在「主推 GPT-5.5 / Claude 4.7」的中转、OpenRouter、OneAPI 自托管下都正常工作。
与 Skill / subagent 组合
完整 indie hacker 工作流通常三者都用:
| 组件 | 职责 |
|---|---|
| MCP server | 数据访问(查 Notion / DB / API) |
| Skills | 领域知识 + 任务流程 |
| subagent | 并发派发 + 模型分级 |
例如「分析最近 7 天客户反馈,识别 top 3 投诉点」:MCP server 拉 Notion 数据 → Skill (feedback-analyzer) 指导分析流程 → 主代理跑 Opus 4.7 做最终洞察,subagent 跑 Sonnet 4.6 做单条分类。按 Anthropic Pricing(访问于 2026-05-19)和 2026 年 5 月实测,这种组合比纯主代理跑 Opus 4.7 省 50-60% token。
跨地区使用 / 切换设备
- stdio 模式:把 MCP server 代码 commit 到 git 私库,新设备 clone 后跑就行。
.zshrc/.bashrc写好环境变量 (NOTION_TOKEN等) - HTTP 模式:把 server 部署到 VPS,新设备只改
claude_desktop_config.json的 URL - 网络稳定性:HTTP 模式需要稳定连 server,跨地区切换时配一条主推 GPT-5.5 / Claude 4.7 的低价 API 中转,Claude Code 调模型 + 调 MCP server 都走同一条线路
常见失败原因
- MCP server 报错没体现在 Claude Code 里:Claude Code 默认吞掉 server stderr,用
claude --debug或独立终端先跑通 server 再接 Claude Code - 环境变量没传递:Claude Code 启动子进程时不继承全部环境变量,必须在
claude_desktop_config.json的env字段显式写 - stdio 模式跑了 print 调试:print 到 stdout 会污染 JSON-RPC 协议,调试用 logging 写到 stderr 或文件
- HTTP 模式没鉴权:server 暴露公网必加 API key / mTLS,我见过 indie 朋友的 MCP server 被脚本扫到批量查询
月预算样例
自建 MCP server 本身免费,增加开销主要在调用 MCP tool 时的额外 token(按月 100 次 MCP 调用、Sonnet 4.6 中转单价):
| 操作 | 增加 token | 月成本 |
|---|---|---|
| tool definition 注入 | 100-300 / 请求 | ¥10-30 |
| MCP 返回数据进上下文 | 500-3000 / 调用 | ¥30-100 |
相关阅读
- Claude Code 接中转 Solopreneur 配置 — 中转环境下的完整配置指南
- LiteLLM Proxy 自托管指南 — 自建 API 网关的搭建步骤
- Cursor vs Claude Code — 两款工具的独立开发者选型对比
- Aider 与 Continue 接 Claude 4.7 — IDE 插件级别的模型接入方法