Token导航 LogoToken导航

MCP Server · 开发工具

Manifold (Garume)

Manifold是一个.NET基础框架,允许开发者定义一次操作并通过CLI和MCP两种接口暴露,适用于需要统一操作定义和多平台调用的开发场景。

未说明官方级别未说明来源级核验工具 0
.NET开发C#命令行工具

快速开始

公开资料没有提供安装命令,按仓库或官方文档接入。
作者 / 组织
Garume
提供方
Garume

工具数量

0

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

45

仓库热度

收录来源

1 个

MCP World

选型结论

Manifold (Garume) 属于开发工具类 MCP Server,公开资料标注 0 个工具,通过传输方式未标注接入,客户端适配情况以官方文档为准,没有现成的安装命令;接入前先确认权限范围。

分类

开发工具

传输方式

未说明

认证方式

无需认证

部署方式

公开资料未说明

安装与配置

公开目录没有给出安装命令,需要按仓库 README安装;下面按同类条目的通用流程说明。

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    先确认运行方式

    公开资料没有标注传输方式,先看仓库 README,确认是本地进程还是远程地址。

  2. 2

    获取服务

    公开目录没有给出安装命令,按仓库 README里的步骤安装或获取服务。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 0 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

公开资料仍需确认:安装命令

详细介绍

流形

日本语版README

Manifold 是a。NET基础,用于定义一次操作并通过CLI和MCP表面公开它。

模型很简单:

  • 手写一个操作
  • 让源代码生成器发出描述符和调用者
  • 将这些生成的工件连接到CLI和/或MCP主机中

Manifold 不拥有您的传输、托管模式或特定于产品的运行时。它侧重于操作定义、绑定、元数据和快速调度。

如果你想要一个可运行的起点,存储库包括以下示例主机 samples/.

包含内容

包装用途
Manifold核心契约、描述符、属性和绑定原语
Manifold.CliCLI运行时帮助程序和生成的调用
Manifold.Generators发出描述符和调用者的源代码生成器
Manifold.McpMCP元数据和调用帮助程序

核心概念

手术是唯一的真理来源。

根据该定义, Manifold.Generators 发射:

  • GeneratedOperationRegistry
  • GeneratedCliInvoker
  • GeneratedMcpCatalog
  • GeneratedMcpInvoker

您可以将这些生成的类型组合到自己的应用程序中。

Manifold 支持两种创作风格:

  1. 静态方法操作
  2. 基于类的操作实现 IOperation

安装

大多数消费者不应该安装所有四个软件包。

从核心包和生成器开始,然后只添加实际使用的曲面。

典型组合:

场景包
仅定义操作Manifold, Manifold.Generators
CLI应用程序Manifold, Manifold.Generators, Manifold.Cli
MCP主机Manifold, Manifold.Generators, Manifold.Mcp
CLI和MCPManifold, Manifold.Generators, Manifold.Cli, Manifold.Mcp

CLI主机:


  

  

  

MCP主机:


  

  

  

如果需要两个曲面,请将这两个示例结合起来。

创作操作

静态方法示例

当你想要尽可能简单的定义时,静态方法操作效果很好。

using Manifold;

public static class MathOperations
{
    [Operation("math.add", Summary = "Adds two integers.")]
    [CliCommand("math", "add")]
    [McpTool("math_add")]
    public static int Add(
        [Argument(0, Name = "x")] int x,
        [Argument(1, Name = "y")] int y)
    {
        return x + y;
    }
}

基于类的示例

当您需要专用的请求类型、更丰富的建模或DI管理的构造时,基于类的操作非常有用。

using Manifold;

[Operation("math.add", Summary = "Adds two integers.")]
[CliCommand("math", "add")]
[McpTool("math_add")]
public sealed class AddOperation : IOperation
{
    public ValueTask ExecuteAsync(Request request, OperationContext context)
        => ValueTask.FromResult(request.X + request.Y);

    public sealed class Request
    {
        [Argument(0, Name = "x")]
        [McpName("x")]
        public int X { get; init; }

        [Argument(1, Name = "y")]
        [McpName("y")]
        public int Y { get; init; }
    }
}

对于基于类的操作,在使用生成的调用者之前,在DI中注册操作类型。

using Microsoft.Extensions.DependencyInjection;

ServiceCollection services = new();
services.AddTransient();
ServiceProvider serviceProvider = services.BuildServiceProvider();

静态方法操作不需要DI注册,除非它们显式请求服务。

属性模型

主要属性包括:

属性适用于目的
[Operation("operation.id")]方法、类声明规范操作id。支持 Summary, Description,以及 Hidden.
[CliCommand("group", "verb")]方法,类声明CLI命令路径,例如 math add.
[McpTool("tool_name")]方法,类声明MCP工具名称,例如 math_add.
[CliOnly]方法,类仅在CLI界面上显示操作。
[McpOnly]方法,类仅在MCP表面上显示操作。
[ResultFormatter(typeof(...))]方法,类使用自定义格式化程序覆盖默认CLI文本呈现。
[Argument(position)]参数,请求属性绑定位置CLI参数。支持 Name, Description,以及 Required.
[Option("name")]参数,请求属性绑定一个命名的CLI选项。支持 Description 和 Required.
[Alias(...)]方法、类、参数、请求属性为命令、选项、参数或名称添加别名。
[CliName("...")]方法、类、参数、请求属性仅覆盖面向CLI的名称。
[McpName("...")]方法、类、参数、请求属性仅覆盖面向MCP的名称。
[FromServices]参数从DI而不是用户输入中解析值。

