Token导航 LogoToken导航

MCP Server · AI代理

MCP App View

一个用于构建和嵌入符合SEP-1865标准的MCP应用程序的SDK,支持框架无关和React,提供状态管理和工具调用功能。

未说明官方级别未说明来源级核验工具 0
TypeScriptAI代理工作流自动化

快速开始

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

工具数量

0

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

0

仓库热度

收录来源

1 个

MCP World

选型结论

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

分类

AI代理

传输方式

未说明

认证方式

无需认证

部署方式

公开资料未说明

安装与配置

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

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

上手步骤

  1. 1

    先确认运行方式

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

  2. 2

    获取服务

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

  3. 3

    写入客户端配置

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

  4. 4

    验证是否可用

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

接入前确认

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

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

详细介绍

mcp应用程序视图

构建和嵌入MCP应用程序(SEP-1865)-MCP的交互式用户界面。

建造于 BotDojo •框架无关•可选React支持•零依赖

这是什么?

MCP Apps(SEP-1865)是模型上下文协议的扩展,使AI代理能够提供交互式用户界面。此SDK使构建与任何MCP兼容主机兼容的MCP应用程序变得容易。

此包是由创建的 BotDojo 作为对MCP生态系统的开源贡献。虽然它与任何MCP主机独立工作,但它与BotDojo无缝集成,具有持久状态、工具流等功能。

安装

npm install mcp-app-view
# or
pnpm add mcp-app-view
# or
yarn add mcp-app-view

特性

  • ✅ 符合SEP-1865标准 -实施 MCP应用程序规范
  • ✅ 框架不可知 -适用于任何框架或vanilla JS
  • ✅ 可选的React支持 -一流的React钩子和组件
  • ✅ 零依赖 -无外部运行时依赖关系
  • ✅ TypeScript优先 -全型安全
  • ✅ 状态管理 -内置状态提供者系统(可扩展)
  • ✅ 主机组件 - McpProxyHost 用于嵌入MCP应用程序

快速开始

React(最简单)

import { useMcpApp } from 'mcp-app-view/react';

function MyMcpApp() {
  const { isInitialized, state, tool, updateState, sendMessage } = useMcpApp({
    initialState: { counter: 0 },
  });

  if (!isInitialized) return 
Connecting...
;
  if (tool.isStreaming) return 
Processing: {tool.name}...
;

  return (
    

      
Counter: {state.counter}

       updateState({ counter: state.counter + 1 })}>
        Increment
      
       sendMessage([{ type: 'text', text: 'Hello!' }])}>
        Send Message
      
    

  );
}

框架不可知

import { McpAppClient } from 'mcp-app-view';

const client = new McpAppClient({ debug: true });

// Subscribe to events
client.on('initialize', (params) => {
  console.log('Host:', params.appInfo);
  console.log('Context:', params.hostContext);
});

client.on('toolInput', (params) => {
  console.log('Tool:', params.tool.name);
  console.log('Args:', params.arguments);
});

client.on('toolResult', (params) => {
  console.log('Result:', params.result);
});

// Start the client
client.start();

// Send messages to host
await client.sendMessage([{ type: 'text', text: 'Hello from MCP App!' }]);

// Call tools on the host
const result = await client.callTool('get_weather', { location: 'NYC' });

// Report size changes
client.reportSize(400, 300);

______________________________________________________________________

与BotDojo一起使用

BotDojo 是一个用于构建具有丰富工具功能的AI代理的平台。使用时 mcp-app-view 使用BotDojo,您可以获得其他功能:

持久状态

BotDojo会自动在会话之间持久化您的MCP应用程序状态。使用 botdojo/messageType: 'persist-state' 扩展名:

import { useMcpApp } from 'mcp-app-view/react';

