3m read
MCP 协议入门 + 自建 Apple OCR 图片识别工具
mcpclaude-codeocrmacos
什么是 MCP
MCP (Model Context Protocol) 是一个开源标准,让 AI 工具能连接到外部数据源。通过 MCP,Claude Code 可以操作数据库、文件系统、第三方服务等。
配置方式
在 .mcp.json(用户级或项目级)注册服务器:
hljs json{
"mcpServers": {
"服务器名": {
"command": "python3",
"args": ["/path/to/server.py"]
}
}
}
三个 scope:
| scope | 作用范围 | 共享给团队 | 存储位置 |
|---|---|---|---|
local | 当前项目 | 否 | ~/.claude.json |
project | 当前项目 | 是 (Git) | 项目根 .mcp.json |
user | 所有项目 | 否 | ~/.claude.json |
启动与通信
- Claude Code 启动时读取
.mcp.json,以子进程方式拉起command + args - 通过 stdio(标准输入/输出)通信
- 协议是 JSON-RPC 2.0,每行一个 JSON
握手流程
textClaude Code → 服务器: { "method": "initialize", "id": 1 } 服务器 → Claude Code: { "result": { "protocolVersion": "2024-11-05", "capabilities": { "tools": {} }, "serverInfo": { "name": "my-server", "version": "1.0.0" } } }
之后 Claude Code 发送 tools/list 获取工具列表,通过 tools/call 调用。
传输类型
| 类型 | 说明 | 适用场景 |
|---|---|---|
| stdio | 本地子进程,最常用 | 本地脚本、系统工具 |
| HTTP | 远程 HTTP 服务 | 云端服务 |
| SSE | 远程 SSE 推送(已弃用) | 遗留服务 |
Scope 优先级
同名服务器只在最高优先级处连接一次:local > project > user > 插件提供 > claude.ai 连接器。
实战:Apple OCR MCP
基于 macOS 原生 Apple Vision 框架的离线 OCR 工具,不需要 API Key,不需要网络。
GitHub:kains2866/apple-ocr-mcp
架构
MCP 客户端 → JSON-RPC → server.py → ocr (Swift) → Apple Vision → 文字
| 文件 | 作用 |
|---|---|
server.py | Python MCP 服务器,stdlib only |
ocr.swift | OCR 源码,封装 VNRecognizeTextRequest API |
ocr | swiftc 编译的 Mach-O 二进制 (~70KB) |
install.sh | 一键安装脚本 |
安装(推荐:预编译二进制,无需 Xcode)
hljs bashgit clone https://github.com/kains2866/apple-ocr-mcp.git
cd apple-ocr-mcp
./install.sh --download
使用
在 Claude Code 中直接说:
"读取 ~/Desktop/photo.jpg 里的文字"
Claude Code 自动调用 read_image_text 工具。
server.py 核心逻辑
hljs python# 从 stdin 逐行读取 JSON-RPC 请求
for line in sys.stdin:
req = json.loads(line)
if method == "initialize":
return { "result": { "capabilities": {"tools": {}} } }
if method == "tools/list":
return { "result": { "tools": [...] } }
if method == "tools/call":
text = subprocess.run([OCR_BIN, path, lang])
return { "result": { "content": [{"type": "text", "text": text}] } }
整个流程:stdin 读 JSON → 处理请求 → stdout 写 JSON。
兼容性
| 项目 | 要求 |
|---|---|
| macOS | 10.15 Catalina 及以上 |
| CPU | Apple Silicon 原生,Intel 通过预编译二进制 |
| Python | 3.8+(仅标准库,零 pip 依赖) |