视频加载失败

大模型的得力干将MCP(2) - 开发服务

1308 字
7 分钟
大模型的得力干将MCP(2) - 开发服务

今天我们将继续学习,基于model context protocol的SDK来开发自己的MCP服务。

等系列课学习完成,你将能了解什么是MCP,如何开发MCP和如何实际使用它(当然我们会回归到Dify中,配合LLM,更加完善我们的AI应用适用场景)。

**01.**动手准备#

今天就来展开说说开发MCP应用,应该如何做。既然是开发,那就离不开代码了。处理的顺序正好和概念反过来,我们先来实现一个MCP服务端。

同时需要理解两个重要的概念:

1 通信机制#

MCP协议支持两种主要的通信机制:基于标准输入输出的本地通信和基于SSE(Server-Sent Events)的远程通信。

也就是说MCP服务端,根据和客户端连接时所在的位置不同,分成本地通信和远程通信。

本地通信是通过stdio传输数据,即数据是本地机器的进程间通信。适合AI助手工具等软件使用。

而远程通信则是利用SSE技术,通过HTTP来通信和传输数据。适合于共享MCP服务,在企业内使用或者服务给互联网用户。

2 运行语言和环境#

一般涉及到开发,必定是要和开发语言有关。但是MCP协议是和语言无关的,也就是说大家可以尽量使用自己熟悉的开发语言。

Anthropic提供了TypeScript SDK,Python SDK,Java SDK,C# SDK,甚至Swift SDK和Rust SDK。也就是说基本上任何语言都可以实现MCP服务。

为了降低难度,我们不用挑战从零开始,用全新的语言做开发,就从typescript-sdk开始吧。

**02.**动手做一做#

创建一个空的npm项目

npm init

输入如下信息

图片
图片

修改package.json文件,增加依赖包和运行脚本。

图片
图片

创建一个src目录并添加一个index.ts文件。内容如下,并替换自己的高德密钥。

import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { SSEServerTransport } from "@modelcontextprotocol/sdk/server/sse.js";
import { z } from "zod";
import https from 'https';
// 环境变量中的API密钥
const GAODE_API_KEY = process.env.GAODE_API_KEY? process.env.GAODE_API_KEY: "高德密钥";
// 通用HTTP请求函数
async function makeRequest(url: string): Promise<any> {
return new Promise((resolve, reject) => {
https.get(url, (res) => {
let data = '';
res.on('data', (chunk) => {
data += chunk;
});
res.on('end', () => {
try {
resolve(JSON.parse(data));
} catch (e) {
reject(e);
}
});
}).on('error', (err) => {
reject(err);
});
});
}
// 创建MCP服务器
const server = new McpServer({
name: "gaode-weather-mcp",
version: "0.0.1"
});
// 实现天气查询
server.tool("getWeather",
{
city: z.string().describe("城市编码"),
extensions: z.enum(["base", "all"]).optional().describe("气象类型:base(实况天气)、all(预报天气)")
},
async (params) => {
if (!GAODE_API_KEY) {
throw new Error("高德地图API密钥未设置");
}
const { city, extensions = "all" } = params;
const url = `https://restapi.amap.com/v3/weather/weatherInfo?key=${GAODE_API_KEY}&city=${encodeURIComponent(city)}&extensions=${extensions}&output=json`;
const result = await makeRequest(url);
return {
content: [{ type: "text", text: JSON.stringify(result) }]
};
}
);
// 启动服务器
async function main() {
const transport = new StdioServerTransport();
//const transport = new SSEServerTransport();
await server.connect(transport);
console.log("高德地图MCP服务已启动");
// 保持运行
await new Promise(() => { });
}
main().catch(console.error);

这时在终端执行npm run build,会在src目录下编译生成index.js文件,这个就是MCP服务端代码了。

如果上一篇教程正常跑通,那这里就简单了,依葫芦画瓢。在Cursor的设置,添加一个新的MCP服务,或者通过.cursor/mcp.json增加。如下图:

图片
图片

测试一下是否工作正常。切换到Agent模式,然后输入问题:“请问虹口区310109的天气怎么样?“。此时就会调用MCP tool getWeather,并得到正确的回答。

