返回市场
猴子MCP服务器

猴子MCP服务器

作者:jamesmontemagno118 星标更新:2025-10-11

项目介绍

Monkey - 模型上下文协议(MCP)服务器

概述

这是一个使用 .NET 9.0 构建的模型上下文协议(MCP)服务器实现。MCP 服务器提供了一种通信协议,用于促进模型驱动系统中各个组件之间的交互。此实现展示了如何使用自定义工具和服务设置一个基本的 MCP 服务器。

尝试一下

快速安装 VS Code 和 VS

在 VS Code 中安装远程服务器 在 VS Code Insiders 中安装远程服务器

在 VS Code 中安装 Docker 容器 在 VS Code Insiders 中安装 Docker 容器

在 Visual Studio 中安装远程服务器 在 Visual Studio 中安装 Docker 容器

在 VS Code 中使用 GitHub Copilot、Claude Desktop 或其他 MCP 客户端进行配置:

选项 1:远程 Azure Functions 服务器(推荐)

{
    "servers": {
        "monkeymcp": {
            "url": "https://func-monkeymcp-3t4eixuap5dfm.azurewebsites.net/",
            "type": "http"
        }
    },
    "inputs": []
}

选项 2:Docker 容器

{
    "inputs": [],
    "servers": {
        "monkeymcp": {
            "command": "docker",
            "args": [
                "run",
                "-i",
                "--rm",
                "jamesmontemagno/monkeymcp"
            ],
            "env": {}
        }
    }
}

功能

核心组件

  • MCP 服务器:使用 ModelContextProtocol 库(版本 0.1.0-preview.2)构建
  • 标准 I/O 传输:使用 stdio 与客户端通信
  • 自定义工具集成:包括创建和注册 MCP 工具的示例

服务

  • MonkeyService:从 API 端点获取猴子数据的示例服务

    • 提供方法以检索所有猴子的列表或通过名称查找特定猴子
    • 缓存结果以提高性能
  • MonkeyLocationService:生成猴子的独特旅程和活动的服务

    • 基于猴子物种行为创建随机路径点
    • 生成特定物种的活动(梳理毛发、吼叫、泡温泉等)
    • 提供健康统计和移动模式
    • 每个旅程都包括有趣的活动,如吃香蕉、清洁其他猴子和探索

可用工具

服务器暴露了几个可以由客户端调用的工具:

猴子工具

  • GetMonkeys:返回所有可用猴子的 JSON 序列化列表
  • GetMonkey:通过名称检索特定猴子的信息
  • GetMonkeyJourney:为特定猴子创建独特的旅程路径,带有活动和健康统计数据
  • GetAllMonkeyJourneys:为所有可用猴子生成旅程路径

配置选项

托管配置

服务器使用 Microsoft.Extensions.Hosting(版本 9.0.3),它提供了:

  • 多个来源的配置(JSON、环境变量、命令行)
  • 服务的依赖注入
  • 日志记录能力

日志记录选项

有几个日志记录提供程序可用:

  • 控制台:记录到标准输出
  • 调试:用于调试的日志
  • 事件日志:记录到系统事件日志(当在 Windows 上运行时)
  • 事件源:提供 ETW(Windows 事件跟踪)集成

开始使用

先决条件

  • .NET 9.0 SDK 或更高版本
  • 对模型上下文协议(MCP)的基本理解

运行服务器

  1. 克隆此仓库
  2. 导航到项目目录
  3. 构建项目:dotnet build
  4. 使用 VS Code 或其他客户端进行配置:
"monkeyserver": {
    "type": "stdio",
    "command": "dotnet",
    "args": [
        "run",
        "--project",
        "/Users/jamesmontemagno/GitHub/TestMCP/MonkeyMCP/MonkeyMCP.csproj"
    ]
}

更新项目的路径

扩展服务器

要添加自定义工具:

  1. 创建一个类并用 [McpServerToolType] 属性标记
  2. 添加带有 [McpServerTool] 属性的方法
  3. 可选地添加 [Description] 属性以提供文档

示例:

[McpServerToolType]
public static class CustomTool
{
    [McpServerTool, Description("描述该工具的功能")]
    public static string ToolMethod(string param) => $"结果: {param}";
}

服务器发送事件实现(MonkeyMCPSSE)

概述

MonkeyMCPSSE 项目提供了使用 HTTP 上的服务器发送事件(SSE)而不是 stdio 传输的 Monkey MCP 服务器的替代实现。此实现作为 Web 服务器运行,使其非常适合基于 Web 的客户端和需要基于 HTTP 的通信场景。

有关安全的最佳实践,请参阅 此处

特性

  • 基于 HTTP 的传输:默认运行在 http://localhost:3001
  • 服务器发送事件:启用从服务器到客户端的实时单向通信
  • ASP.NET Core 集成:使用 ASP.NET Core 的 Web 服务器功能构建
  • HTTP 上的 MCP:在 HTTP 传输上实现模型上下文协议

运行 SSE 服务器

  1. 导航到 MonkeyMCPSSE 目录
  2. 构建并运行项目:
  3. 在 VS Code 中连接并运行,或使用 MCP Inspector npx @modelcontextprotocol/inspector

实现细节

SSE 实现使用 ASP.NET Core 内置的 Web 服务器功能,同时保持与 stdio 版本相同的猴子数据服务和工具。这使得在保持核心功能的同时轻松切换传输方法。

项目结构

  • /MonkeyMCP:主项目目录
    • MonkeyService.cs:实现获取猴子数据的服务
    • MonkeyTools.cs:访问猴子数据的 MCP 工具
    • Program.cs:配置和启动 MCP 服务器的入口点

依赖项

  • Microsoft.Extensions.Hosting(9.0.3):提供托管基础设施
  • ModelContextProtocol(0.1.0-preview.2):MCP 服务器实现
  • System.Text.Json(9.0.3):JSON 序列化/反序列化

许可证

该项目在 MIT 许可证下可用。

<!-- mcp-name: io.github.jamesmontemagno/monkeymcp -->

MonkeyLocationService 特性

MonkeyLocationService 提供丰富的模拟功能:

猴子类型配置

  • 狒狒:生活在草原上,有社会梳理毛发的行为和根部觅食
  • 吼猴:森林居民,以其领地吼叫和食用叶子而闻名
  • 日本猕猴:喜欢泡温泉和玩雪的山地猴子
  • 长鼻猴:沼泽专家,游泳并展示其独特的鼻子
  • 金丝猴:高海拔杂技演员,聚集取暖

旅程组件

  • 路径点:显示猴子旅行的 GPS 坐标
  • 活动:具有能量成本/收益的特定物种行为
  • 健康统计:能量、快乐、饥饿、社交、压力和健康指标
  • 时间追踪:开始/结束时间和活动持续时间
  • 距离计算:使用 Haversine 公式计算总旅程距离

独特活动包括

  • 寻找和吃香蕉
  • 互相梳理毛发
  • 领地标记
  • 泡温泉(猕猴)
  • 游泳(长鼻猴)
  • 杂技表演
  • 社交互动
  • 觅食和探索