mcpField
M
monkeymcp

monkeymcp

本地服务
github.com/jamesmontemagno开发工具1264 周前更新

关于 monkeymcp

monkeymcp 是一个基于 .NET 9.0 构建的 MCP 服务示例,提供猴子数据查询、行程模拟及位置服务等工具。它适合想学习如何搭建 C# MCP 服务的开发者,并同时支持 stdio 与 SSE 两种传输方式。

主要功能

  1. 01查询全部猴子及指定猴子的信息
  2. 02生成猴子的行程路径与活动记录
  3. 03基于 Haversine 公式计算行程距离
  4. 04提供 stdio 与 SSE 两种传输实现
  5. 05通过特性标注快速注册 MCP 工具

适用场景

  1. 01学习如何使用 .NET 搭建 MCP 服务
  2. 02在 VS Code 或 Claude Desktop 中测试 MCP 工具调用
  3. 03作为自定义工具服务的起始模板

MCP 相关

该项目是 MCP 服务,向 MCP 客户端暴露 GetMonkeys、GetMonkey、GetMonkeyJourney 和 GetAllMonkeyJourneys 等工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"jamesmontemagno-monkeymcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"docker.io/jamesmontemagno/monkeymcp:2.0.3"
]
}
}
}
启动命令docker run -i --rm docker.io/jamesmontemagno/monkeymcp:2.0.3

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocidocker.io/jamesmontemagno/monkeymcp:2.0.3

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

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

概述

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

立即试用

VS Code 和 VS 快速安装

Install Remote Server in VS Code Install Remote Server in VS Code Insiders

Install Docker Container in VS Code Install Docker Container in VS Code Insiders

Install Remote Server in Visual Studio Install Docker Container in Visual Studio

在 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)
  • 标准输入/输出传输:使用 stdio 与客户端通信
  • 自定义工具集成:包含创建和注册 MCP 工具的示例
服务
  • MonkeyService:示例服务,从 API 端点获取猴子数据

    • 提供获取所有猴子列表或按名称查找特定猴子的方法
    • 缓存结果以提升性能
  • MonkeyLocationService:为猴子生成独特旅程和活动的服务

    • 根据猴子的物种行为创建随机路径点
    • 生成特定物种的活动(梳理毛发、嚎叫、泡温泉等)
    • 提供健康统计数据和活动模式
    • 每段旅程都包含有趣的活动,例如吃香蕉、为其他猴子清洁和探索
可用工具

服务端提供多个可由客户端调用的工具:

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

配置选项

托管配置

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

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

提供多种日志记录提供程序:

  • Console:将日志记录到标准输出
  • Debug:记录用于调试的日志
  • EventLog:将日志记录到系统事件日志(在 Windows 上运行时)
  • EventSource:提供 ETW(Windows 事件跟踪)集成

入门

先决条件
  • .NET 9.0 SDK 或更高版本
  • 对 Model Context Protocol(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("Description of what the tool does")]
    public static string ToolMethod(string param) => $"Result: {param}";
}

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

概述

MonkeyMCPSSE 项目提供了 Monkey MCP 服务的另一种实现,它使用基于 HTTP 的服务器发送事件(SSE),而不是 stdio 传输。此实现以 Web 服务的形式运行,非常适合基于 Web 的客户端以及需要基于 HTTP 通信的场景。

在此阅读有关 SSE 安全最佳实践的更多信息

特性
  • 基于 HTTP 的传输:默认运行于 http://localhost:3001
  • 服务器发送事件:支持从服务器到客户端的实时单向通信
  • ASP.NET Core 集成:使用 ASP.NET Core 的 Web 服务功能构建
  • 基于 HTTP 的 MCP:通过 HTTP 传输实现 Model Context Protocol
运行 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 许可证。

MonkeyLocationService 特性

MonkeyLocationService 提供丰富的模拟功能:

猴子类型配置
  • 狒狒:生活在稀树草原,具有社交梳理行为并会挖掘根茎觅食
  • 吼猴:森林居民,以领地嚎叫和吃树叶而闻名
  • 日本猕猴:喜欢泡温泉和玩雪的山地猴子
  • 长鼻猴:红树林专家,会游泳并会展示其独特的鼻子
  • 金丝猴:高海拔杂技高手,会挤在一起取暖
行程组件
  • 路径点:显示猴子行进路线的 GPS 坐标
  • 活动:具有能量消耗或收益的物种特有行为
  • 健康数据:能量、幸福度、饥饿度、社交度、压力和健康指标
  • 时间追踪:开始和结束时间,以及活动时长
  • 距离计算:使用 Haversine 公式计算行程总距离
独特活动包括
  • 寻找和食用香蕉
  • 相互梳理毛发
  • 标记领地
  • 泡温泉(猕猴)
  • 游泳(长鼻猴)
  • 杂技表演
  • 社交互动
  • 觅食和探索

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。