Simple MCP Server

Simple MCP Server

好的,这是一个用极简代码演示如何构建一个 MCP (Mesh Configuration Protocol) 服务器的示例,使用 Python 和 gRPC: ```python # server.py import grpc from concurrent import futures import mcp_pb2 import mcp_pb2_grpc class McpService(mcp_pb2_grpc.AggregatedDiscoveryServiceServicer): def StreamAggregatedResources(self, request_iterator, context): for request in request_iterator: print(f"Received request: {request}") # 构造一个简单的响应 response = mcp_pb2.AggregatedDiscoveryResponse( version_info="v1", resources=[], type_url=request.type_url, nonce="nonce-123" ) yield response def serve(): server = grpc.server(futures.ThreadPoolExecutor(max_workers=10)) mcp_pb2_grpc.add_AggregatedDiscoveryServiceServicer_to_server(McpService(), server) server.add_insecure_port('[::]:50051') server.start() print("MCP Server started on port 50051") server.wait_for_termination() if __name__ == '__main__': serve() ``` **代码解释:** 1. **导入必要的库:** * `grpc`: gRPC 库。 * `concurrent.futures`: 用于创建线程池。 * `mcp_pb2` 和 `mcp_pb2_grpc`: 从 MCP 的 protobuf 定义生成的 Python 代码。 你需要先安装 `protobuf` 和 `grpcio-tools`,然后使用 `protoc` 命令生成这些文件。 例如: ```bash pip install protobuf grpcio-tools # 假设你的 mcp.proto 文件在当前目录 python -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. mcp.proto ``` 确保你的 `mcp.proto` 文件定义了 MCP 的服务和消息。 一个简化的 `mcp.proto` 示例: ```protobuf // mcp.proto syntax = "proto3"; package envoy.service.discovery.v3; service AggregatedDiscoveryService { rpc StreamAggregatedResources(stream AggregatedDiscoveryRequest) returns (stream AggregatedDiscoveryResponse) {} } message AggregatedDiscoveryRequest { string version_info = 1; repeated string resource_names = 2; string type_url = 3; string response_nonce = 4; string error_detail = 5; } message AggregatedDiscoveryResponse { string version_info = 1; repeated google.protobuf.Any resources = 2; string type_url = 3; string nonce = 4; } import "google/protobuf/any.proto"; ``` 2. **`McpService` 类:** * 继承自 `mcp_pb2_grpc.AggregatedDiscoveryServiceServicer`,这是 gRPC 生成的服务基类。 * 实现了 `StreamAggregatedResources` 方法,这是 MCP 服务定义的核心方法。 它是一个双向流 (stream),服务器接收来自客户端的请求流,并返回响应流。 * 在 `StreamAggregatedResources` 中,我们简单地打印接收到的请求,并构造一个简单的 `AggregatedDiscoveryResponse` 作为响应。 这个响应包含一个版本信息、一个空的资源列表、请求的类型 URL 和一个 nonce。 3. **`serve` 函数:** * 创建一个 gRPC 服务器,使用线程池来处理请求。 * 将 `McpService` 注册到服务器。 * 添加一个不安全的端口 `[::]:50051` 用于监听连接。 在生产环境中,你应该使用安全的 TLS 连接。 * 启动服务器并打印一条消息。 * 调用 `server.wait_for_termination()` 使服务器保持运行状态,直到手动停止。 4. **`if __name__ == '__main__':` 块:** * 确保 `serve` 函数只在脚本直接运行时才被调用,而不是作为模块导入时。 **如何运行:** 1. **安装依赖:** ```bash pip install grpcio protobuf grpcio-tools ``` 2. **生成 gRPC 代码:** * 将上面的 `mcp.proto` 文件保存到你的项目目录中。 * 运行以下命令生成 `mcp_pb2.py` 和 `mcp_pb2_grpc.py`: ```bash python -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. mcp.proto ``` 3. **运行服务器:** ```bash python server.py ``` **重要说明:** * **极简示例:** 这个示例非常简单,只用于演示 MCP 服务器的基本结构。 它没有实现任何实际的配置分发逻辑。 * **错误处理:** 代码中没有包含任何错误处理。 在生产环境中,你需要添加适当的错误处理机制。 * **安全性:** 这个示例使用不安全的连接。 在生产环境中,你应该使用 TLS 加密来保护通信。 * **资源管理:** 这个示例没有管理任何实际的资源。 你需要根据你的具体需求来实现资源的管理和分发。 * **Protobuf 定义:** `mcp.proto` 文件需要根据你的实际需求进行定义。 上面的示例提供了一个最小化的定义,你需要根据你的配置类型和数据结构来扩展它。 * **客户端:** 你需要一个 MCP 客户端来向服务器发送请求。 客户端的实现取决于你使用的编程语言和框架。 这个示例提供了一个起点,你可以根据你的具体需求来构建一个功能完善的 MCP 服务器。 记住要仔细阅读 MCP 规范,并根据你的应用场景进行适当的调整。 **中文翻译:** 好的,这是一个用极简代码演示如何构建一个 MCP (Mesh Configuration Protocol) 服务器的示例,使用 Python 和 gRPC: ```python # server.py import grpc from concurrent import futures import mcp_pb2 import mcp_pb2_grpc class McpService(mcp_pb2_grpc.AggregatedDiscoveryServiceServicer): def StreamAggregatedResources(self, request_iterator, context): for request in request_iterator: print(f"Received request: {request}") # 构造一个简单的响应 response = mcp_pb2.AggregatedDiscoveryResponse( version_info="v1", resources=[], type_url=request.type_url, nonce="nonce-123" ) yield response def serve(): server = grpc.server(futures.ThreadPoolExecutor(max_workers=10)) mcp_pb2_grpc.add_AggregatedDiscoveryServiceServicer_to_server(McpService(), server) server.add_insecure_port('[::]:50051') server.start() print("MCP Server started on port 50051") server.wait_for_termination() if __name__ == '__main__': serve() ``` **代码解释:** 1. **导入必要的库:** * `grpc`: gRPC 库。 * `concurrent.futures`: 用于创建线程池。 * `mcp_pb2` 和 `mcp_pb2_grpc`: 从 MCP 的 protobuf 定义生成的 Python 代码。 你需要先安装 `protobuf` 和 `grpcio-tools`,然后使用 `protoc` 命令生成这些文件。 例如: ```bash pip install protobuf grpcio-tools # 假设你的 mcp.proto 文件在当前目录 python -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. mcp.proto ``` 确保你的 `mcp.proto` 文件定义了 MCP 的服务和消息。 一个简化的 `mcp.proto` 示例: ```protobuf // mcp.proto syntax = "proto3"; package envoy.service.discovery.v3; service AggregatedDiscoveryService { rpc StreamAggregatedResources(stream AggregatedDiscoveryRequest) returns (stream AggregatedDiscoveryResponse) {} } message AggregatedDiscoveryRequest { string version_info = 1; repeated string resource_names = 2; string type_url = 3; string response_nonce = 4; string error_detail = 5; } message AggregatedDiscoveryResponse { string version_info = 1; repeated google.protobuf.Any resources = 2; string type_url = 3; string nonce = 4; } import "google/protobuf/any.proto"; ``` 2. **`McpService` 类:** * 继承自 `mcp_pb2_grpc.AggregatedDiscoveryServiceServicer`,这是 gRPC 生成的服务基类。 * 实现了 `StreamAggregatedResources` 方法,这是 MCP 服务定义的核心方法。 它是一个双向流 (stream),服务器接收来自客户端的请求流,并返回响应流。 * 在 `StreamAggregatedResources` 中,我们简单地打印接收到的请求,并构造一个简单的 `AggregatedDiscoveryResponse` 作为响应。 这个响应包含一个版本信息、一个空的资源列表、请求的类型 URL 和一个 nonce。 3. **`serve` 函数:** * 创建一个 gRPC 服务器,使用线程池来处理请求。 * 将 `McpService` 注册到服务器。 * 添加一个不安全的端口 `[::]:50051` 用于监听连接。 在生产环境中,你应该使用安全的 TLS 连接。 * 启动服务器并打印一条消息。 * 调用 `server.wait_for_termination()` 使服务器保持运行状态,直到手动停止。 4. **`if __name__ == '__main__':` 块:** * 确保 `serve` 函数只在脚本直接运行时才被调用,而不是作为模块导入时。 **如何运行:** 1. **安装依赖:** ```bash pip install grpcio protobuf grpcio-tools ``` 2. **生成 gRPC 代码:** * 将上面的 `mcp.proto` 文件保存到你的项目目录中。 * 运行以下命令生成 `mcp_pb2.py` 和 `mcp_pb2_grpc.py`: ```bash python -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. mcp.proto ``` 3. **运行服务器:** ```bash python server.py ``` **重要说明:** * **极简示例:** 这个示例非常简单,只用于演示 MCP 服务器的基本结构。 它没有实现任何实际的配置分发逻辑。 * **错误处理:** 代码中没有包含任何错误处理。 在生产环境中,你需要添加适当的错误处理机制。 * **安全性:** 这个示例使用不安全的连接。 在生产环境中,你应该使用 TLS 加密来保护通信。 * **资源管理:** 这个示例没有管理任何实际的资源。 你需要根据你的具体需求来实现资源的管理和分发。 * **Protobuf 定义:** `mcp.proto` 文件需要根据你的实际需求进行定义。 上面的示例提供了一个最小化的定义,你需要根据你的配置类型和数据结构来扩展它。 * **客户端:** 你需要一个 MCP 客户端来向服务器发送请求。 客户端的实现取决于你使用的编程语言和框架。 这个示例提供了一个起点,你可以根据你的具体需求来构建一个功能完善的 MCP 服务器。 记住要仔细阅读 MCP 规范,并根据你的应用场景进行适当的调整。 **总结:** 这段代码提供了一个非常基础的 MCP 服务器框架。 你需要根据你的实际需求扩展 `McpService` 类,实现资源的管理、版本控制、错误处理和安全性。 同时,你需要定义合适的 `mcp.proto` 文件来描述你的配置数据结构。 最后,你需要一个 MCP 客户端来与服务器进行通信,请求和接收配置信息。

