我来做
MCP 协议 高级

AI Agent MCP (Model Context Protocol) 极速上手

💡 本教程技术要点

探讨 Anthropic 发布的 MCP 协议如何统一大模型与本地开发环境、数据库和 API 的对接规范。

一、统一接口的工业级标准:什么是 Model Context Protocol?

在此之前,要让大模型调用企业内部的数据库或者读取你的本地文件,开发者需要为每一种工具、每一个大模型客户端编写繁琐的定制接口。这就像充电器标准未统一之前的“万能充”时代。Anthropic 推出的 Model Context Protocol(MCP,模型上下文协议)彻底终结了这一乱象。

MCP 是一个基于 JSON-RPC 2.0 协议的开放式标准。它定义了大模型客户端(如 Claude Desktop)与本地/远程数据源(MCP Server)之间的通信规范。大模型不再需要去理解复杂的 API,它只需通过 MCP 客户端,向支持 MCP 标准的 Server 索取可用工具列表(List Tools),并发送执行工具的请求(Call Tool)。这为本地智能体赋予了前所未有的本地执行能力。

二、手把手实战:用 Python 从零编写一个 SQLite 查询 MCP 服务

在本教程中,我们将用 Python 编写一个本地 MCP 服务,该服务允许大模型直接安全地读取我们本地的 SQLite 数据库,并生成对应的 SQL 查询数据。

1. 环境配置与依赖安装

首先,在本地创建一个干净的 Python 虚拟环境,并安装 MCP 官方 SDK:

python -m venv venv
source venv/bin/activate  # Windows 下使用 venv\Scripts\activate
pip install mcp better-sqlite3 pydantic

2. 编写 MCP Server 核心逻辑

创建一个名为 sqlite_server.py 的文件,编写以下代码:

import asyncio
import sqlite3
from mcp.server.fastmcp import FastMCP

# 初始化 FastMCP 实例,指定服务名称
mcp = FastMCP("SQLite Database Reader")
DB_PATH = "src/data/database.db"

@mcp.tool()
def query_database(sql_query: str) -> str:
    """Execute a read-only SQL query against the local database and return results as string."""
    # 强制安全限制,禁止非 SELECT 语句以防止注入风险
    clean_query = sql_query.strip().lower()
    if not clean_query.startswith("select"):
        return "Error: Only read-only SELECT queries are allowed for security reasons."
    try:
        conn = sqlite3.connect(DB_PATH)
        cursor = conn.cursor()
        cursor.execute(sql_query)
        rows = cursor.fetchall()
        # 提取字段名
        columns = [description[0] for description in cursor.description]
        conn.close()
        
        # 格式化输出为 Markdown 表格格式
        result = " | ".join(columns) + "\n" + "---" * len(columns) + "\n"
        for row in rows:
            result += " | ".join(map(str, row)) + "\n"
        return result
    except Exception as e:
        return f"Database error occurred: {str(e)}"

if __name__ == "__main__":
    mcp.run()

三、配置大模型客户端(Claude Desktop)

为了让本地运行的 Claude Desktop 能够识别并加载这个 MCP 服务,我们需要编辑其配置文件。在 Windows 下,该文件路径为:
%APPDATA%\Claude\claude_desktop_config.json

在该 JSON 文件中加入我们的服务启动项:

{
  "mcpServers": {
    "sqlite-local-mcp": {
      "command": "python",
      "args": [
        "E:\\imai\\aiagent\\sqlite_server.py"
      ]
    }
  }
}

保存文件后,彻底关闭并重新启动 Claude Desktop。如果配置正确,你会看到对话框右下角多了一个小榔头(Hammer)图标,这代表 MCP 工具已加载成功。你可以直接向 Claude 输入:“帮我查一下本地数据库里发布日期在 2026 年以后的文章标题”,Claude 会自己生成 SQL,调用我们本地编写的脚本并完美呈现数据表格!

四、踩坑与调试要点

在 Windows 环境下跑 MCP 最常见的错误就是 Python 环境的路径问题。在 claude_desktop_config.jsoncommand 中,建议写绝对路径(例如 C:\\Users\\YourUser\\AppData\\Local\\Programs\\Python\\Python312\\python.exe),以防 Claude 无法正确识别系统的虚拟环境路径。此外,MCP 之间是通过标准输入输出(stdin/stdout)进行通信的,因此在你的 MCP 代码里,绝对不能使用任何 print() 输出调试日志,所有的 log 必须使用 logging.warning 往 stderr 写入,否则会彻底破坏 JSON-RPC 的通信结构。

💻 核心参考代码 (Reference Implementation)
// 典型实现逻辑 / Code outline
// 如需获取该场景下完整可运行的代码库与技术顾问指导,请联系我们
console.log("Loading module: $MCP 协议...");
console.log("Configuring agent pipeline: $AI Agent MCP (Model Context Protocol) 极速上手...");
console.log("Dependencies active. Pipeline initializing...");
// TODO: Custom code hooks for wolaizuo solutions.

* 本文为“我来做”动手开发实战教程。如果您不想亲自编写代码,或者需要更深入的企业系统(ERP/CRM)对接与私有化部署,欢迎点击下方按钮预约我们的免费诊断服务。

联系我们代为开发
返回教程列表