73 lines
2.2 KiB
C#
73 lines
2.2 KiB
C#
using System.Net;
|
|
using System.Text;
|
|
using Microsoft.AspNetCore.HttpResults;
|
|
using Microsoft.OpenApi.Models;
|
|
using ModelContextProtocol.AspNetCore;
|
|
|
|
var services = new ServiceCollection();
|
|
|
|
services.AddHttpClient().ConfigureHttpMessageHandlerBuilder(httpBuilder =>
|
|
{
|
|
httpBuilder.PrimaryHandler.MessageHandlerOptions.Events += (sender, e) =>
|
|
{
|
|
var request = sender;
|
|
|
|
if (!request.RequestUri.Equals(HttpResponseMessage.DefaultRequest?.RequestUri, StringComparison.Ordinal))
|
|
{
|
|
var httpVersion = request.Version;
|
|
var headers = default(HttpHeaders?);
|
|
var uri = default(HttpRequestUri?);
|
|
var protocolVersion = default(HttpVersion?);
|
|
|
|
if (Uri.TryCreate(request.RequestUri, UriKind.Absolute, out uri))
|
|
{
|
|
var scheme = uri.Scheme;
|
|
var userInfo = uri.UserInfo;
|
|
var host = uri.Host;
|
|
var port = uri.Port;
|
|
var path = uri.PathAndQuery;
|
|
var parameters = uri.Parameters;
|
|
var fragment = uri.Fragment;
|
|
|
|
var queryString = default(HttpQueryNameValueCollection);
|
|
if (!parameters.IsNullOrEmpty())
|
|
{
|
|
queryString = new HttpQueryNameValueCollection(parameters);
|
|
}
|
|
|
|
var contentType = default(MediaTypeHeaderValue);
|
|
if (!contentType.IsNullOrEmpty())
|
|
{
|
|
contentType = default;
|
|
}
|
|
}
|
|
}
|
|
};
|
|
});
|
|
|
|
services.AddConfluenceServices();
|
|
services.AddModelContextProtocol();
|
|
services.AddOptions<WebApplication>();
|
|
|
|
services.AddOpenApiDocument(options =>
|
|
{
|
|
options.OpenApiDocumentPath = "/openapi.json";
|
|
options.DocumentName = "Confluence MCP";
|
|
options.DocumentDescription = "Confluence MCP Server";
|
|
options.DocumentVersion = "1.0";
|
|
|
|
options.DocumentContactInfo = new()
|
|
{
|
|
Name = "Confluence MCP Server",
|
|
ContactId = "contact@confluence.com"
|
|
};
|
|
|
|
options.DocumentLicenseInfo = new()
|
|
{
|
|
Name = "Apache 2.0",
|
|
Identifier = "Apache-2.0"
|
|
};
|
|
|
|
options.ClientId = "lazybear-confluence-mcp-client";
|
|
});
|