支持私有化部署
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


从MCP实践到开发简单的MCP服务

发布日期:2025-05-26 18:34:22 浏览次数: 1560 作者:尧字节
推荐语

深入探索MCP服务的实战应用与开发技巧。

核心内容:
1. 高德地图MCP服务的集成与配置
2. 实时聊天与天气查询功能的实现
3. 飞书MCP服务的创建与API调用指南

杨芳贤
53A创始人/腾讯云(TVP)最具价值专家

一 前言

上次玩MCP已经过了一段时间了,尝试的都比较简单的MCP,这次想找几个实用的MCP服务器实战下,看看效果。

二 实用的高德地图MCP

高德地图的MCP是基于SSE的,是一种基于HTTP的技术,客户端和服务器端建立持久连接,服务器端可以实时单向向客户端推送消息,无需客户端反复请求,有点类似websocket;

高德地图 MCP Server 是基于 SSE(Server-Sent Events)技术的地理服务接口集合,
允许开发者通过 MCP 协议调用地图服务,如路径规划、天气查询、地点搜索等。
它支持与如 Cursor、Claude 等大模型工具无缝集成。

2.1 配置

我本次采用的工具是Cherry studio,使用起来比Cline更简单些;配置比较简单:

  1. https://mcpmarket.cn/server/67ff4974764487b6b9e11c21 获取SSEURL;
  2. 在Cherry Studio做如下配置,配置后开启;MCP服务器配置

2.2 使用

在聊天对话框内选择高德地图这个MCP服务器,然后进行聊天即可:聊天1这个MCP服务器还支持天气查询功能,不过刚才的规划中并没有考虑到天气,再问下:聊天2

三 飞书的MCP

很多公司使用飞书作为办公的IM,飞书已经开发了个MCP服务器,利用此MCP可以创建群聊,发送消息,获取消息列表等,如下。飞书MCP默认支持功能

3.1 创建飞书APP

  1. 访问飞书开发平台,并登录:https://open.feishu.cn/
  2. 点击“开始使用”并创建一个新应用,应用名随便写;
  3. 开通相关权限,如果不开通执行会报错,再按照报错提示开通权限也行,如下图;
  4. 如果您需要以用户身份调用 API,请设置 OAuth 2.0 重定向 URL 并获取用户访问令牌;
  5. 在凭证和基础管理的地方,获取App ID和App Secret。

添加权限image.png

获取App ID和App Secret获取App ID和App Secret

3.2 全局安装lark-mcp工具和配置

全局安装lark-mcp工具

npm install -g @larksuiteoapi/lark-mcp

配置:

{
  "mcpServers": {
    "lark-mcp": {
      "command""npx",
      "args": [
        "-y",
        "@larksuiteoapi/lark-mcp",
        "mcp",
        "-a",
        "<your_app_id>",
        "-s",
        "<your_app_secret>"
      ]
    }
  }
}

如果需要用户身份访问API,配置如下:

{
  "mcpServers": {
    "lark-mcp": {
     "command""npx",
      "args": [
        "-y",
        "@larksuiteoapi/lark-mcp",
        "mcp",
        "-a",
        "<your_app_id>",
        "-s",
        "<your_app_secret>",
        "-u",
        "<your_user_token>"
      ]
    }
  }
}

启动image.png其他启动参数可以参考:

https://mcpmarket.cn/server/68009589a5deaa7aaa917d69

说明下,为什么其他MCP服务器基本上配置就好了,这边要启动那,其他的MCP Server是在远程启动好的服务,而Lark-MCP的服务器需要本地启动,然后Lark-MCP只是将MCP的交互协议转成了飞书的各种API调用,飞书没有在平台启动MCP ,所以不行。而上面高德地图的MCP是MCP Server在远程启动好了的。

lark-mcp mcp -a cli_a8b8736ab9389013  -s App secret   -m sse --host 0.0.0.0 -p 3000

在Cherry studio 上配置就比较简单了:feishu 在Cherry studio 上配置

3.3 实测

做个简单的测试,通过这个MCP创建一个名字叫MCP测试的群聊,然后将我飞书账号添加进去,并发送给消息标识成功;

第一次尝试失败,仍然缺失部分权限,如图:mcp测试失败

在更正的过程中发现几个比较大的问题:

  1. 需要把应用先发布才行,随便指定个版本即可;
  2. 为了避免多次折腾,可以先在页面上调试好;API调试

最终测试成功image.png

在飞书里面的信息:飞书里面成功信息

