Token导航 LogoToken导航

MCP Server · AI代理

U Web MCP

uWebMCP是一个为Umbraco网站设计的AI代理集成工具,通过实现模型上下文协议(MCP),使AI代理能够发现网站提供的工具和资源,与表单交互,并采用品牌声音。

未说明官方级别未说明来源级核验工具 2
AI代理集成C#ClaudeVS Code

快速开始

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

工具数量

2

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

1

仓库热度

收录来源

1 个

MCP World

选型结论

U Web MCP 属于AI代理类 MCP Server,公开资料标注 2 个工具,通过传输方式未标注接入,适配 Claude、VS Code,没有现成的安装命令;接入前要先准备 会话凭据。

分类

AI代理

传输方式

未说明

认证方式

会话凭据

部署方式

公开资料未说明

安装与配置

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

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

上手步骤

  1. 1

    先确认运行方式

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

  2. 2

    获取服务

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

  3. 3

    写入客户端配置

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

  4. 4

    验证是否可用

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

接入前确认

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

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

详细介绍

uWebMCP

创建您的Umbraco网站 代理本地.uWebMCP实现了 模型上下文协议(MCP) 对于Umbraco 17,使AI代理能够发现您的网站提供的内容,与表单交互,并采用您的品牌声音——所有这些都是通过标准化协议实现的。

问题

Umbraco网站对AI代理是不可见的。代理(Chrome EPP、Claude、Gemini)没有标准化的方法来发现网站提供的操作或以编程方式与表单和内容进行交互。

解决方案

uWebMCP将您的Umbraco网站转换为 代理内容平台 通过:

  • 提供发现清单 在 /.well-known/mcp-manifest.json 这样代理就知道你的网站提供了什么工具和资源
  • 将内容类型分为工具和资源 --可操作类型(联系表单)成为可调用的工具;信息类型(博客、产品)成为结构化资源
  • 支持具有真实执行逻辑的自定义工具 通过 IWebMcpTool --定义“购买产品”工具、“预约”工具或任何其他具有实际行为的工具
  • 将Umbraco Forms转换为代理可调用工具 内置验证(幻觉防护)和蜜罐垃圾邮件防护
  • 定义品牌声音(“灵魂”) 代理在代表您的网站进行交互时采用的方法
  • 提供分析 哪些AI代理正在发现和调用您网站的工具

建筑

uWebMcp.Core          Razor Class Library — persistence, services, caching, middleware, API
uWebMcp.Forms         Optional — maps Umbraco.Forms into MCP tool definitions
uWebMcp.Backoffice    Management API + Lit/TypeScript "Agent Intelligence" dashboard

运作原理

AI Agent                         Umbraco Site
   │                                  │
   ├── GET /.well-known/mcp-manifest.json ──► McpManifestMiddleware
   │   ◄── { tools, resources, prompts }      reads from ToolCacheService
   │                                            │
   ├── GET /umbraco/api/webmcp/tools ──────► WebMcpToolsController
   │   ◄── [{ name, inputSchema, ... }]        actionable tools only
   │                                            │
   ├── GET /umbraco/api/webmcp/resources ──► WebMcpToolsController
   │   ◄── [{ uri, name, description }]        informational resources
   │                                            │
   ├── POST /umbraco/api/webmcp/tools/          │
   │        {alias}/execute ───────────────► Validates CSRF + honeypot
   │   ◄── { success, message, data }           delegates to IWebMcpTool
   │                                            │
   └── GET /umbraco/api/webmcp/prompts/get ► SoulService
       ◄── { persona, tone, rules }             brand voice configuration

快速开始

先决条件

  • .NET 10 SDK
  • Node.js 20+(用于后台仪表板开发)

运行演示网站

git clone 
cd uWebMCP

# Build and run
dotnet build
dotnet run --project demo/uWebMcp.DemoSite

演示站点使用无人值守安装,不需要向导。导航到 https://localhost:44391 并使用默认管理员凭据登录(admin@example.com / 1234567890).初学者工具包提供博客、产品、联系人和其他内容类型。使用演示配置, contact 成为一种工具,同时 blogPost 和 product 成为资源。习俗 buy-product 该工具演示 IWebMcpTool 可扩展性。

验证它是否有效

# Discovery manifest (includes tools, resources, and prompts)
curl https://localhost:44391/.well-known/mcp-manifest.json