常见模式:

  • 使用 [Operation] 以及至少一个表面属性,例如 [CliCommand] 或 [McpTool]
  • 使用 [Argument] 用于有序的CLI输入和 [Option] 用于命名CLI输入
  • 使用 [CliName] 和 [McpName] 当同一概念字段应在每个曲面上以不同名称出现时
  • 使用 [CliOnly] 或 [McpOnly] 当一个操作不应该在两个表面上共享时
  • 使用 [FromServices] 用于运行时服务,如时钟、存储库或应用程序状态

示例:

  • 仅使用重命名CLI选项 [CliName("person")]
  • 将MCP参数重命名为 [McpName("targetName")]
  • 在生成的曲面中隐藏内部操作 [Operation("internal.sync", Hidden = true)]
  • 仅暴露于一个表面 [CliOnly] 或 [McpOnly]

命令行用法

在运行时,将生成的注册表和调用者组合成 CliApplication.

using Manifold.Cli;
using Manifold.Generated;
using Microsoft.Extensions.DependencyInjection;

ServiceCollection services = new();
services.AddTransient();
ServiceProvider serviceProvider = services.BuildServiceProvider();

CliApplication cli = new(
    GeneratedOperationRegistry.Operations,
    new GeneratedCliInvoker(),
    serviceProvider);

StringWriter output = new();
StringWriter error = new();

int exitCode = await cli.ExecuteAsync(
    ["math", "add", "2", "3"],
    output,
    error,
    CancellationToken.None);

笔记:

  • CliApplication 处理使用文本和命令调度
  • GeneratedCliInvoker 是生成的绑定层
  • 快速同步和异步路径在可用时会自动选择

MCP使用

Manifold 不运送MCP传输主机。相反,它提供:

  • 通过以下方式生成工具元数据 GeneratedMcpCatalog
  • 通过以下方式生成执行 GeneratedMcpInvoker
  • 中的MCP参数解析和辅助API Manifold.Mcp

最小本地调用如下:

using System.Text.Json;
using Manifold.Generated;
using Manifold.Mcp;
using Microsoft.Extensions.DependencyInjection;

ServiceCollection services = new();
services.AddTransient();
ServiceProvider serviceProvider = services.BuildServiceProvider();

JsonElement args = JsonSerializer.Deserialize(
    "{\"x\":2,\"y\":3}");

GeneratedMcpInvoker invoker = new();

if (invoker.TryInvokeFast(
        "math_add",
        args,
        serviceProvider,
        CancellationToken.None,
        out ValueTask invocation))
{
    FastMcpInvocationResult result = await invocation;
    Console.WriteLine(result.Number);
}

元数据发现:

using Manifold.Generated;

foreach (var tool in GeneratedMcpCatalog.Tools)
{
    Console.WriteLine($"{tool.Name}: {tool.Description}");
}

MCP运输和样品

主要的MCP传输方式包括:

  • stdio
  • Streamable HTTP

Manifold 故意与传输无关,因此存储库包含示例主机,而不是将传输主机烘焙到核心包中。

这样运行它们:

dotnet run --project .\samples\Manifold.Samples.McpStdioHost\Manifold.Samples.McpStdioHost.csproj
dotnet run --project .\samples\Manifold.Samples.McpHttpHost\Manifold.Samples.McpHttpHost.csproj

HTTP示例侦听 http://127.0.0.1:38474/mcp.

注意:HTTP示例使用 ModelContextProtocol.AspNetCore,目前是一个预览包。稳定的核心MCP包是 ModelContextProtocol.

CLI示例主机

还有一个最小的可运行CLI主机:

dotnet run --project .\samples\Manifold.Samples.CliHost\Manifold.Samples.CliHost.csproj -- math add 2 3
dotnet run --project .\samples\Manifold.Samples.CliHost\Manifold.Samples.CliHost.csproj -- weather preview --city Tokyo --days 3

依赖注入和服务

有两种服务访问模式。

基于方法的操作

使用 [FromServices] 在一个参数上。

[Operation("clock.now")]
[CliCommand("clock", "now")]
public static DateTimeOffset Now(
    [FromServices] IClock clock)
{
    return clock.UtcNow;
}

基于类的操作

使用构造函数注入,或通过以下方式请求服务 OperationContext.

public sealed class GreetingOperation(IGreetingService greetings)
    : IOperation
{
    public ValueTask ExecuteAsync(Request request, OperationContext context)
        => ValueTask.FromResult(greetings.Format(request.Name));

    public sealed class Request
    {
        [Option("name")]
        public string Name { get; init; } = string.Empty;
    }
}

