Token导航 LogoToken导航TokenDH.com
Open API MCP Net logo
AI代理未说明官方级别未说明来源级核验

Open API MCP Net

MCP Server

一个将OpenAPI规范自动转换为Model Context Protocol (MCP)工具的.NET库,使AI助手和LLM能够与任何具有OpenAPI规范的REST API交互。

工具数

0

提示词数

0

GitHub Stars

3

资源数

0
C#AI助手集成AI代理

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

kerryjiang

提供方

kerryjiang

最后核验

2026/5/17 20:21

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

OpenApiMcpNet

![build](https://github.com/kerryjiang/OpenApiMcpNet/actions/workflows/build.yml) ](https://www.nuget.org/packages/OpenApiMcpNet) ](https://www.nuget.org/packages/OpenApiMcpNet)

A.NET库,自动生成 模型上下文协议(MCP) OpenAPI规范中的工具。这允许AI助手和LLM与任何具有OpenAPI(Swagger)规范的REST API交互。

特性

  • 自动生成刀具:自动将OpenAPI操作转换为MCP兼容工具
  • 完全支持OpenAPI:处理路径、查询、标头和cookie参数,以及请求正文
  • 身份验证支持:内置对OAuth 1.0a和OAuth 2.0的支持(客户端凭据流)
  • 可扩展架构:可以注入自定义身份验证处理程序和web API调用程序
  • 流利的API:通过简单、可链接的配置 IMcpServerBuilder 扩展

安装

dotnet add package OpenApiMcpNet

快速开始

基本用法

using Microsoft.Extensions.DependencyInjection;
using ModelContextProtocol.Server;
using OpenApiMcpNet;

var builder = Host.CreateApplicationBuilder(args);

// Add MCP server with tools from OpenAPI spec
builder.Services.AddMcpServer()
    .WithToolsFromOpenApi(openApiSpecJson, "https://api.example.com");

var host = builder.Build();
await host.RunAsync();

从文件或URL加载OpenAPI规范

// From a string
builder.Services.AddMcpServer()
    .WithToolsFromOpenApi(openApiSpecJsonOrYaml, "https://api.example.com");

// From a stream
using var stream = File.OpenRead("openapi.yaml");
builder.Services.AddMcpServer()
    .WithToolsFromOpenApi(stream, "https://api.example.com");

// From an OpenApiDocument
var reader = new OpenApiStringReader();
var document = reader.Read(openApiSpec, out var diagnostic);
builder.Services.AddMcpServer()
    .WithToolsFromOpenApi(document, "https://api.example.com");

认证

OAuth 2.0(客户端凭据)

var authHandler = new OAuth2AuthenticationHandler(
    httpClient,
    tokenEndpoint: "https://auth.example.com/oauth/token",
    consumerKey: "your-client-id",
    consumerSecret: "your-client-secret",
    scope: "read write" // optional
);

// Authenticate before making requests
await authHandler.AuthenticateAsync();

// Register with DI
builder.Services.AddSingleton(authHandler);

OAuth 1.0a

var authHandler = new OAuth1AuthenticationHandler(
    httpClient,
    requestTokenUrl: "https://api.example.com/oauth/request_token",
    accessTokenUrl: "https://api.example.com/oauth/access_token",
    consumerKey: "your-consumer-key",
    consumerSecret: "your-consumer-secret",
    signatureMethod: "HMAC-SHA1"
);

await authHandler.AuthenticateAsync();

builder.Services.AddSingleton(authHandler);

自定义身份验证

实施 IAuthenticationHandlerIRequestAuthenticationHandler 对于自定义身份验证:

public class ApiKeyAuthenticationHandler : IAuthenticationHandler
{
    private readonly string _apiKey;

    public bool IsAuthenticated => true;

    public ApiKeyAuthenticationHandler(string apiKey)
    {
        _apiKey = apiKey;
    }

    public Task AuthenticateAsync() => Task.CompletedTask;

    public void AuthenticateRequest(
        HttpRequestMessage request,
        IEnumerable> queryParameters,
        IEnumerable> bodyParameters)
    {
        request.Headers.Add("X-API-Key", _apiKey);
    }
}

运作原理

  1. 解析OpenAPI规范:库读取您的OpenAPI规范(JSON或YAML)
  2. 生成工具:规范中的每个操作都成为MCP工具,具有:

- 名字:源自 operationId 或由方法+路径生成 - 描述:来自 summarydescription 在规范中 - 输入模式:根据参数和请求正文模式自动生成

  1. 处理请求:当AI调用工具时,库:

- 将参数映射到正确的位置(路径、查询、标头、正文) - 应用身份验证 - 发出HTTP请求 - 以结构化JSON返回响应

API 参考

扩展方法

WithToolsFromOpenApi(string openApiSpec, string baseUrl)

从OpenAPI规范字符串中注册MCP工具。

WithToolsFromOpenApi(Stream openApiSpecStream, string baseUrl)

从OpenAPI规范流中注册MCP工具。

WithToolsFromOpenApi(OpenApiDocument openApiDocument, string baseUrl)

从解析的OpenAPI文档中注册MCP工具。

接口

IAuthenticationHandler

在发出请求之前需要进行身份验证的身份验证处理程序的接口。

public interface IAuthenticationHandler
{
    bool IsAuthenticated { get; }
    Task AuthenticateAsync();
    void AuthenticateRequest(HttpRequestMessage request, ...);
}

IWebApiCaller

用于向web API发出HTTP请求的接口。

public interface IWebApiCaller
{
    Task CallApiAsync(WebApiMetadata apiMetadata, IDictionary parameters, CancellationToken cancellationToken);
}

示例

给定这个OpenAPI操作:

paths:
  /users/{id}:
    get:
      operationId: GetUser
      summary: Gets a user by ID
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        200:
          description: The user

库生成一个MCP工具:

  • 名字: GetUser
  • 描述: Gets a user by ID
  • 输入模式: { "id": { "type": "integer" } }

当被呼叫时 { "id": 123 },它使a GET 请求 /users/123.

需求

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

贡献

欢迎投稿!请随时提交拉取请求。

目录标签

目录标签

C#AI助手集成AI代理OpenAPI转换本地部署MCP工具生成RESTAPI交互.NET库

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

oauth

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明oauth部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

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

仍需确认:installCommand

来源信息

继续浏览同类 MCP