# List actionable tools only
curl https://localhost:44391/umbraco/api/webmcp/tools

# List informational resources
curl https://localhost:44391/umbraco/api/webmcp/resources

# Check Link header on any page
curl -I https://localhost:44391/
# → Link: ; rel="mcp-tool"

一 api-tests.http 该文件包含在演示站点中,用于使用VS Code REST客户端或Rider HTTP客户端测试所有端点。

清单示例

这是什么 /.well-known/mcp-manifest.json return——AI代理消耗的完整发现负载:

Click to expand full manifest

{
  "SchemaVersion": "1.0",
  "SiteName": "localhost",
  "SiteUrl": "https://localhost:44391",
  "Tools": [
    {
      "Name": "submit-contact",
      "Description": "Submit data for Contact",
      "Method": "POST",
      "InputSchema": {
        "type": "object",
        "properties": {
          "pageTitle": {
            "type": "string",
            "description": "The title of the page, this is also the first text in a google search result. The ideal length is between 40 and 60 characters"
          },
          "contactFormHeader": {
            "type": "string",
            "description": "Contact Form Header"
          },
          "contactIntro": {
            "type": "string",
            "description": "Contact Intro"
          },
          "mapHeader": {
            "type": "string",
            "description": "Map Header"
          },
          "mapCoordinates": {
            "type": "string",
            "description": "Map Coordinates"
          }
        },
        "required": ["pageTitle", "contactFormHeader", "contactIntro"]
      },
      "AutoSubmit": true,
      "ExecutionUrl": "/umbraco/api/webmcp/tools/contact/execute"
    },
    {
      "Name": "buy-product",
      "Description": "Add a product to the shopping cart",
      "Method": "POST",
      "InputSchema": {
        "type": "object",
        "properties": {
          "productName": {
            "type": "string",
            "description": "Product name"
          },
          "quantity": {
            "type": "integer",
            "description": "Quantity",
            "minimum": 1
          }
        },
        "required": ["productName", "quantity"]
      },
      "AutoSubmit": false,
      "ExecutionUrl": "/umbraco/api/webmcp/tools/buy-product/execute"
    }
  ],
  "Resources": [
    {
      "Uri": "content://blogpost",
      "Name": "Blogpost",
      "Description": "Excerpt",
      "MimeType": "application/json"
    },
    {
      "Uri": "content://product",
      "Name": "Product Name",
      "Description": "Description",
      "MimeType": "application/json"
    }
  ],
  "Prompts": [
    {
      "Name": "brand-voice",
      "Persona": null,
      "Tone": null,
      "Rules": [],
      "RawContent": "# Brand Voice\n\nYou are the website assistant for a creative agency store built with Umbraco.\n\n## Persona\n- Helpful, knowledgeable about our products and blog content\n- Professional yet approachable\n\n## Tone\n- Warm and concise\n- Use clear, direct language\n\n## Guidelines\n- Always provide accurate product information including pricing\n- For detailed inquiries, guide users to the contact page\n- When discussing blog posts, summarize key points and link to the full article\n- For product purchases, confirm the item and quantity before proceeding\n"
    }
  ]
}

工具定义可操作的端点(表单、自定义操作),资源公开结构化内容(博客、产品),提示传达您的品牌声音,以便代理以您的语气说话。

配置

添加到您的 appsettings.json:

{
  "Umbraco": {
    "WebMcp": {
      "Enabled": true,
      "EnrichDeliveryApi": true,
      "TargetContentTypes": ["blogPost", "product", "contact"],
      "ActionableContentTypes": ["contact"],
      "ResourceDefaults": {
        "NameAlias": "title",
        "DescriptionAlias": "description"
      },
      "ResourceMappings": {
        "product": { "NameAlias": "productName", "DescriptionAlias": "description" },
        "blogPost": { "NameAlias": "title", "DescriptionAlias": "excerpt" }
      },
      "Analytics": {
        "RetentionDays": 90
      },
      "Security": {
        "RateLimitPerMinute": 60,
        "RequireCsrfForTools": true
      },
      "Soul": {
        "Persona": "You are a helpful university advisor",
        "Tone": "Professional, warm, concise",
        "Rules": [
          "Never discuss competitors",
          "Always suggest booking a campus tour"
        ]
      }
    }
  }
}