结果格式

要提供自定义CLI文本输出,同时保持JSON或MCP的结构化结果,请实现 IResultFormatter.

using Manifold;

public sealed class WeatherFormatter : IResultFormatter
{
    public string? FormatText(WeatherResult result, OperationContext context)
        => $"{result.City}:{result.TemperatureC}";
}

然后附上:

[ResultFormatter(typeof(WeatherFormatter))]

生成的类型

发电机在以下情况下发出这些公共入口点 Manifold.Generated:

  • GeneratedOperationRegistry
  • GeneratedCliInvoker
  • GeneratedMcpCatalog
  • GeneratedMcpInvoker

这些是消费者的标准集成界面。

演出

Manifold 包括专用的BenchmarkDotNet套件 benchmarks/.

基准说明和比较表见 benchmarks/README.md.

比较集:

  • 命令行界面

- Manifold.Cli - ConsoleAppFramework - System.CommandLine

  • 主控程序

- Manifold.Mcp - 官方的 ModelContextProtocol - McpToolkit - mcpdotnet

当前快照:

CLI:

场景歧管控制台AppFramework系统。命令行
阵地指挥22.61 ns / 0 B26.57 ns / 0 B1730.82 ns / 4688 B
选项繁重的命令28.89 ns / 0 B24.76 ns / 0 B2110.84 ns / 5632 B

MCP(往返形状):

场景流形模型上下文协议McpToolkitMcpDotNet
tools/list 回应756.3 ns / 0 B754.6 ns / 0 B635.4 ns / 0 B816.2 ns / 0 B
tools/call 回应47.16 ns / 0 B68.56 ns / 0 B146.34 ns / 96 B93.20 ns / 256 B

笔记:

  • CLI编号测量解析器+分派热路径
  • 上面的MCP数字反映了内存响应结构,而不是传输基准
  • 生的 ModelContextProtocol 调用微基准测试即将到来 ZeroMeasurement往返形状的桌子是更有意义的比较

有关方法和完整报告,请参阅 benchmarks/README.md.

构建

从存储库根目录:

./build/restore.ps1
./build/build.ps1 -NoRestore
./build/test.ps1 -NoBuild
./build/quality.ps1
./build/pack.ps1

./build/pack.ps1 写 .nupkg 和 .snupkg 文件到 .artifacts/packages/.

存储库状态

  • Windows第一脚本和CI
  • 麻省理工学院许可
  • CI验证构建、测试、格式化、架构检查和包创建

OSS客房服务

仓库布局

src/
  Manifold
  Manifold.Cli
  Manifold.Generators
  Manifold.Mcp
tests/
  Manifold.Tests
  Manifold.Cli.Tests
  Manifold.Generators.Tests
  Manifold.Mcp.Tests
benchmarks/
  Manifold.Benchmarks
  Manifold.Mcp.Benchmarks
samples/
  Manifold.Samples.Operations
  Manifold.Samples.CliHost
  Manifold.Samples.McpStdioHost
  Manifold.Samples.McpHttpHost

工具与能力

工具数量

0

资源数量

0

提示词数量

0

能力标签

操作定义框架C#本地部署CLI工具MCP工具.NET开发源代码生成

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

让助手直接读代码

把仓库、提交记录和 issue 交给模型检索,补全和重构时不用来回复制文件。

在对话里跑命令

触发构建、测试和脚本,执行结果直接回到上下文,省去切终端。

接进开发流程

把 PR、CI 状态和代码审查接进助手,减少在几个工具之间跳。

选择建议

值得选的地方

  • 只提供 0 个工具,职责集中,接入后不容易误操作。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

  • 公开资料没有可直接复制的安装命令,第一次接入要自己找入口。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在开发工具场景里让模型直接调用外部能力的人。
  • 愿意照着官方文档一步步配环境的人。

不太适合

  • 希望一条命令就装好、不想看文档的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
Manifold (Garume)

MCP World · 本页

0未说明未标注1 个2026-05-17
Git 838e2ec1

MCP World

12stdio有2 个2026-05-17
Markitdown MCP 2c653a5f

MCP World

1stdio有1 个2026-05-17
Context7 MCP C671e75a

MCP World

0stdio有1 个2026-05-17
Context7 831acf40

MCP World

0stdio有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

Manifold (Garume) 怎么安装?

公开目录没有给出可以直接复制的安装命令,需要按仓库 README里的步骤安装;装好后写进客户端的 MCP 配置再重启。

Manifold (Garume) 怎么在 Claude Desktop、Cursor 里配置?

它是传输方式未标注,客户端配置里要写启动命令和参数,运行环境是 未标注;保存后完全退出客户端再打开,配置才会生效。

Manifold (Garume) 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

Manifold (Garume) 需要 API Key 吗?

公开资料标注为无需认证,装好就能连;如果实际调用时报鉴权错误,按官方文档补上凭据。

Manifold (Garume) 支持哪些客户端?

公开资料没有标注具体客户端;能配置本地 MCP 命令的客户端都能接,配置方式参照官方文档。

来源信息

继续浏览同类 MCP