guog

开发者工具
访问服务器

README

Simple MCP Server

这是一个示例项目,用极简方式演示如何构建MCP Server。

  • 天气查询:使用高德开放平台提供的天气查询API实现MCP Server,可获取实况和未来天气.
  • 钉钉群消息:使用钉钉群机器人,发送消息到钉钉群。

效果演示

Cherry Studio使用

如上图:

  • 用户问"西安今天用穿棉袄吗"
  • AI自动判断是否要调用天气MCP Server
  • AI按照MCP Server的参数要求,将西安的经纬度信息提供给MCP Server
  • MCP Server内部调用了高德提供的天气查询API,并将结果返回给AI
  • AI将天气结果进行汇总整理,输出给用户

与钉钉群消息结合效果如下图:

问天气,发送到钉钉

钉钉群消息

环境准备

MCP Server 构建和执行

MCP Client和大模型

支持MCP协议的任何AI对话客户端程序都可以,如:Cline、Continue、Claude Desktop等, 本例使用Cherry Studio。

Cherry Studio

Cherry Studio是一个AI对话客户端,其支持很多个大模型提供商,如:硅基流动、阿里云百炼、OpenAI等几十个国内外提供商,各提供商分别提供很多大模型服务,各个大模型的能力也有差异,有免费和收费的,也有不同作用和能力的。 当然,Cherry Studio也支持本地运行的大模型,如:Ollama、LLM Studio等。