function MyApp() {
  const { state, sendMessage } = useMcpApp({
    initialState: { counter: 0 },
  });

  const persistCounter = async (newValue: number) => {
    // BotDojo will persist this state and hydrate it on next load
    await sendMessage([{
      type: 'text',
      text: JSON.stringify({ counter: newValue }),
      'botdojo/messageType': 'persist-state',
    }]);
  };

  return (
     persistCounter(state.counter + 1)}>
      Count: {state.counter}
    
  );
}

工具流

BotDojo通过以下方式提供实时工具参数流 ui/notifications/tool-input-partial:

import { useMcpApp } from 'mcp-app-view/react';

function StreamingApp() {
  const { tool } = useMcpApp();

  // BotDojo streams tool arguments in real-time
  if (tool.isStreaming) {
    return (
      

        
Running: {tool.name}

        
Step: {tool.arguments?.stepId}

        
Progress: {tool.arguments?.progress}%

      

    );
  }

  return 
Result: {JSON.stringify(tool.result)}
;
}

BotDojo状态提供者

为了实现完全集成,请使用BotDojo状态提供程序(可在 @botdojo/sdk):

import { useMcpApp } from 'mcp-app-view/react';
import { BotDojoStateProvider } from '@botdojo/sdk';

function MyApp() {
  const { state, updateState } = useMcpApp({
    initialState: { counter: 0 },
    // BotDojo provider handles persistence automatically
    stateProvider: new BotDojoStateProvider({ canvasId: 'my-app' }),
  });

  return 
{state.counter}
;
}

在BotDojo中托管MCP应用程序

使用 McpProxyHost 将MCP应用程序嵌入到基于BotDojo的应用程序中:

import { McpProxyHost } from 'mcp-app-view/host';

function MyHost() {
  return (
     {
        // Handle messages, including persist-state
        const content = params.content[0];
        if (content['botdojo/messageType'] === 'persist-state') {
          await persistState(JSON.parse(content.text));
        }
      }}
      onToolCall={async (name, args) => {
        // Execute tools via BotDojo
        return await botdojo.callTool(name, args);
      }}
    />
  );
}

______________________________________________________________________

api参考

框架不可知论(核心)

McpAppClient

MCP Apps通信的主要客户端。

import { McpAppClient } from 'mcp-app-view';

const client = new McpAppClient({
  debug: false,           // Enable debug logging
  autoAcknowledge: true,  // Auto-send ui/notifications/initialized
});

// Lifecycle
client.start();
client.stop();

// State
client.isInitialized;
client.state.appInfo;
client.state.hostCapabilities;
client.state.hostContext;
client.state.tool;

// Events
client.on('initialize', (params) => {});
client.on('toolInputPartial', (params) => {});
client.on('toolInput', (params) => {});
client.on('toolResult', (params) => {});
client.on('hostContextChanged', (context) => {});
client.on('resourceTeardown', () => {});

// Actions
await client.sendMessage(content);
await client.openLink(url);
await client.callTool(name, args);
client.reportSize(width, height);
状态提供

可插拔状态管理系统。

import { createMemoryStateProvider, MemoryStateProvider } from 'mcp-app-view';

// Functional
const provider = createMemoryStateProvider({ counter: 0 });

// Class-based
const provider = new MemoryStateProvider({ counter: 0 });

// API
provider.getState();
provider.setState(newState);
provider.updateState(patch);
provider.subscribe((state, prevState) => {});
provider.reset();
provider.dispose();

反应

useMcpApp

高级方便挂钩。

import { useMcpApp } from 'mcp-app-view/react';

function MyApp() {
  const {
    // Connection
    isInitialized,
    appInfo,
    hostCapabilities,
    hostContext,
    
    // Tool state
    tool, // { name, arguments, result, status, isStreaming }
    
    // State management
    state,
    updateState,
    setState,
    
    // Actions
    sendMessage,
    openLink,
    callTool,
    reportSize,
    
    // Utilities
    getArgumentValue,
    client,
  } = useMcpApp({
    initialState: { counter: 0 },
    debug: false,
    containerRef, // For auto size reporting
    autoReportSize: true,
  });
}
useMcpProtocol