工具与资源

  • TargetContentTypes --要公开哪些内容类型(空=全部)
  • ActionableContentTypes --哪些成为工具(空=都是工具,向后兼容)
  • 一切都在 TargetContentTypes 但不在 ActionableContentTypes 成为资源

资源 是代理可以引用的只读结构化数据(博客、产品、文章)。 工具 是代理可以调用的可操作端点(联系表单、提交)。

资源字段映射

资源解决其 Name 和 Description 从内容类型属性:

  • ResourceDefaults --所有资源类型的回退映射(NameAlias: "title", DescriptionAlias: "description")
  • ResourceMappings --按内容类型覆盖(例如,产品使用 productName 而不是 title)

自定义工具(IWebMcpTool)

通过实现定义具有真实执行逻辑的工具 IWebMcpTool:

public class BuyProductTool : IWebMcpTool
{
    public string ToolName => "buy-product";

    public McpToolDefinition GetDefinition() => new()
    {
        Name = "buy-product",
        Description = "Add a product to the shopping cart",
        Method = "POST",
        AutoSubmit = false,
        ExecutionUrl = "/umbraco/api/webmcp/tools/buy-product/execute",
        InputSchema = new JsonObject
        {
            ["type"] = "object",
            ["properties"] = new JsonObject
            {
                ["productName"] = new JsonObject { ["type"] = "string" },
                ["quantity"] = new JsonObject { ["type"] = "integer", ["minimum"] = 1 }
            },
            ["required"] = new JsonArray { "productName", "quantity" }
        }
    };

    public Task ExecuteAsync(JsonObject payload, HttpContext context)
    {
        var productName = payload["productName"]?.GetValue() ?? "Unknown";
        var quantity = payload["quantity"]?.GetValue() ?? 1;
        return Task.FromResult(new WebMcpToolResult
        {
            Success = true,
            Message = $"Added {quantity}x '{productName}' to cart",
            Data = new { productName, quantity, cartUpdated = true }
        });
    }
}

注册于 Program.cs (或任何DI设置):

builder.Services.AddScoped();

自定义工具会自动包含在清单、工具列表和缓存中。通过执行时 /umbraco/api/webmcp/tools/{toolName}/execute,控制器委托匹配 IWebMcpTool.ExecuteAsync().

整合

剃刀视图(单片)

两者都渲染 `` 阻碍。清单标记帮助程序包括工具、资源和提示。

重要提示: 在您的 _ViewImports.cshtml:

@addTagHelper *, uWebMcp.Core

交付API(无头)

当 EnrichDeliveryApi 启用(默认),uWebMCP通过 _mcp 针对目标内容类型的块:

{
  "name": "My Blog Post",
  "contentType": "blogPost",
  "properties": { ... },
  "_mcp": {
    "isEnabled": true,
    "discoveryUrl": "/umbraco/api/webmcp/tools/blogPost",
    "tools": [
      { "name": "blog-post", "method": "POST" }
    ]
  }
}

这使得无头前端和AI代理可以直接从内容响应中发现MCP功能。

品牌声音

以三种方式配置您网站的“灵魂”(按优先级顺序选中):

  1. 后台控制面板 --设置>代理智能>品牌语音编辑器
  2. soul.md文件 --将标记文件放在 wwwroot/soul.md
  3. 应用程序参数 --The Umbraco:WebMcp:Soul 部分

翁布拉科。表单集成

安装 uWebMcp.Forms 包装旁边 Umbraco.Forms 将表单自动映射到MCP工具中。每个表单都成为一个可调用的工具,具有:

  • 从表单字段和验证规则派生的JSON模式
  • 蜜罐字段注入用于垃圾邮件防护
  • 通过以下方式进行所需的现场执行 "required" 在模式中

后台控制面板

这 特工情报 仪表板出现在Umbraco设置部分,显示:

  • KPI卡 --代理发现、工具调用、表单提交(30天)
  • 模型份额 --哪些AI代理正在与您的网站交互的分布
  • 工具健康状况 --启用/禁用带有视觉状态指示器的工具
  • 资源 --作为MCP资源公开的信息内容类型列表
  • 灵魂编辑 --直接从后台配置品牌语音

构建仪表板客户端

cd src/uWebMcp.Backoffice/Client
npm install
npm run build    # Outputs to wwwroot/App_Plugins/uWebMcp/
npm run watch    # Rebuild on file changes