本文使用硅基流动提供的Qwen2.5-7B-Instruct模型,请先注册硅基流动账户,申请API密钥,并在Cherry Studio中配置API密钥。

注意:请选择带有Function Call功能的大模型(Cherry Studio中带🔧符合的大模型),如:Qwen2.5-7B-Instruct

配置大模型和密钥

高德开放平台API密钥

从高德开放平台申请Web API密钥(key)

钉钉群API密钥

参见钉钉开放平台——自定义机器人接入

注意: 钉钉的本例中采用安全设置/自定义关键字方式,关键字为天气,如下图所示:

添加钉钉群机器人

构建

  • Clone本项目代码到本地,如/Users/yourname/simple-mcp-server/目录;
  • 打开命令行工具;
  • 跳转到此路径 cd /Users/yourname/simple-mcp-server/;
  • 安装依赖 pnpm i;
  • 构建 pnpm build.

构建完成后,在项目路径下会产生build/index.js文件。

构建的执行文件完整路径为:/Users/yourname/simple-mcp-server/build/index.js.

安装使用

在 Cherry Studio中打开设置/MCP服务器,添加MCP服务器,如下图:

添加MCP服务器

  • 名称: 随意写
  • 类型:STDIO
  • 命令:node
  • 参数:刚才构建的执行文件路径,即/Users/yourname/simple-mcp-server/build/index.js
  • 环境变量:
    • GAODE_API_KEY :高德开放平台申请的Web API 32位密钥 GAODE_API_KEY=your_api_key
    • DINGTALK_ACCESS_TOKEN: 创建钉钉群机器人的Webhook 地址后面的64位密钥 DINGTALK_ACCESS_TOKEN=your_access_token

使用

在Cherry Studio中新建对话,对话框下方开启MCP服务器和刚才安装的MCP Server。

注意:当选择了带有Function Call功能的大模型时,下方才有MCP相关选项。

使用MCP对话


Simple MCP Server

这是一个示例项目,用极简方式演示如何构建MCP Server。

  • 天气查询:使用高德开放平台提供的天气查询API实现MCP Server,可获取实况和未来天气.
  • 钉钉群消息:使用钉钉群机器人,发送消息到钉钉群。

效果演示

Cherry Studio使用

如上图:

  • 用户问"西安今天用穿棉袄吗"
  • AI自动判断是否要调用天气MCP Server
  • AI按照MCP Server的参数要求,将西安的经纬度信息提供给MCP Server
  • MCP Server内部调用了高德提供的天气查询API,并将结果返回给AI
  • AI将天气结果进行汇总整理,输出给用户

与钉钉群消息结合效果如下图:

问天气,发送到钉钉

钉钉群消息

环境准备

