返回市场
MCP-矢量服务器

MCP-矢量服务器

作者:mcp-ectors31 星标更新:2025-05-29

项目介绍

企业级MCP服务器(mcp-ectors)

我们正在逐步淘汰基础版的mcp-ectors服务器,因为我们开源了许多更令人兴奋的AI代理平台。请查看:Greentic-ai

企业级MCP服务器,或简称mcp-ectors,是一款专为企业设计的高性能且安全的MCP服务器,旨在实现大型语言模型(LLMs)与各种工具、资源及工作流程提示之间的无缝集成和交互。这款强大的服务器充当了桥梁的角色,就像一个USB接口,使LLMs能够访问多种能力,从而支持代理和代理型AI。它使用RustWasmactors构建,优化了性能、安全性和可扩展性,使其非常适合企业环境。MCPEctors可以支持许多不同的MCP路由器,每个路由器都在一个安全的容器化环境中运行[Wasm]。通过wasix-mcp组件接口,它们可以安全地暴露其MCP工具、资源和提示,而不会对运行mcp路由器的服务器造成损害。

注意:mcp-ectors的名字来源于“MCP企业角色服务器”,与创建者的姓氏无关,尽管听起来可能如此 😄

主要特性

  • Wasm Wasix MCP路由器:默认情况下,通过基于Wasm的方法和Wasix来创建和管理MCPs。这允许与WebAssembly环境无缝集成,使得LLMs高度便携和可扩展。
  • Wasm支持:通过Wasix-MCP.router提供的Wasm支持,mcp-ectors提供了一个轻量级且灵活的平台来运行各种MCPs,在WebAssembly环境中启用工具和资源。
  • 高性能:使用actorsRust构建,该服务器确保了高可扩展性和并发性。
  • MCP作为LLMs的USB:通过干净的API,使访问工具、资源和工作流程提示成为可能。
  • 复用连接:与其他MCP服务器不同,mcp-ectors允许在同一个连接上部署多个路由器,简化架构和资源管理。
  • 多路由器:注册多个路由器并通过路由器服务管理器动态利用它们。

快速开始

先决条件