安全

  • 速率限制 --通过应用每IP固定窗口速率限制器 [EnableRateLimiting] 在所有 /umbraco/api/webmcp/ 路由(默认值:60请求/分钟)
  • CSRF保护 --双重提交cookie模式(webmcp-csrf 饼干+ X-WebMCP-CSRF header)在POST工具执行时
  • 蜜罐田 --隐藏 _website 字段默默地拒绝机器人提交(返回200以避免检测)
  • 缓存失效 --工具和资源模式在内容发布事件时自动刷新

API 参考

公共端点(无身份验证)

方法路线描述
得到/.well-known/mcp-manifest.json完整的MCP清单(工具+资源+提示)
得到/umbraco/api/webmcp/tools列出所有工具定义
得到/umbraco/api/webmcp/tools/{alias}单一工具JSON模式
职位/umbraco/api/webmcp/tools/{alias}/execute执行工具
得到/umbraco/api/webmcp/resources列出所有资源定义
得到/umbraco/api/webmcp/prompts/get品牌语音提示

管理API(需要后台授权)

方法路线描述
得到/umbraco/management/api/v1/webmcp/stats/overview30天KPI总结
得到/umbraco/management/api/v1/webmcp/stats/agents代理商分布
得到/umbraco/management/api/v1/webmcp/stats/timeline每日时间序列
得到/umbraco/management/api/v1/webmcp/tools工具注册表
PUT/umbraco/management/api/v1/webmcp/tools/{id}/toggle启用/禁用工具
得到/umbraco/management/api/v1/webmcp/resources资源列表
得到/umbraco/management/api/v1/webmcp/soul获得品牌声音
PUT/umbraco/management/api/v1/webmcp/soul更新品牌声音

发展

# Build
dotnet build

# Test (58 tests across 10 test classes)
dotnet test

# Run specific test class
dotnet test --filter "ToolSchemaBuilder"

# Run demo site
dotnet run --project demo/uWebMcp.DemoSite

技术栈

  • 运行时间: .NET 10,Umbraco 17 LTS
  • 数据库: SQL Server/SQLite(通过Umbraco的NPoco ORM) IScopeProvider)
  • 缓存: IDistributedCache (内存、Redis或SQL Server中)
  • 前端: @umbraco cms/后台(Lit)+TypeScript+Vite
  • 测试: 单元 + Moq

许可证

麻省理工学院

工具与能力

工具数量

2

资源数量

0

提示词数量

0

能力标签

AI代理集成C#本地部署Umbraco扩展模型上下文协议表单交互品牌声音

支持客户端

ClaudeVS Code

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

典型使用场景

多步任务编排

把拆解、检索、执行串成一条链,模型按步骤调用工具。

长期上下文

把会话、笔记和知识放到外部存储,换个会话还能接着做。

接自有流程

把内部系统和模型连起来,让助手调用已有的工作流。

选择建议

值得选的地方

  • 只提供 2 个工具,职责集中,接入后不容易误操作。
  • 已经适配 Claude、VS Code,换客户端不用重新研究配置。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

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

更适合

  • 需要在AI代理场景里让模型直接调用外部能力的人。
  • 已经在用 Claude 的用户,接入路径最短。
  • 愿意照着官方文档一步步配环境的人。

不太适合

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

同类对比

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

MCP World · 本页

2未说明未标注1 个2026-05-17
Everything Claude Code

MCP World

0stdio有1 个2026-05-17
Filesystem 560c4363

MCP World

13未说明未标注2 个2026-05-17
Time 7365cb6d

MCP.so

2SSE有2 个2026-05-17
Server Everything (everything)

MCP World

11stdio有1 个2026-05-17

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

常见问题

5 条

U Web MCP 怎么安装?

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

U Web MCP 怎么在 Claude Desktop、Cursor 里配置?

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

U Web MCP 收费吗?

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

U Web MCP 需要 API Key 吗?

公开资料标注的认证方式是会话凭据,也就是要先拿到凭据才能连上;凭据只填在自己本地的配置里,不要写进公开仓库。

U Web MCP 支持哪些客户端?

公开资料标注支持 Claude、VS Code;其他客户端只要能配置 MCP Server,也能用同样的命令或地址接入。

来源信息

继续浏览同类 MCP