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

Ngsi Ld MCP

MCP Server

一个基于Rust和Axum的模型上下文协议服务器实现,支持HTTP服务器、MCP协议、工具支持、资源管理、动态提示模板和实时通信等功能,适用于AI模型交互和实时通信场景。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
HTTP服务器实时通信RustCursor资源管理CursorVS Code

安装说明

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

作者 / 组织

agaldemas

提供方

agaldemas

最后核验

2026/5/17 20:20

快速接入

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

详细介绍

ngsi ld mcp

使用Rust和Axum的MCP(模型上下文协议)服务器实现。

特性

  • HTTP服务器:基于Axum的HTTP服务器,支持SSE(服务器发送事件)
  • MCP协议:使用rmcp实现完整的模型上下文协议
  • 工具支持:定义和公开AI模型交互工具
  • 资源管理:通过适当的URI处理提供资源
  • 提示模板:支持动态提示模板
  • 实时通信:SSE用于实时双向通信
  • 信号处理:通过适当的信号处理实现优雅的关机
  • 安全:用于生产部署的内置安全功能

安全特性

此服务器包括安全功能:

  • 运输安全:使用可配置绑定地址进行web部署的安全SSE模式
  • 输入消毒:所有输入都经过适当的验证和消毒
  • 结构化日志记录:JSON日志可防止日志注入攻击
  • 优雅地关闭:正确清理终端信号
  • 错误处理:不会泄露实现细节的安全错误消息

用法

基本用法

# Start the server in STDIO mode (default)
cargo run

# Start the server in SSE mode with HTTP endpoints
cargo run -- --transport sse --sse-addr 127.0.0.1:8080

# Start with custom configuration
cargo run -- --log-dir /var/log/mcp --api-url https://api.example.com

# Use a configuration file
cargo run -- --config-file server.toml

# Start with debug logging (standard Rust logging)
RUST_LOG=debug cargo run

配置

所有服务器配置都是通过命令行参数完成的:

ngsi-ld-mcp [OPTIONS]