要开始使用mcp-ectors,请确保安装以下内容:

  • Rust(通过rust-lang
  • Cargo(随Rust一起提供)
  • 使用Cargo run运行应用程序。

运行服务器

  1. 克隆仓库

    git clone https://github.com/yourusername/mcp-ectors.git
    cd mcp-ectors
    
  2. 运行服务器: 克隆仓库后,导航到项目文件夹并运行服务器:

    cargo run
    

    服务器将在**http://localhost:8080/sse**启动。

  3. 从Goose Desktop开始: 在Goose Desktop(一个配套工具)中,你可以添加扩展,选择SSE作为传输,并使用以下URL:

    http://localhost:8080/sse
    

使用计数器示例

  1. 运行服务器后,在Goose Desktop应用程序中,你可以请求增加计数器或获取当前值。

  2. 尝试Hello World问候语。

创建新的MCP路由器

MCP-ectors允许您通过路由器特征创建和注册新的路由器。要添加一个新的路由器,为您的新路由器实现Router特征,参考现有的CounterRouterHelloWorldRouter示例。

示例:

use exports::wasix::mcp::router::{Role::User, Annotations, ToolsCapability, ResourcesCapability, PromptsCapability, CallToolResult, Content::Text, GetPromptResult, Guest, McpResource, Prompt, PromptMessage, PromptMessageContent, PromptMessageRole, ReadResourceResult, ResourceContents, ResourceError, ServerCapabilities, TextContent, TextResourceContents, Tool, ToolError, PromptError, Value};

wit_bindgen::generate!({
    path: "wit/world.wit",
    world: "mcp",
});


#[derive(Clone)]
pub struct MyRouter;

impl Guest for MyRouter {
    fn name() -> String {
        "MyRouter".to_string()
    }

    fn instructions() -> String {
        "Your instructions go here".to_string()
    }

    fn capabilities() -> ServerCapabilities {
        ServerCapabilities {
            tools: Some(ToolsCapability{ list_changed: Some(true) }),
            resources: Some(ResourcesCapability{ subscribe: Some(true), list_changed:  Some(false)}),
            prompts: Some(PromptsCapability{ list_changed: Some(true) }),
        }
    }

    fn list_tools() -> Vec<Tool> {
        ...
    }

    fn call_tool(
        tool_name: String,
        arguments: Value,
    ) -> Result<CallToolResult, ToolError> {
        ...
    }

    fn list_resources() -> Vec<McpResource> {
        ...
    }

    fn read_resource(
        uri: String,
    ) -> Result<ReadResourceResult, ResourceError> {
        ...
    }

    fn list_prompts() -> Vec<Prompt> {
        ...
    }

    fn get_prompt(prompt_name: String) -> Result<GetPromptResult, PromptError> {
        ...
    }
}

export!(YourRouter);

注册路由器

MCP中,工具、资源和提示被注册为routerid_toolrouterid_promptrouterid_resource以保持一切井然有序。路由器服务管理器通过将.wasm文件放入服务器加载的wasm目录中来添加新的路由器。

示例注册:

只需通过mcp-ectors start --wasm_path wasm启动服务器并将您的MPC路由器wasm放入目录即可。

架构概述

  1. 服务器构建器

    • server_builder确定传输层。目前支持SSE。未来版本将包括stdiowasi传输。
    • 目前,服务器支持SSE用于客户端和服务器之间的通信。
  2. 路由器服务管理器

    • RouterServiceManager负责注册多个路由器,并确保每个路由器可以在不需要新连接的情况下处理请求。
    • 这种架构允许您在同一连接下部署多个路由器,使系统高效且可扩展。
  3. 日志配置

    • 服务器可以配置存储日志的特定目录,并设置自定义日志级别以进行监控和调试。
    • 配置可以通过LogConfig结构进行定制。
  1. 传输Actor

    • MCP服务器中使用的任何传输都需要实现传输ActorTransportActorTrait确保传输正确处理请求和消息:
      • TransportRequest:允许新的JsonRPCMessages发送给客户端。它用于通过传输层在服务器和客户端之间进行通信。
      • StartTransport:此消息启动传输,初始化任何必要的后台任务,如建立连接或等待传入的消息。
      • StopTransport:此消息停止传输,优雅地关闭任何活跃的连接或与传输层相关的任务。
  2. 路由器

    • 路由器是一个任何路由器需要实现的特征,紧密关联于MCP标准。RouterServiceManager使用RouterRegistry注册新的路由。新的路由嵌入在RouterActor中,该Actor管理特定功能的通信。例如,当发出一个tools/call请求时,持有路由器的Actor将以适当的动作响应。这种设置允许服务器通过利用多个路由器动态响应各种请求。
  3. 标准Actor

    • MCP有一组标准Actor,实现了诸如初始化和管理工具、提示和资源的基本功能。这些标准Actor负责处理初始化请求并响应工具、提示和资源的列表请求。这使得与这些关键组件的交互变得容易,提供了跨不同路由器检索和管理核心资产的一致和标准化方法。

示例日志配置:

let log_config = LogConfig {
    log_dir: "logs".to_string(),
    log_file: "server.log".to_string(),
    level: Level::INFO,
};

未来发展

  • MCP协议:基本功能已经实现,但通知仍然缺失。OAuth、密钥管理等功能也在计划中。
  • 传输扩展:目前服务器支持SSE传输,未来计划添加stdiowasi
  • 寻求帮助:欢迎贡献!如果您在其他传输方式如WASIstdio方面有专长,请随时提交PR。

结论

MCP SSE服务器(mcp-ectors)是为高性能、可扩展性和易用性而构建的。借助actorsRust以及管理多个路由器的清晰架构,它使与LLMs、工具和资源的工作变得轻松。无论是研究人员、开发者还是AI爱好者,mcp-ectors都将帮助您将LLMs与所需的工具和资源集成,以实现高级代理型AI工作流。


欢迎贡献测试扩展系统以适应您的企业用例。您可以依赖mcp-ectors来驱动下一代AI应用。如果您的公司希望创建自定义路由器或合作,请联系Maarten Ectors