mcp-notepad-project
MCP server that enables AI models to open the Windows Notepad application via function calling, demonstrating the complete MCP tool call workflow.
README
MCP 记事本工具 📝
一个完整的 MCP (Model Context Protocol) 工具演示项目,实现"用户提出打开记事本 → 模型生成 Function Call → 程序解析 → MCP 调用 → 记事本打开 → 模型回复"的完整流程。
📁 项目结构
mcp-notepad-project/
├── mcp_server.py # MCP Server - 提供 open_notepad 工具
├── mcp_client.py # MCP Client - 连接 Server 并调用工具
├── model_adapters.py # 模型适配器 - 解析 OpenAI/Anthropic 的 Function Call
├── main.py # 主程序 - 串联完整流程(单次调用)
├── chat.py # 交互式对话 - 可以反复与模型对话
├── .env # API Key 配置(自动读取)
├── .gitignore # Git 忽略规则(保护 .env 不上传)
├── mcp_config.json # MCP 配置文件
├── requirements.txt # 依赖列表
└── README.md # 本文件
🚀 快速开始
1. 安装依赖
pip install -r requirements.txt
如果网络不好,使用国内镜像:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
2. 配置 API Key
编辑 .env 文件,填入你的 API Key:
DEEPSEEK_API_KEY=sk-xxxxx # 推荐!国内免费
OPENAI_API_KEY=sk-xxxxx # OpenAI
ANTHROPIC_API_KEY=sk-ant-xxxxx # Anthropic
3. 运行
# DeepSeek(默认,国内免费推荐)
python main.py --provider deepseek
python chat.py --provider deepseek
# OpenAI
python main.py --provider openai
python chat.py --provider openai
# Anthropic (Claude)
python main.py --provider anthropic
python chat.py --provider anthropic
🔧 核心架构
用户提问 "打开记事本"
↓
Python 客户端 (main.py / chat.py)
↓
调用 AI 模型 API (OpenAI / Anthropic / DeepSeek)
↓
模型返回 Function Call (JSON)
↓
model_adapters.py 解析 Function Call
┌─────────────────┬──────────────────┐
│ OpenAI 格式 │ Anthropic 格式 │
│ tool_calls[]. │ content[]. │
│ function.name │ name │
│ function.args │ input │
│ (字符串) │ (字典) │
└────────┬────────┴────────┬─────────┘
↓ ↓
ParsedToolCall (统一格式)
↓
mcp_client.py 通过 MCP 协议调用
↓
mcp_server.py 执行 subprocess.Popen("notepad.exe")
↓
记事本打开!结果返回给模型
↓
模型回复 "已为您打开记事本"
📖 关键概念解释
MCP (Model Context Protocol)
- 一个开放协议,让 AI 模型能通过标准化接口调用外部工具
- 类似于 USB 接口:只要遵循协议,任何"设备"(工具)都能插上"电脑"(模型)
Function Call
- AI 模型不直接执行操作,而是生成一个"函数调用"的 JSON
- 程序解析这个 JSON,执行对应操作,再把结果返回给模型
两种格式的区别
| 特性 | OpenAI | Anthropic |
|---|---|---|
| 位置 | message.tool_calls |
message.content[type=tool_use] |
| 参数格式 | JSON 字符串 | 字典对象 |
| 调用ID | call_xxx |
toolu_xxx |
| 结果格式 | role: "tool" |
type: "tool_result" |
| 工具定义 | function.parameters |
input_schema |
⚠️ 常见问题
Q: 运行时出现 UnicodeEncodeError
A: Windows 默认使用 GBK 编码,设置环境变量:
set PYTHONIOENCODING=utf-8
Q: pip 安装失败
A: 使用国内镜像源:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
Q: 没有 API Key 怎么办?
A: 推荐使用 DeepSeek,注册即送免费额度:https://platform.deepseek.com/api_keys
Q: 如何在 Claude Code 中使用这个 MCP Server?
A: 将 mcp_config.json 的内容添加到 Claude Code 的 MCP 配置中。
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。