MCP Server简单开发

LLM、AGENT、MCP之间的关系

  • LLM:大模型,如GPT、豆包、claude。擅长处理语言,但是缺少自主行动和现实世界交互的能力,相当于大脑。
  • AGENT:是一个实体,将 LLM 的语言理解能力与现实世界的执行能力结合起来,完成更复杂的任务。如智能客服、智能助手等。
  • MCP:一个协议,定义了LLM与外部工具或服务之间通信的规范。各种LLM与外部对接的时候都需要根据自身各自实现,为了标准化和复用性,LLM只需要实现MCP协议就可以调用MCP实现的各种功能。AGENT可以将MCP当做一个工具箱。

MCP简介

官网:https://modelcontextprotocol.io/introduction

MCP采用的client-server架构,mcp server是对应的工具实现,用于实际与外部世界交互。mcp client需要对应的大模型进行开发适配。mcp client和mcp server通过mcp protocol交互,类似http协议。

与web开发一样,重点是在实现各种mcp server。

MCP Server开发

官方示例:https://modelcontextprotocol.io/quickstart/server

官方有python、node、java、kotlin四种版本。

环境:python(大于3.10)、uv(环境管理)、cursor

创建项目

# Create a new directory for our project
uv init mcp1
cd mcp1

# Create virtual environment and activate it
uv venv
.venv\Scripts\activate

# Install dependencies
uv add mcp[cli] 

# 对应项目,打开cursor
cursor .

示例开发

#mymcp.py
from mcp.server.fastmcp import FastMCP
 
mcp = FastMCP("申尧强的MCP")# 这个Demo就是MCP Server的名字
 
@mcp.tool()
def add(a: int, b: int) -> int:
    """Add two numbers"""
    # print('...', file=sys.stderr)
    print("a+b")
    return a+b

@mcp.tool()
def todo(year) -> str:
    """年度规划"""
    if year==2023:
        return '看一本书'
    elif year==2024:
        return '跑一次马拉松'
    elif year==2025:
        return '看一场演出'
    else:
        return '没有规划了'
 
 
if __name__ == "__main__":
    print("Starting MCP server...")
    mcp.run(transport='stdio')

mcp = FastMCP(“申尧强的MCP”) 创建一个mcp server

@mcp.tool()是对应注解,标识这个函数是mcp的一个工具。

这个脚本有两个tool,分别是add和todo。

mcp测试

使用mcp dev进行测试。

mcp dev mymcp.py

登录页面:http://localhost:5173

点击connect连接server

点击tool标签,点击List Tools可以看到所有tools(add、todo两个)

选择对应的tool可以进行测试。

集成到cursor

在cursor设置里面找到mcp,选择添加mcp server。

{
  "mcpServers": {
    "mymcp": {
      "command": "uv",
      "args": [
        "--directory",
        "C:\\Users\\Administrator\\Downloads\\mymcp",
        "run",
        "mymcp.py"
      ],
      "autoStart": true
    }
  }
}

配置完成后保存文件

如果会弹出窗口,不要关闭它,它是运行的server服务。

可以看到mymcp成功运行。

在对话这里需要使用Agent才能调用mcp。可以看到回答是正确的。

其他的MCP

常用mcp地址: https://github.com/modelcontextprotocol/servers

点进去,基本都有详细的讲解。

mcp server使用不同语言实现的话启动命令是不一样的,举一个node实现的server集成的例子。

filesystem https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem

文档中列举了对应的tool。

两种集成方式,本地可以使用npx方式(有node环境)。

window电脑不能直接用npx,需要使用 cmp /c npx。 我选择需要管理的文件目录是 C:\Users\Administrator\Downloads\oracle-sqoop-mtk-save

启动都可以看到有很多的tool。

测试一下,需要重启cursor

测试成功。

### MCP Server 开发教程及指南 MCP Server开发涉及多个方面,包括基础架构设计、功能实现、性能优化以及调试测试等。以下是关于 MCP Server 开发的相关内容: #### 1. 基础架构与初始化 在开发 MCP Server 时,首先需要选择合适的框架并进行初始化。以下是一个基于 Python 的示例代码,展示了如何使用 `FastMCP` 初始化服务端[^2]: ```python from mcp.server.fastmcp import FastMCP # 初始化 MCP Server mcp = FastMCP("weather") ``` 通过上述代码,开发者可以快速创建一个 MCP Server 实例,并为其指定名称(如 `"weather"`)。这一步是整个开发流程的基础。 #### 2. 功能扩展 随着业务需求的增长,可能需要为 MCP Server 添加更多功能。例如,用户认证和数据加密是常见的扩展方向[^3]。以下是一个简单的用户认证示例: ```python def authenticate_user(user_id: str, token: str) -> bool: # 模拟用户认证逻辑 return user_id == "admin" and token == "secret_token" ``` 此外,为了保障数据传输安全,可以引入加密模块。例如,使用 Python 的 `cryptography` 库实现数据加密: ```python from cryptography.fernet import Fernet # 初始化加密密钥 key = Fernet.generate_key() cipher_suite = Fernet(key) def encrypt_data(data: str) -> bytes: return cipher_suite.encrypt(data.encode()) def decrypt_data(encrypted_data: bytes) -> str: return cipher_suite.decrypt(encrypted_data).decode() ``` #### 3. 性能监控与维护 性能监控是确保 MCP Server 稳定运行的重要环节。可以通过集成第三方工具或自定义监控脚本来实现这一目标[^3]。例如,使用 Python 的 `psutil` 库监控系统资源: ```python import psutil def get_system_stats(): cpu_usage = psutil.cpu_percent(interval=1) memory_info = psutil.virtual_memory() return { "cpu_usage": cpu_usage, "memory_usage": memory_info.percent } ``` #### 4. 调试与测试 对于 MCP Server开发者而言,调试和测试是不可或缺的环节。可以使用 `MCP Inspector` 工具来快速测试 Server 的功能[^1]。运行以下命令即可启动调试环境: ```bash mcp dev server_demo.py ``` 该命令会加载指定的 Python 文件(如 `server_demo.py`),并提供详细的调试信息。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值