MCP 学习----Model Context Protocol

2025 年 8 月 25 日 星期一
7

MCP 学习----Model Context Protocol

初识 MCP:为什么我觉得它很重要

说实话,刚开始看到 MCP 这个名字时,我以为又是一个普通的 API 规范。但深入了解后发现,这东西解决的是我在开发 AI 应用时一直头疼的问题——如何让 AI 助手更优雅地访问外部数据和工具

以前我在做聊天机器人项目时,要让 AI 访问数据库、调用 API、读取文件,都需要写一堆胶水代码。每接入一个新的数据源,就要重新写一遍集成逻辑。MCP 的出现让我看到了标准化的希望。

MCP 到底是什么?

用我自己的理解来说,MCP 就像是 AI 世界的 USB 接口标准

还记得以前每个设备都有自己专属的接口吗?手机充电器、键盘、鼠标都不一样。USB 出现后,所有设备都能用统一的接口连接。MCP 做的事情类似——它定义了一套标准协议,让 AI 应用能够以统一的方式连接各种数据源和工具。

传统方式:
AI应用 ← 自定义接口1 → 数据库
AI应用 ← 自定义接口2 → API服务
AI应用 ← 自定义接口3 → 文件系统

MCP方式:
AI应用 ← MCP协议 → MCP服务器1(数据库)
                  → MCP服务器2(API服务)
                  → MCP服务器3(文件系统)

我的第一个 MCP 实验

理论看多了容易晕,我决定直接上手试试。第一个小目标:创建一个简单的 MCP 服务器,让roo code等 能够读取我本地的笔记文件。

步骤 1:环境准备

# 安装 MCP 的 Python SDK
pip install mcp-server

# 创建项目目录
mkdir my-first-mcp-server
cd my-first-mcp-server

步骤 2:编写服务器代码

# server.py
import asyncio
from mcp.server import Server
from mcp.types import Tool, TextContent
import os

# 创建 MCP 服务器实例
server = Server("my-notes-server")

@server.tool()
async def read_note(filename: str) -> str:
    """读取指定的笔记文件"""
    notes_dir = os.path.expanduser("~/Documents/notes")
    file_path = os.path.join(notes_dir, filename)
  
    try:
        with open(file_path, 'r', encoding='utf-8') as f:
            return f.read()
    except FileNotFoundError:
        return f"文件 {filename} 不存在"

@server.tool()
async def list_notes() -> str:
    """列出所有笔记文件"""
    notes_dir = os.path.expanduser("~/Documents/notes")
    files = os.listdir(notes_dir)
    return "\n".join([f for f in files if f.endswith('.md')])

# 启动服务器
async def main():
    await server.start()
    print("MCP 服务器已启动...")
    await asyncio.Event().wait()

if __name__ == "__main__":
    asyncio.run(main())

步骤 3:配置 mcp

{
  "mcpServers": {
    "my-notes": {
      "command": "python",
      "args": ["/path/to/server.py"]
    }
  }
}

MCP 的实际应用场景

经过这段时间的学习和实践,我发现 MCP 特别适合以下场景:

  1. 企业知识库集成:让 AI 助手访问公司内部文档、Wiki
  2. 开发工具集成:连接 Git、JIRA、CI/CD 系统
  3. 数据分析:让 AI 直接查询数据库,生成报表
  4. 自动化工作流:触发各种自动化任务

使用社交账号登录

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...