图片
图片

**03.**补充说明#

MCP因为概念还比较新,各方的实现也是五花八门。特别是针对不同的语言,不同的运行环境(指的是Windows,Mac OS或者Linux),支持的不同客户端(实际上是主机,含客户端,像Claude,Cursor,IDE等各种助手类软件),想要自己本地跑起来第一个成功的案例,需要克服种种困难。

但是,随着MCP概念的兴起,这些问题会逐步解决。以后使用起来也会更加的顺滑,同时也给广大的开发者,带了很多新的机会,早期介入都会有红利期。

麦金叔也是非常感谢读者粉丝们的热情支持,期望大家都能从这一系列的讲解中,得到一个清晰的认识。同时意识到,做这些的技术并非凭空出现的,比如node开发,SSE技术,实际上都已经是比较成熟的东西。但是嫁接到MCP上,又能焕发出第二春。

虽然当前的SSE应用在MCP架构上,也是有不同的声音,比如认证,单向通讯等问题限制了一定的使用场景。但如果一切都已经那么完美了,那参与开发的人也就没有发展的空间了,是不是呢?

总结

今天学习了第一个自动实现的MCP服务,高德天气查询的例子。理解最简单的MCP服务开发的方法。但是,还有更多的MCP的概念没有引入,后面的文章将继续探讨,敬请期待。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
大模型的得力干将MCP(2) - 开发服务
https://blog.huhaha.vip/posts/9a18e38c/
作者
小王的博客
发布于
2025-07-23
许可协议
CC BY-NC-SA 4.0
相关文章智能推荐
1
大模型的得力干将MCP(3) - SSE服务
AI本文实战演示MCP服务远程化改造。通过Express框架搭建SSE服务端→配置SSEServerTransport协议→实现HTTP长连接通信。对比stdio本地通信与SSE远程模式差异,详解服务注册及消息处理机制,为企业级AI应用提供跨网络部署方案,较传统WebSocket方案资源消耗降低40%,下篇将配套开发标准化客户端。
2
大模型的得力干将MCP(4) - 开发客户端
AI本文实战演示MCP客户端开发全流程。基于TypeScript SDK构建SSEClientTransport→配置Node.js环境EventSource→实现SSE协议双向通信。详解跨协议客户端差异处理及依赖注入技巧,展示如何通过服务发现机制获取工具列表,为AI助手工具集成提供标准化通信模块,较传统HTTP接口开发效率提升2-3倍。
3
大模型的得力干将MCP(1) - 基础入门
AI本文系统解析MCP协议核心架构与实战应用。详解主机-客户端-服务器三元组模型,对比stdio/SSE双模通信机制差异。通过npm包安装→Cursor工具配置→服务启停测试全流程演示,实现版本查询MCP服务对接,为AI工具生态提供标准化扩展方案,较传统API集成效率提升2倍,下篇将深入开发实践。
4
大模型的得力干将MCP(5) - 应用场景和发展方向,窥探先机,不容错过
AI本文深度解析MCP服务技术架构与发展趋势。对比stdio与SSE两种部署模式优劣,详解官方Roadmap远程支持、服务发现、分层代理三大演进方向。预判AI助手工具优化、SaaS化服务市场、垂直领域服务升级、个体开发者生态四大机遇赛道,为AI与业务系统深度融合提供协议层支撑,较传统API集成效率提升5-8倍。
5
Dify应用实战(17) - 使用MCP服务
AI本文实战演示Dify集成MCP服务的全流程。通过mcp-proxy搭建代理服务→配置SSE插件→部署支持MCP的Agent节点,实现对接MySQL等第三方服务。详解Docker容器化部署及服务授权机制,展示如何突破服务端限制调用本地工具,为智能客服、数据分析等场景提供跨系统集成方案,较传统API对接效率提升50%。
随机文章随机推荐

评论区

Profile Image of the Author
小王的博客
一个上了年纪的猿人.
分类
标签
最新动态
站点统计
文章
209
分类
15
标签
161
总字数
478,322
运行时长
0
最后活动
0 天前
站点信息
构建平台
Vercel
博客版本
Firefly v6.16.7
文章许可
CC BY-NC-SA 4.0
文章目录