MCP Server 构建和执行

MCP Client和大模型

支持MCP协议的任何AI对话客户端程序都可以,如:Cline、Continue、Claude Desktop等, 本例使用Cherry Studio。

Cherry Studio

Cherry Studio是一个AI对话客户端,其支持很多个大模型提供商,如:硅基流动、阿里云百炼、OpenAI等几十个国内外提供商,各提供商分别提供很多大模型服务,各个大模型的能力也有差异,有免费和收费的,也有不同作用和能力的。 当然,Cherry Studio也支持本地运行的大模型,如:Ollama、LLM Studio等。

本文使用硅基流动提供的Qwen2.5-7B-Instruct模型,请先注册硅基流动账户,申请API密钥,并在Cherry Studio中配置API密钥。

注意:请选择带有Function Call功能的大模型(Cherry Studio中带🔧符合的大模型),如:Qwen2.5-7B-Instruct

配置大模型和密钥

高德开放平台API密钥

从高德开放平台申请Web API密钥(key)

钉钉群API密钥

参见钉钉开放平台——自定义机器人接入

注意: 钉钉的本例中采用安全设置/自定义关键字方式,关键字为天气,如下图所示:

添加钉钉群机器人

构建

  • Clone本项目代码到本地,如/Users/yourname/simple-mcp-server/目录;
  • 打开命令行工具;
  • 跳转到此路径 cd /Users/yourname/simple-mcp-server/;
  • 安装依赖 pnpm i;
  • 构建 pnpm build.

构建完成后,在项目路径下会产生build/index.js文件。

构建的执行文件完整路径为:/Users/yourname/simple-mcp-server/build/index.js.

安装使用

在 Cherry Studio中打开设置/MCP服务器,添加MCP服务器,如下图:

添加MCP服务器

  • 名称: 随意写
  • 类型:STDIO
  • 命令:node
  • 参数:刚才构建的执行文件路径,即/Users/yourname/simple-mcp-server/build/index.js
  • 环境变量:
    • GAODE_API_KEY :高德开放平台申请的Web API 32位密钥 GAODE_API_KEY=your_api_key
    • DINGTALK_ACCESS_TOKEN: 创建钉钉群机器人的Webhook 地址后面的64位密钥 DINGTALK_ACCESS_TOKEN=your_access_token

使用

在Cherry Studio中新建对话,对话框下方开启MCP服务器和刚才安装的MCP Server。

注意:当选择了带有Function Call功能的大模型时,下方才有MCP相关选项。

使用MCP对话


Simple MCP Server

这是一个示例项目,用极简方式演示如何构建 MCP Server。

  • 天气查询:使用高德开放平台提供的天气查询 API 实现 MCP Server,可获取实况和未来天气。
  • 钉钉群消息:使用钉钉群机器人,发送消息到钉钉群。

效果演示

Cherry Studio 使用

如上图:

  • 用户问“西安今天用穿棉袄吗”
  • AI 自动判断是否要调用天气 MCP Server
  • AI 按照 MCP Server 的参数要求,将 西安 的经纬度信息提供给 MCP Server
  • MCP Server 内部调用了高德提供的天气查询 API,并将结果返回给 AI
  • AI 将天气结果进行汇总整理,输出给用户

与钉钉群消息结合效果如下图:

问天气,发送到钉钉

钉钉群消息

环境准备

MCP Server 构建和执行

MCP Client 和大模型

支持 MCP 协议的任何 AI 对话客户端程序都可以,如:Cline、Continue、Claude Desktop 等,本例使用 Cherry Studio。

Cherry Studio

Cherry Studio 是一个 AI 对话客户端,其支持很多个大模型提供商,如:硅基流动、阿里云百炼、OpenAI 等几十个国内外提供商,各提供商分别提供很多大模型服务,各个大模型的能力也有差异,有免费和收费的,也有不同作用和能力的。 当然,Cherry Studio 也支持本地运行的大模型,如:Ollama、LLM Studio 等。

本文使用硅基流动提供的 Qwen2.5-7B-Instruct 模型,请先注册硅基流动账户,申请 API 密钥,并在 Cherry Studio 中配置 API 密钥。

注意:请选择带有 Function Call 功能的大模型 (Cherry Studio 中带 🔧 符号的大模型),如:Qwen2.5-7B-Instruct

配置大模型和密钥

高德开放平台 API 密钥

从高德开放平台申请 Web API 密钥 (key)

钉钉群 API 密钥

参见钉钉开放平台——自定义机器人接入

注意:钉钉的本例中采用 安全设置/自定义关键字 方式,关键字为 天气,如下图所示:

添加钉钉群机器人

构建

  • Clone 本项目代码到本地,如 /Users/yourname/simple-mcp-server/ 目录;
  • 打开命令行工具;
  • 跳转到此路径 cd /Users/yourname/simple-mcp-server/
  • 安装依赖 pnpm i
  • 构建 pnpm build