总结使用DeepSeek+Lark-Mcp 虽然最终实现了自己要求的功能,但是感觉总体使用起来还是磕磕绊绊的,主要有两个原因:

  1. 是飞书里面的权限控制挺细的,很多时候是缺少权限;
  2. DeepSeek-R1模型有时候也会产生调用误用API列表造成各种失败,有时候会显得过于啰嗦。

意外发现Cherry Stdio竟然可以直接显示DeepSeek-R1的给出的调用流程图了:DeepSeek-R1绘制调用lark-mcp流程图

四 创建自己的MCP服务器

MCP协议准许我们以安全、标准化的方式向LLM公开数据和功能,可以简单看成一套标准接口,这个接口专门用于对接LLM的。目前主要用python或TypeScript,也有用java开发的比较少。本次我准备用python借助FastMCP库开发个简单的例子。

为什么需要FastMCP,理由如下:

  1. MCP 协议功能强大,但实现它需要大量的样板代码——服务器设置、协议处理程序、内容类型、错误管理。FastMCP 处理所有复杂的协议细节和服务器管理,因此您可以专注于构建优秀的工具。
  2. 它设计为高级且 Python 风格的;在大多数情况下,您只需装饰一个函数即可。
  3. 虽然 FastMCP 1.0 的核心服务器概念奠定了基础并贡献给了官方 MCP SDK,但FastMCP 2.0(本项目)是积极开发的后继者,增加了重大增强和全新功能,如强大的客户端库、服务器代理、组合模式、OpenAPI/FastAPI 集成等等。

FastMCP 的目标是: ?快速:高级接口意味着更少的代码和更快的开发速度 ?简单:使用最少的样板构建 MCP 服务器 ? Pythonic:对 Python 开发人员来说感觉很自然 ?完整: FastMCP 旨在为服务器和客户端提供核心 MCP 规范的完整实现

4.1 构建测试环境

mac@MacdeMBP code % python3 -m venv mcpenv
mac@MacdeMBP code % ls
mcpenv
mac@MacdeMBP code % source mcpenv/bin/activate
(mcpenv) mac@MacdeMBP code % pip install fastmcp

写个非常简单的mcp服务器:

#!/bin/python
from fastmcp import FastMCP
from fastmcp.exceptions import ToolError

mcp = FastMCP("Demo ?")

@mcp.tool()
def divide(a: float, b: float) -> float:
    """Divide a by b."""
    if b == 0:
        # Error messages from ToolError are always sent to clients,
        # regardless of mask_error_details setting
        raise ToolError("Division by zero is not allowed.")

    # If mask_error_details=True, this message would be masked
    if not isinstance(a, (int, float)) or not isinstance(b, (int, float)):
        raise TypeError("Both arguments must be numbers.")

    return a / b


@mcp.tool()
def hello(name: str) -> str:
    return f"Hello, {name}!"

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

然后简单运行下,看是否正常执行:

(mcpenv) mac@MacdeMBP mcpenv % python src/add-mcp.py
[05/25/25 18:43:57] INFO     Starting MCP server 'Demo ?' with transport 'stdio'

正常运行,采用的是stdio方式连接的。

4.2 配置和运行

配置cherry stdio 将我们写的mcp server配置上去,如下图:自定义mcp server配置

简单的测试下运行结果,除以写成了处于,AI仍然能够得到正确的结果:image.png

对于stdio方式不是太方便,还有两种接口模式: 可流式传输的 HTTP:推荐用于 Web 部署:

mcp.run(transport="streamable-http", host="127.0.0.1", port=8000, path="/mcp")

SSE:为了与现有的 SSE 客户端兼容。

mcp.run(transport="sse", host="127.0.0.1", port=8000)

我们将接口改成SSE测试下,重新配置cherry stdio:cherry stdio配置

重新测试:测试结果

五 总结

从高德地图到飞书,成熟的MCP服务正在重塑我们的开发方式。它们让应用开发变得前所未有的简单——无需从零搭建服务器架构,利用现成的MCP服务就能快速打造产品原型,用最低成本验证市场价值。

但真正的技术自由来自于自主可控。借助Python和TypeScript强大的MCP开发框架,开发者可以轻松构建专属MCP服务。这些框架封装了复杂的底层交互,让我们能够专注于核心业务逻辑的实现。

当企业级MCP服务遇见大语言模型,一场智能化变革正在上演:

  • 为企业知识库注入智能活力,有效减少模型幻觉

  • 打通各业务系统壁垒,构建真正的智能工作流

  • 推动业务流程自动化迈向新高度

当然,这个新兴技术组合还存在优化空间:token消耗、响应速度、问题解决效率等方面仍有提升余地。但正如所有颠覆性技术一样,MCP+LLM的潜力远大于当前的局限。它正在以惊人的速度进化,而今天的选择,将决定明天的高度。


53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询