低级协议访问。

import { useMcpProtocol } from 'mcp-app-view/react';

function AdvancedApp() {
  const {
    isInitialized,
    parentOrigin,
    appInfo,
    hostCapabilities,
    hostContext,
    
    // Raw messaging
    sendRequest,
    sendNotification,
    sendResponse,
    sendError,
    
    // Event subscriptions
    onInitialize,
    onToolInputPartial,
    onToolInput,
    onToolResult,
    onHostContextChanged,
    onResourceTeardown,
  } = useMcpProtocol({ debug: true });
}
useMcpToolStream

细粒度工具流状态。

import { useMcpToolStream } from 'mcp-app-view/react';

function StreamingApp() {
  const {
    name,
    arguments,
    partialArguments,
    result,
    status, // 'idle' | 'streaming' | 'complete' | 'error' | 'teardown'
    isStreaming,
    getArgumentValue,
    reset,
  } = useMcpToolStream();
}
McpApp & McpAppProvider

组件包装。

import { McpApp, McpAppProvider, useMcpAppContext } from 'mcp-app-view/react';

// Simple wrapper
function App() {
  return (
    
      
    
  );
}

// Provider pattern
function App() {
  return (
     console.log('Ready!')}
      onToolResult={(result) => console.log('Done!')}
    >
      
    
  );
}

function MyWidget() {
  const { state, updateState } = useMcpAppContext();
  return 
{state.counter}
;
}

主机组件

McpProxyHost

在React应用程序中嵌入MCP应用程序。

import { McpProxyHost, McpProxyHostRef } from 'mcp-app-view/host';

function MyHost() {
  const hostRef = useRef(null);

  const handleToolCall = async (name: string, args?: Record) => {
    if (name === 'get_data') {
      return { data: 'Hello from host!' };
    }
    throw new Error(`Unknown tool: ${name}`);
  };

  // Send updates to the app
  useEffect(() => {
    hostRef.current?.sendToolInput({
      tool: { name: 'process_data' },
      arguments: { step: 1 },
    });
  }, []);

  return (
     {
        console.log('Message from app:', params.content);
      }}
      onToolCall={handleToolCall}
      onSizeChange={(size) => {
        console.log('App size:', size);
      }}
    />
  );
}

SEP-1865协议

此SDK实现了 SEP-1865 MCP应用程序规范.

Host → 应用消息

方法类型描述
ui/initialize请求初始化应用程序
ui/notifications/tool-input-partial通知流媒体工具参数
ui/notifications/tool-input通知最终工具参数
ui/notifications/tool-result通知工具结果
ui/tool-cancelled通知工具已取消
ui/notifications/host-context-changed通知上下文更新
ui/resource-teardown通知清理

App → 主机消息

方法类型描述
ui/notifications/initialized通知应用程序就绪
ui/notifications/size-change通知大小更改
ui/open-link请求打开URL
ui/message请求发送消息
tools/call请求呼叫工具

贡献

我们欢迎捐款!请查看我们的 贡献指南.

关于BotDojo

BotDojo 是一个用于构建、运行和集成AI代理的平台。我们创建了这个SDK,以帮助开发人员与MCP建立丰富的交互体验。

许可证

MIT© BotDojo

工具与能力

工具数量

0

资源数量

0

提示词数量

0

能力标签

MCP应用TypeScript本地部署交互式UI框架无关状态管理工具调用

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

典型使用场景

多步任务编排

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

长期上下文

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

接自有流程

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

选择建议

值得选的地方

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

先想清楚的地方

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

更适合

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

不太适合

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

同类对比

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

MCP World · 本页

0未说明未标注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 条

MCP App View 怎么安装?

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

MCP App View 怎么在 Claude Desktop、Cursor 里配置?

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

MCP App View 收费吗?

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

MCP App View 需要 API Key 吗?

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

MCP App View 支持哪些客户端?

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

来源信息

继续浏览同类 MCP