构建完成后,在项目路径下会产生 build/index.js 文件。

构建的执行文件完整路径为:/Users/yourname/simple-mcp-server/build/index.js

安装使用

在 Cherry Studio 中打开 设置/MCP 服务器,添加 MCP 服务器,如下图:

添加 MCP 服务器

  • 名称:随意写
  • 类型:STDIO
  • 命令:node
  • 参数:刚才构建的执行文件路径,即 /Users/yourname/simple-mcp-server/build/index.js
  • 环境变量:
    • GAODE_API_KEY:高德开放平台申请的 Web API 32 位密钥 GAODE_API_KEY=your_api_key
    • DINGTALK_ACCESS_TOKEN:创建钉钉群机器人的 Webhook 地址后面的 64 位密钥 DINGTALK_ACCESS_TOKEN=your_access_token

使用

在 Cherry Studio 中新建对话,对话框下方开启 MCP 服务器和刚才安装的 MCP Server。

注意:当选择了带有 Function Call 功能的大模型时,下方才有 MCP 相关选项。

使用 MCP 对话


Simple MCP Server

这是一个示例项目,用极简方式演示如何构建 MCP Server。

  • 天气查询:使用高德开放平台提供的天气查询 API 实现 MCP Server,可获取实况和未来天气。
  • 钉钉群消息:使用钉钉群机器人,发送消息到钉钉群。

效果演示

Cherry Studio 使用

如上图:

  • 用户问“西安今天用穿棉袄吗”
  • AI 自动判断是否要调用天气 MCP Server
  • AI 按照 MCP Server 的参数要求,将 西安 的经纬度信息提供给 MCP Server
  • MCP Server 内部调用了高德提供的天气查询 API,并将结果返回给 AI
  • AI 将天气结果进行汇总整理,输出给用户

与钉钉群消息结合效果如下图:

问天气,发送到钉钉

钉钉群消息

环境准备

MCP Server 构建和执行

MCP Client 和大模型

支持 MCP 协议的任何 AI 对话客户端程序都可以,如:Cline、Continue、Claude Desktop 等,本例使用 Cherry Studio。

Cherry Studio

Cherry Studio 是一个 AI 对话客户端,其支持很多个大模型提供商,如:硅基流动、阿里云百炼、OpenAI 等几十个国内外提供商,各提供商分别提供很多大模型服务,各个大模型的能力也有差异,有免费和收费的,也有不同作用和能力的。 当然,Cherry Studio 也支持本地运行的大模型,如:Ollama、LLM Studio 等。

本文使用硅基流动提供的 Qwen2.5-7B-Instruct 模型,请先注册硅基流动账户,申请 API 密钥,并在 Cherry Studio 中配置 API 密钥。

注意:请选择带有 Function Call 功能的大模型 (Cherry Studio 中带 🔧 符号的大模型),如:Qwen2.5-7B-Instruct

配置大模型和密钥

高德开放平台 API 密钥

从高德开放平台申请 Web API 密钥 (key)

钉钉群 API 密钥

参见钉钉开放平台——自定义机器人接入

注意:钉钉的本例中采用 安全设置/自定义关键字 方式,关键字为 天气,如下图所示:

添加钉钉群机器人

构建

  • Clone 本项目代码到本地,如 /Users/yourname/simple-mcp-server/ 目录;
  • 打开命令行工具;
  • 跳转到此路径 cd /Users/yourname/simple-mcp-server/
  • 安装依赖 pnpm i
  • 构建 pnpm build

构建完成后,在项目路径下会产生 build/index.js 文件。

构建的执行文件完整路径为:/Users/yourname/simple-mcp-server/build/index.js

安装使用

在 Cherry Studio 中打开 设置/MCP 服务器,添加 MCP 服务器,如下图:

添加 MCP 服务器

  • 名称:随意写
  • 类型:STDIO
  • 命令:node
  • 参数:刚才构建的执行文件路径,即 /Users/yourname/simple-mcp-server/build/index.js
  • 环境变量:
    • GAODE_API_KEY:高德开放平台申请的 Web API 32 位密钥 GAODE_API_KEY=your_api_key
    • DINGTALK_ACCESS_TOKEN:创建钉钉群机器人的 Webhook 地址后面的 64 位密钥 DINGTALK_ACCESS_TOKEN=your_access_token

使用

在 Cherry Studio 中新建对话,对话框下方开启 MCP 服务器和刚才安装的 MCP Server。

注意:当选择了带有 Function Call 功能的大模型时,下方才有 MCP 相关选项。

使用 MCP 对话


Simple MCP Server

这是一个示例项目,用极简方式演示如何构建 MCP Server。

  • 天气查询:使用高德开放平台提供的天气查询 API 实现 MCP Server,可获取实况和未来天气。
  • 钉钉群消息:使用钉钉群机器人,发送消息到钉钉群。