Options:
  -t, --transport               Transport type to use [default: stdio] [possible values: stdio, sse]
      --sse-addr                 SSE server bind address [default: 127.0.0.1:3400]
      --sse-keep-alive     SSE keep-alive interval in seconds [default: 30]
      --log-dir                   Log directory path [default: logs]
      --api-url                   API URL for backend services [default: http://localhost:1026/ngsi-ld/v1]
  -c, --config-file           Optional configuration file path (TOML format)
  -h, --help                               Print help
  -V, --version                            Print version

运输方式

STDIO模式 (默认):

  • 服务器通过标准输入/输出进行通信
  • 适用于直接过程通信
  • 由桌面MCP客户端使用,如Cursor/VS Code

SSE模式:

  • 服务器为SSE通信公开HTTP端点
  • /sse -实时消息的服务器发送事件端点
  • /message -客户端消息的POST端点
  • 适用于基于web的客户端和远程连接

配置文件

如果您更喜欢使用配置文件(指定为 --config-file),创建一个TOML文件:

log_dir = "logs"
api_url = "http://localhost:1026/ngsi-ld/v1"
transport = "stdio"
sse_addr = "127.0.0.1:3400"
sse_keep_alive = 30

注意:命令行参数始终覆盖配置文件设置。

API终点

MCP协议端点

  • POST /mcp/sse -MCP通信的服务器发送事件端点
  • GET /health -健康检查端点
  • GET /schema -OpenAPI模式端点

开发终点

  • GET /docs -Swagger UI文档(仅限开发)

实施

添加工具

工具定义见 src/handlers/ 并注册于 src/main.rs:

use agenterra_rmcp::prelude::*;

#[tool]
async fn my_tool(
    #[description("Input parameter")] input: String,
) -> Result> {
    Ok(format!("Processed: {}", input))
}

添加资源

资源通过MCP协议进行管理,可以表示文件、数据库或任何可访问的数据:

use agenterra_rmcp::prelude::*;

async fn list_resources() -> Vec {
    vec![
        Resource {
            uri: "file:///example.txt".to_string(),
            name: Some("Example File".to_string()),
            description: Some("An example resource".to_string()),
            mime_type: Some("text/plain".to_string()),
        }
    ]
}

添加提示

可以为动态内容生成定义提示模板:

use agenterra_rmcp::prelude::*;

async fn get_prompt(name: &str, args: &serde_json::Value) -> Option
 {
    match name {
        "example" => Some(PromptMessage {
            role: MessageRole::User,
            content: MessageContent::Text("Example prompt".to_string()),
        }),
        _ => None,
    }
}

依赖项

  • rmcp:MCP协议实施
  • 阿克苏姆:HTTP web框架
  • 东京:异步运行时
  • 序列化与反序列化:序列化支持
  • 阴谋家:JSON模式生成
  • 追踪:测井和仪器
  • 信号钩:优雅关机的信号处理

出版限制

⚠️ 重要:此项目使用git依赖项,无法以当前形式发布到crates.io。

rmcp 依赖关系直接从官方的ModelContextProtocol GitHub存储库中引用,以确保访问最新功能(包括身份验证支持)。要将此项目发布到crates.io,您需要:

  1. 等待官方 rmcp 在crates.io上发布,其中包括 auth 特征
  2. 或者删除需要git依赖项的功能
  3. 或者在本地提供依赖项

此限制确保您在开发过程中可以访问完整的官方MCP SDK功能。

发展

建筑

cargo build

运行测试

cargo test

格式化

cargo fmt

代码检查

cargo clippy

热重载运行

对于开发,您可以使用 cargo watch:

cargo install cargo-watch
cargo watch -x run

项目结构

ngsi-ld-mcp/
├── Cargo.toml          # Rust project manifest
├── src/
│   ├── handlers/        # MCP request handlers
│   │   ├── mod.rs       # Handler module exports
│   │   └── {endpoint}.rs # Individual endpoint handlers
│   ├── schemas/         # JSON schema files (created during generation)
│   ├── common.rs        # Common utilities and error handling
│   ├── config.rs        # Server configuration
│   ├── server.rs        # MCP server implementation
│   ├── signal.rs        # Signal handling for graceful shutdown
│   ├── transport.rs     # Transport layer (STDIO/SSE)
│   └── main.rs          # Server entry point
├── .env                # Environment variables
└── README.md           # Project documentation

结构组织如下:

  • handlers/ -包含所有MCP工具实现,每个端点一个文件
  • schemas/ -工具参数的JSON模式文件(自动生成)
  • common.rs -用于API通信和错误处理的共享实用程序
  • config.rs -配置管理和命令行解析
  • server.rs -带协议处理的核心MCP服务器实现
  • signal.rs -优雅关机的信号处理(信号处理、信号情报)
  • transport.rs -支持STDIO和SSE模式的传输层
  • main.rs -应用程序入口点和服务器初始化

生产部署

构建发布二进制文件

cargo build --release

Docker部署

创建一个 Dockerfile:

FROM rust:1.70 as builder
WORKDIR /app
COPY . .
RUN cargo build --release

FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y ca-certificates && rm -rf /var/lib/apt/lists/*
COPY --from=builder /app/target/release/ngsi-ld-mcp /usr/local/bin/server
EXPOSE 3000
CMD ["server"]

环境配置

对于生产,请考虑:

  • 设置适当 RUST_LOG 层级
  • 配置正确的错误处理
  • 设置监控和指标
  • 实施速率限制
  • 添加身份验证中间件

许可证

该项目根据MIT许可证获得许可。

目录标签

目录标签

HTTP服务器实时通信RustCursor资源管理本地部署模型上下文协议AI模型交互

支持客户端

CursorVS Code

接入字段

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

未说明

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

none

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

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

0

权限和风险

未说明none部署方式未说明

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

安装前确认

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

仍需确认:installCommand

来源信息

继续浏览同类 MCP