搭建第一个MCP服务

MCP

基本概念

Model Context Protocol (MCP) 是一种协议,用来 在多个模型或服务之间传递和管理上下文信息。
简单来说,当你调用大模型或多个模型协作完成任务时,每个模型可能需要知道之前的对话、输入或者其他环境信息。MCP 就像一个“上下文管道”,确保每次调用模型时,模型能够理解完整的上下文,而不是每次都从零开始。
一句话概括: MCP 是给大模型“记忆”和“理解上下文”的标准化协议。

用途场景

1)多轮对话管理
在聊天机器人或客服系统中,需要让模型记住上下文,提供连贯回答。

2)模型协作任务
不同模型处理不同子任务,MCP 负责传递上下文数据,使它们协同完成复杂任务。

3)状态跟踪与优化
在数据分析、自动化决策等场景,模型需要根据前一次的结果继续操作,MCP 帮助管理状态信息。

4)多模型集成
不同厂商或类型的模型可以通过 MCP 统一协议交互,提高兼容性。

为什么要使用MCP

  • 保持多轮连贯性:模型不会丢失之前的对话或任务状态。
  • 支持模型协作:不同模型可以共享上下文,协同完成复杂任务。
  • 统一上下文管理:不需要每个开发者自己设计上下文存储和传递机制。
  • 提升开发效率:模型调用变得标准化和可扩展。

和直接调用API的区别

区别点 普通 API 调用 MCP 调用
上下文处理 每次调用通常是独立的,需要自己维护状态 MCP 自动管理上下文,模型可以连续理解信息
多模型协作 不便于不同模型共享状态 MCP 提供标准上下文协议,多模型协作顺畅
状态持久化 开发者自己实现 MCP 内置上下文记录和更新机制
开发复杂度 高,需要手动管理历史数据和调用顺序 低,MCP 统一标准化上下文交互
可扩展性 难,添加新模型可能需要重写逻辑 高,只需遵循 MCP 协议即可接入新模型

MCP 让模型调用像“有记忆的助手”,而普通 API 调用更像“每次都是全新指令”。

实践案例

使用Cursor,基于一个常见的安全脚本,封装成一个MCP服务。
Cursor支持AI写代码、支持作为MCP客户端和人进行“人机交互”;
MCP支持上下文记忆、支持扩展和别的工具(如:其他安全功能、IM工具、数据分析工具等)进行协同。

核心文件

github地址:https://github.com/cherriewzx/Sec-farming/tree/main/Sec_tool

1)MCP转换程序:mcp_server.py ,把 dir_serch.py 的检测能力以 MCP(JSON-RPC over stdio)工具的形式对外提供。

  • 入口服务。
  • 接收外部请求(可能是 HTTP 请求、CLI 调用或者模型请求)。
  • 读取 mcp_config.json,提取上下文信息(上一次检测状态、用户偏好、配置等)。
  • 调用核心功能 dir_search.py。
  • 将结果和更新后的上下文返回给调用者,并写回 mcp_config.json。

2)核心检测功能:dir_serch.py ,主要实现一个敏感目录扫描。

  • 执行实际的安全检测逻辑(比如目录扫描、敏感信息检测)。
  • 接收从 mcp_server.py 传来的参数和上下文信息。
  • 输出检测结果。

3)Cursor配置文件:mcp_config.json,告诉支持 MCP 的客户端如何启动这个服务器。

  • 存储配置参数、检测历史、状态信息。
  • MCP 通过它来实现“记忆”,保证多轮调用的连续性。

执行流程

外部请求


mcp_server.py 接收请求


读取上下文 → mcp_config.json


调用 dir_search.py 执行检测


返回检测结果 → 更新上下文


mcp_server.py 返回结果给调用者

使用方式

1)传统命令行方式直接调用 dir_search.py

python3 dir_serch.py -t http://127.0.0.1:8888

[+] Scanning target: http://127.0.0.1:8888 ...
    -> findings: 2
[+] Scan finished. 2 records saved to results.json

结果文件result.json
image

2)使用Cursor交互
chat 框对Cursor 输入指令:
image

结果:
image

让Cursor生成的可视化页面:
image

posted @ 2025-11-11 17:42  Momoko-X  阅读(21)  评论(0)    收藏  举报