效果演示

Cherry Studio 使用

如上图:

  • 用户问“西安今天用穿棉袄吗”
  • AI 自动判断是否要调用天气 MCP Server
  • AI 按照 MCP Server 的参数要求,将 西安 的经纬度信息提供给 MCP Server
  • MCP Server 内部调用了高德提供的天气查询 API,并将结果返回给 AI
  • AI 将天气结果进行汇总整理,输出给用户

与钉钉群消息结合效果如下图:

问天气,发送到钉钉

钉钉群消息

环境准备

MCP Server 构建和执行

MCP Client 和大模型

支持 MCP 协议的任何 AI 对话客户端程序都可以,如:Cline、Continue、Claude Desktop 等,本例使用 Cherry Studio。

Cherry Studio

Cherry Studio 是一个 AI 对话客户端,其支持很多个大模型提供商,如:硅基流动、阿里云百炼、OpenAI 等几十个国内外提供商,各提供商分别提供很多大模型服务,各个大模型的能力也有差异,有免费和收费的,也有不同作用和能力的。 当然,Cherry Studio 也支持本地运行的大模型,如:Ollama、LLM Studio 等。

本文使用硅基流动提供的 Qwen2.5-7B-Instruct 模型,请先注册硅基流动账户,申请 API 密钥,并在 Cherry Studio 中配置 API 密钥。

注意:请选择带有 Function Call 功能的大模型 (Cherry Studio 中带 🔧 符号的大模型),如:Qwen2.5-7B-Instruct

配置大模型和密钥

高德开放平台 API 密钥

从高德开放平台申请 Web API 密钥 (key)

钉钉群 API 密钥

参见钉钉开放平台——自定义机器人接入

注意:钉钉的本例中采用 安全设置/自定义关键字 方式,关键字为 天气,如下图所示:

添加钉钉群机器人

构建

  • Clone 本项目代码到本地,如 /Users/yourname/simple-mcp-server/ 目录;
  • 打开命令行工具;
  • 跳转到此路径 cd /Users/yourname/simple-mcp-server/
  • 安装依赖 pnpm i
  • 构建 pnpm build

构建完成后,在项目路径下会产生 build/index.js 文件。

构建的执行文件完整路径为:/Users/yourname/simple-mcp-server/build/index.js

安装使用

在 Cherry Studio 中打开 设置/MCP 服务器,添加 MCP 服务器,如下图:

添加 MCP 服务器

  • 名称:随意写
  • 类型:STDIO
  • 命令:node
  • 参数:刚才构建的执行文件路径,即 /Users/yourname/simple-mcp-server/build/index.js
  • 环境变量:
    • GAODE_API_KEY:高德开放平台申请的 Web API 32 位密钥 GAODE_API_KEY=your_api_key
    • DINGTALK_ACCESS_TOKEN:创建钉钉群机器人的 Webhook 地址后面的 64 位密钥 DINGTALK_ACCESS_TOKEN=your_access_token

使用

在 Cherry Studio 中新建对话,对话框下方开启 MCP 服务器和刚才安装的 MCP Server。

注意:当选择了带有 Function Call 功能的大模型时,下方才有 MCP 相关选项。

使用 MCP 对话


Simple MCP Server

这是一个示例项目,用极简方式演示如何构建 MCP Server。

  • 天气查询:使用高德开放平台提供的天气查询 API 实现 MCP Server,可获取实况和未来天气。
  • 钉钉群消息:使用钉钉群机器人,发送消息到钉钉群。

效果演示

Cherry Studio 使用

如上图:

  • 用户问“西安今天用穿棉袄吗”
  • AI 自动判断是否要调用天气 MCP Server
  • AI 按照 MCP Server 的参数要求,将 西安 的经纬度信息提供给 MCP Server
  • MCP Server 内部调用了高德提供的天气查询 API,并将结果返回给 AI
  • AI 将天气结果进行汇总整理,输出给用户

与钉钉群消息结合效果如下图:

问天气,发送到钉钉

钉钉群消息

环境准备

MCP Server 构建和执行

MCP Client 和大模型

支持 MCP 协议的任何 AI 对话客户端程序都可以,如:Cline、Continue、Claude Desktop 等,本例使用 Cherry Studio。

Cherry Studio

Cherry Studio 是一个 AI 对话客户端,其支持很多个大模型提供商,如:硅基流动、阿里云百炼、OpenAI 等几十个国内外提供商,各提供商分别提供很多大模型服务,各个大模型的能力也有差异,有免费和收费的,也有不同作用和能力的。 当然,Cherry Studio 也支持本地运行的大模型,如:Ollama、LLM Studio 等。

本文使用硅基流动提供的 Qwen2.5-7B-Instruct 模型,请先注册硅基流动账户,申请 API 密钥,并在 Cherry Studio 中配置 API 密钥。

注意:请选择带有 Function Call 功能的大模型 (Cherry Studio 中带 🔧 符号的大模型),如:Qwen2.5-7B-Instruct

配置大模型和密钥

高德开放平台 API 密钥

从高德开放平台申请 Web API 密钥 (key)

钉钉群 API 密钥

参见钉钉开放平台——自定义机器人接入

注意:钉钉的本例中采用 安全设置/自定义关键字 方式,关键字为 天气,如下图所示:

添加钉钉群机器人

构建

  • Clone 本项目代码到本地,如 /Users/yourname/simple-mcp-server/ 目录;
  • 打开命令行工具;
  • 跳转到此路径 cd /Users/yourname/simple-mcp-server/
  • 安装依赖 pnpm i
  • 构建 pnpm build

构建完成后,在项目路径下会产生 build/index.js 文件。

构建的执行文件完整路径为:/Users/yourname/simple-mcp-server/build/index.js

安装使用

在 Cherry Studio 中打开 设置/MCP 服务器,添加 MCP 服务器,如下图:

添加 MCP 服务器

  • 名称:随意写
  • 类型:STDIO
  • 命令:node
  • 参数:刚才构建的执行文件路径,即 /Users/yourname/simple-mcp-server/build/index.js
  • 环境变量:
    • GAODE_API_KEY:高德开放平台申请的 Web API 32 位密钥 GAODE_API_KEY=your_api_key
    • DINGTALK_ACCESS_TOKEN:创建钉钉群机器人的 Webhook 地址后面的 64 位密钥 DINGTALK_ACCESS_TOKEN=your_access_token

使用

在 Cherry Studio 中新建对话,对话框下方开启 MCP 服务器和刚才安装的 MCP Server。

注意:当选择了带有 Function Call 功能的大模型时,下方才有 MCP 相关选项。

使用 MCP 对话


Simple MCP Server

这是一个示例项目,用极简方式演示如何构建 MCP Server。

  • 天气查询:使用高德开放平台提供的天气查询 API 实现 MCP Server,可获取实况和未来天气。
  • 钉钉群消息:使用钉钉群机器人,发送消息到钉钉群。

效果演示

Cherry Studio 使用

如上图:

  • 用户问“西安今天用穿棉袄吗”
  • AI 自动判断是否要调用天气 MCP Server
  • AI 按照 MCP Server 的参数要求,将 西安 的经纬度信息提供给 MCP Server
  • MCP Server 内部调用了高德提供的天气查询 API,并将结果返回给 AI
  • AI 将天气结果进行汇总整理,输出给用户

与钉钉群消息结合效果如下图:

问天气,发送到钉钉

钉钉群消息

环境准备

MCP Server 构建和执行

MCP Client 和大模型

支持 MCP 协议的任何 AI 对话客户端程序都可以,如:Cline、Continue、Claude Desktop 等,本例使用 Cherry Studio。

Cherry Studio

Cherry Studio 是一个 AI 对话客户端,其支持很多个大模型提供商,如:硅基流动、阿里云百炼、OpenAI 等几十个国内外提供商,各提供商分别提供很多大模型服务,各个大模型的能力也有差异,有免费和收费的,也有不同作用和能力的。 当然,Cherry Studio 也支持本地运行的大模型,如:Ollama、LLM Studio 等。

本文使用硅基流动提供的 Qwen2.5-7B-Instruct 模型,请先注册硅基流动账户,申请 API 密钥,并在 Cherry Studio 中配置 API 密钥。

注意:请选择带有 Function Call 功能的大模型 (Cherry Studio 中带 🔧 符号的大模型),如:Qwen2.5-7B-Instruct

配置大模型和密钥

高德开放平台 API 密钥

从高德开放平台申请 Web API 密钥 (key)

钉钉群 API 密钥

参见钉钉开放平台——自定义机器人接入

注意:钉钉的本例中采用 安全设置/自定义关键字 方式,关键字为 天气,如下图所示:

添加钉钉群机器人

构建

  • Clone 本项目代码到本地,如 /Users/yourname/simple-mcp-server/ 目录;
  • 打开命令行工具;
  • 跳转到此路径 cd /Users/yourname/simple-mcp-server/
  • 安装依赖 pnpm i
  • 构建 pnpm build

构建完成后,在项目路径下会产生 build/index.js 文件。

构建的执行文件完整路径为:/Users/yourname/simple-mcp-server/build/index.js

安装使用

在 Cherry Studio 中打开 设置/MCP 服务器,添加 MCP 服务器,如下图:

添加 MCP 服务器

  • 名称:随意写
  • 类型:STDIO
  • 命令:node
  • 参数:刚才构建的执行文件路径,即 /Users/yourname/simple-mcp-server/build/index.js
  • 环境变量:
    • GAODE_API_KEY:高德开放平台申请的 Web API 32 位密钥 GAODE_API_KEY=your_api_key
    • DINGTALK_ACCESS_TOKEN:创建钉钉群机器人的 Webhook 地址后面的 64 位密钥 DINGTALK_ACCESS_TOKEN=your_access_token

使用

在 Cherry Studio 中新建对话,对话框下方开启 MCP 服务器和刚才安装的 MCP Server。

注意:当选择了带有 Function Call 功能的大模型时,下方才有 MCP 相关选项。

使用 MCP 对话


Simple MCP Server

这是一个示例项目,用极简方式演示如何构建 MCP Server。

  • 天气查询:使用高德开放平台提供的天气查询 API 实现 MCP Server,可获取实况和未来天气。
  • 钉钉群消息:使用钉钉群机器人,发送消息到钉钉群。

效果演示

Cherry Studio 使用

如上图:

  • 用户问“西安今天用穿棉袄吗”
  • AI 自动判断是否要调用天气 MCP Server
  • AI 按照 MCP Server 的参数要求,将 西安 的经纬度信息提供给 MCP Server
  • MCP Server 内部调用了高德提供的天气查询 API,并将结果返回给 AI
  • AI 将天气结果进行汇总整理,输出给用户

与钉钉群消息结合效果如下图:

问天气,发送到钉钉

钉钉群消息

环境准备

MCP Server 构建和执行

MCP Client 和大模型

支持 MCP 协议的任何 AI 对话客户端程序都可以,如:Cline、Continue、Claude Desktop 等,本例使用 Cherry Studio。

Cherry Studio

Cherry Studio 是一个 AI 对话客户端,其支持很多个大模型提供商,如:硅基流动、阿里云百炼、OpenAI 等几十个国内外提供商,各提供商分别提供很多大模型服务,各个大模型的能力也有差异,有免费和收费的,也有不同作用和能力的。 当然,Cherry Studio 也支持本地运行的大模型,如:Ollama、LLM Studio 等。

本文使用硅基流动提供的 Qwen2.5-7B-Instruct 模型,请先注册硅基流动账户,申请 API 密钥,并在 Cherry Studio 中配置 API 密钥。

注意:请选择带有 Function Call 功能的大模型 (Cherry Studio 中带 🔧 符号的大模型),如:Qwen2.5-7B-Instruct

配置大模型和密钥

高德开放平台 API 密钥

从高德开放平台申请 Web API 密钥 (key)

钉钉群 API 密钥

参见钉钉开放平台——自定义机器人接入

注意:钉钉的本例中采用 安全设置/自定义关键字 方式,关键字为 天气,如下图所示:

添加钉钉群机器人

构建

  • Clone 本项目代码到本地,如 /Users/yourname/simple-mcp-server/ 目录;
  • 打开命令行工具;
  • 跳转到此路径 cd /Users/yourname/simple-mcp-server/
  • 安装依赖 pnpm i
  • 构建 pnpm build

构建完成后,在项目路径下会产生 build/index.js 文件。

构建的执行文件完整路径为:/Users/yourname/simple-mcp-server/build/index.js

安装使用

在 Cherry Studio 中打开 设置/MCP 服务器,添加 MCP 服务器,如下图:

添加 MCP 服务器

  • 名称:随意写
  • 类型:STDIO
  • 命令:node
  • 参数:刚才构建的执行文件路径,即 /Users/yourname/simple-mcp-server/build/index.js
  • 环境变量:
    • GAODE_API_KEY:高德开放平台申请的 Web API **3

推荐服务器

Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
MCP Package Docs Server

MCP Package Docs Server

促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。

精选
本地
TypeScript
Claude Code MCP

Claude Code MCP

一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。

精选
本地
JavaScript
@kazuph/mcp-taskmanager

@kazuph/mcp-taskmanager

用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。

精选
本地
JavaScript
mermaid-mcp-server

mermaid-mcp-server

一个模型上下文协议 (MCP) 服务器,用于将 Mermaid 图表转换为 PNG 图像。

精选
JavaScript
Jira-Context-MCP

Jira-Context-MCP

MCP 服务器向 AI 编码助手(如 Cursor)提供 Jira 工单信息。

精选
TypeScript
Linear MCP Server

Linear MCP Server

一个模型上下文协议(Model Context Protocol)服务器,它与 Linear 的问题跟踪系统集成,允许大型语言模型(LLM)通过自然语言交互来创建、更新、搜索和评论 Linear 问题。

精选
JavaScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Curri MCP Server

Curri MCP Server

通过管理文本笔记、提供笔记创建工具以及使用结构化提示生成摘要,从而实现与 Curri API 的交互。

官方
本地
JavaScript
Simple MCP Server