Token导航 LogoToken导航TokenDH.com
LMCP (Janksuu) logo
运维云端stdio官方级别未说明来源级核验

LMCP (Janksuu)

MCP Server

LMCP是一个为模型上下文协议(MCP)服务器提供的治理层,通过集中注册、客户端访问控制和审计日志来管理多客户端与多服务器之间的交互。

工具数

0

提示词数

0

GitHub Stars

3

资源数

0
PythonClaude云端部署Claude DesktopClaudeVS Code

安装说明

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

作者 / 组织

Janksuu

提供方

Janksuu

最后核验

2026/5/17 20:21

快速接入

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

命令预览

pip install -r requirements.txt

详细介绍

LMCP

![CI](https://github.com/Janksuu/LMCP/actions/workflows/ci.yml)

本地MCP控制平面 --模型上下文协议服务器的治理层。

┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│   VS Code   │     │    Codex    │     │Claude Desktop│
└──────┬──────┘     └──────┬──────┘     └──────┬──────┘
       │                   │                   │
       └───────────────────┼───────────────────┘
                           │  token + client_id
                           ▼
                    ┌─────────────┐
                    │    LMCP     │
                    │  ─────────  │
                    │  Registry   │
                    │  Auth/Policy│
                    │  Audit Log  │
                    └──────┬──────┘
                           │  authorized only
       ┌───────────────────┼───────────────────┐
       │                   │                   │
       ▼                   ▼                   ▼
┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│ Ollama MCP  │     │ ComfyUI MCP │     │Playwright MCP│
│   (stdio)   │     │   (HTTP)    │     │  (Docker)   │
└─────────────┘     └─────────────┘     └─────────────┘

______________________________________________________________________

问题

在多个MCP工具服务器上运行多个AI客户端会产生碎片问题:

  • VS Code、Codex和Claude Desktop都有自己的配置格式和发现机制
  • 每个新客户端都意味着在不同的配置文件中重新注册每个服务器
  • 无共享策略:在一个地方授予客户端访问权限不会影响其他任何内容
  • 无审计跟踪:没有记录哪个客户调用了哪个工具,或者是否允许使用该工具

自然的反应是将每个客户端直接连接到每个服务器。这一直有效,直到令牌更改、服务器移动或客户端积累了它不应该拥有的访问权限。

LMCP做什么

LMCP提供了一个所有MCP客户端都连接到的单一本地端点。注册表定义了存在的服务器。每个客户端的分配列表定义了每个客户端可以访问的内容。每个访问决定(允许或拒绝)都会写入仅可追加的审计日志。

这不是路由流量的代理。它是一个治理层,决定是否应该路由流量,并记录它做出的每一个决定。

______________________________________________________________________

设计不变量

这些是LMCP不会放弃的财产:

  • 默认情况下进行环回绑定 --LMCP结合到 127.0.0.1远程访问需要明确的配置和深思熟虑的选择加入。
  • 明确注册 --没有什么是自动发现的。如果服务器不在注册表中,则LMCP不知道它的存在。
  • 每客户分配列表 --客户端只能访问它们被明确授权的服务器。在授予访问权限之前,新客户端没有访问权限。
  • 仅附加审核日志 --每个身份验证和授权决定都是一次性的,永远不会被修改或删除。
  • 政策作为访问,而非意图 --LMCP决定 *是否* 发生工具调用。它永远不会决定 *为什么*,或者下一步该做什么。

建筑.md 这些决定背后的基本原理。

______________________________________________________________________

快速开始

1.安装依赖项

cd LMCP
pip install -r requirements.txt

2.配置注册表

复制示例并编辑:

cp config/registry.example.yaml config/registry.yaml

添加服务器并设置客户端令牌:

clients:
  vscode:
    token: "your-secure-token-here"
    allow_servers: ["ollama-mcp", "comfyui-mcp"]

servers:
  ollama-mcp:
    transport: stdio
    command: npx
    args: ["-y", "ollama-mcp-server"]
    env:
      OLLAMA_HOST: "http://127.0.0.1:11434"
    timeouts:
      initialize_s: 30
      tools_list_s: 30
      tools_call_s: 300
      retry_on_timeout: 1
      retry_backoff_s: 1.5
    tool_policy:
      mode: allow_all

3.验证您的配置

python -m lmcp --registry config/registry.yaml --validate-registry

4.启动LMCP

python -m lmcp --registry config/registry.yaml --serve-http

5.验证它是否正在运行

python -m lmcp --registry config/registry.yaml --status

6.连接您的客户端

将您的MCP客户端指向:

http://127.0.0.1:7345/mcp?client_id=vscode&token=your-secure-token-here

______________________________________________________________________

配置

注册表格式

LMCP使用单个YAML注册表文件。所有配置都存在于这里:守护进程设置、每个注册的客户端和每个注册的服务器。

lmcp:
  host: 127.0.0.1
  port: 7345
  audit_log: logs/audit.log
  loopback_only: true

clients:
  vscode:
    token: "your-token"
    allow_servers: ["ollama-mcp"]

servers:
  ollama-mcp:
    transport: stdio
    command: npx
    args: ["-y", "ollama-mcp-server"]
    env:
      OLLAMA_HOST: "http://127.0.0.1:11434"
    tool_policy:
      mode: allow_all

config/registry.example.yaml 对于具有多种服务器类型的完整示例。

服务器传输

传输配置字段用例
stdiocommand, args, env本地MCP服务器作为子进程启动
httpurl, headersHTTP/SSE MCP服务器已在运行

超时和重试

每个服务器都可以覆盖LMCP超时行为:

servers:
  comfyui-mcp:
    transport: http
    url: "http://127.0.0.1:9000/mcp"
    timeouts:
      tools_list_s: 20
      tools_call_s: 600
      retry_on_timeout: 1
      retry_backoff_s: 2
关键字含义默认值(stdio)默认值(http)
initialize_sMCP超时 initialize90未使用
tools_list_s超时 tools/list9060
tools_call_s超时 tools/call180300
retry_on_timeout超时后重试00
retry_backoff_s重试之间等待11

重试行为是故意保守的:

  • 检索适用于 initializetools/list.
  • tools/call 自动重试以避免重复的副作用。

速率限制

使用内存中的令牌桶对每个客户端请求进行可选限制:

lmcp:
  rate_limit_rpm: 60           # Global default (requests per minute)

clients:
  vscode:
    token: "..."
    allow_servers: [...]
    rate_limit_rpm: 120        # Per-client override
设置范围效果
lmcp.rate_limit_rpm全局未设置自己的客户端的默认限制
clients..rate_limit_rpm每个客户端覆盖此客户端的全局默认值
  • 每个客户端优先于全局。
  • 如果两者都没有设置,则客户端是无限的。
  • 超过限制将返回MCP错误 -32009 (rate_limited).
  • 速率受限的请求记录在审核日志中。
  • 状态在内存中,并在守护进程重新启动时重置。

工具政策

每个服务器控制客户端可以调用哪些工具。双方均被强制执行 tools/list (返回的集合已被过滤) tools/call (拒绝工具 返回MCP错误-32011 tool_denied).

模式行为
allow_all除中列出的工具外,所有工具均可访问 deny_tools
deny_all没有可访问的工具(服务器已注册但已关闭)
allow_list仅限中列出的工具 allow_tools 可访问

例子:

servers:
  github-mcp:
    transport: stdio
    command: npx
    args: ["-y", "github-mcp-server"]
    tool_policy:
      mode: allow_list
      allow_tools:
        - search_repositories
        - get_file_contents
      deny_tools: []

______________________________________________________________________

行动

状态和检查

# Human-readable status summary
python -m lmcp --registry config/registry.yaml --status

# Machine-readable status (JSON)
python -m lmcp --registry config/registry.yaml --status-json

状态输出包括已注册的客户端及其允许的服务器、已注册的服务器和传输类型、每台服务器的超时设置以及最新的审核日志条目。

Web管理UI

当守护进程运行时,可以在以下位置使用管理界面:

http://127.0.0.1:7345/ui

UI有两种模式:

  • 只读 (默认):显示守护进程状态和实时事件。无需配置。
  • 管理:启用权限矩阵、客户端/服务器编辑器和注册表

编辑。需要 management_token 在注册表配置中。

要启用管理模式,请在注册表中添加管理令牌:

lmcp:
  host: 127.0.0.1
  port: 7345
  management_token: "your-management-secret"

启动时,守护进程会提示您在浏览器中打开UI。

docs/web_ui.md 对于完整的UI规范和 文档/管理\_ api.md API合同。

现场活动(SSE)

通过服务器发送事件订阅实时守护进程事件:

GET http://127.0.0.1:7345/events

事件发生时会流式传输:客户端身份验证、服务器授权、, 速率限制、配置更改。可选过滤器: ?event_type=client_auth.

web UI会自动订阅此内容。外部消费者可以使用 任何SSE客户端(JS中的EventSource、curl等)。

______________________________________________________________________

HTTP API

端点

端点方法描述
/healthGET健康检查
/statusGET守护进程状态(JSON,版本化合约)
/uiGETWeb管理用户界面
/eventsGET实时事件流(SSE)
/describeGET后台程序配置
/auth-checkGET验证客户端凭据
/server-checkGET验证服务器访问权限
/registry/viewGET注册表配置(标记已编辑,管理身份验证)
/registry/validatePOST验证配置补丁(管理身份验证)
/registry/applyPOST应用配置补丁(管理身份验证)
/mcpPOSTMCP协议桥

MCP协议支持

/mcp 端点接受标准MCP JSON-RPC。身份验证是通过查询参数或标头进行的。

查询参数: ?client_id=vscode&token=your-token

标题: X-Lmcp-Client-Id: vscodeX-Lmcp-Token: your-token

支持的方法:

  • initialize --协议握手
  • tools/list --跨允许的服务器聚合工具发现
  • tools/call --代理工具执行与策略执行

示例:列表工具

curl -X POST "http://127.0.0.1:7345/mcp?client_id=vscode&token=your-token" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/list",
    "params": {}
  }'

或者使用标题:

curl -X POST http://127.0.0.1:7345/mcp \
  -H "Content-Type: application/json" \
  -H "X-Lmcp-Client-Id: vscode" \
  -H "X-Lmcp-Token: your-token" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/list",
    "params": {}
  }'

______________________________________________________________________

完整CLI参考

# Start HTTP server
python -m lmcp --registry config/registry.yaml --serve-http

# Human-readable status summary
python -m lmcp --registry config/registry.yaml --status

# Machine-readable status (JSON)
python -m lmcp --registry config/registry.yaml --status-json

# Validate registry configuration
python -m lmcp --registry config/registry.yaml --validate-registry

# Print parsed configuration
python -m lmcp --registry config/registry.yaml --print-config

# Run self-test (auth + policy checks)
python -m lmcp --registry config/registry.yaml --self-test

# Test stdio server connection
python -m lmcp --registry config/registry.yaml --stdio-test ollama-mcp

# Test HTTP server connection
python -m lmcp --registry config/registry.yaml --http-test comfyui-mcp

______________________________________________________________________

VS代码集成

将LMCP添加为VS Code工作区中的MCP服务器:

.vscode/mcp.json

{
  "servers": {
    "lmcp": {
      "type": "http",
      "url": "http://127.0.0.1:7345/mcp?client_id=vscode&token=YOUR_TOKEN"
    }
  }
}

在VS代码代理模式下,LMCP注册表中的所有服务器都可以通过单个LMCP端点访问。访问权限由 allow_servers 列表为 vscode 客户。

______________________________________________________________________

安全

LMCP的设计使安全行为成为默认行为。代码库已经 通过正式审查(2026年4月),在v3.0.2和v3.1.1中进行了后续强化。

保护措施

  • 仅限环回 --绑定到 127.0.0.1 除非另有明确配置
  • 令牌身份验证 --每个客户端都需要一个有效的令牌;无匿名访问
  • 恒定时间令牌比较hmac.compare_digest 防止定时攻击
  • 服务器分配列表 --客户端仅访问其明确授权的服务器
  • 执行工具政策 --每台服务器 tool_policy 过滤器 tools/list 并拒绝被拒绝的来电 tools/call (MCP错误 -32011 tool_denied)
  • 审核日志记录 --记录每个身份验证、授权和工具策略决策
  • 探头速率限制/auth-check/server-check 以10转/分的速度节流,以防止暴力
  • 请求大小限制 --POST主体大小限制为1 MB
  • 苏格兰和南方能源公司用户上限 --最多50个并发 /events 连接
  • XSS预防 --所有用户控制的值均已转义;没有内联JS处理程序
  • 管理认证 --注册表编辑需要单独的管理令牌(仅标题,默认禁用)
  • 尽量减少公开披露 --公共端点不公开客户端ID、服务器命令或文件路径
  • /registry/view 编辑秘密 --客户端令牌显示为 token_status;服务器 envheaders 值显示为 set / empty (键可见,值不可见)

LMCP不做什么

  • 默认情况下没有远程网络访问
  • 无自动服务器发现或注册
  • 无代理编排或规划
  • 没有持久内存或交叉请求状态
  • 无意图推断

LMCP是访问控制基础设施。它不是一个AI系统。

安全.md 了解完整的安全模型、可接受的风险和审计历史。

______________________________________________________________________

需求

  • Python 3.10+
  • pyyaml >= 6.0
  • jsonschema >= 4.20.0

对于使用 npx:

  • Node.js 20+

文件/要求.md 了解完整的设置细节。

______________________________________________________________________

文档

______________________________________________________________________

关于

LMCP是由 昆西·佩里 作为...的一部分 数字合成工作室 生态系统——人工智能工作流程的工具。

______________________________________________________________________

许可证

麻省理工学院——见 许可证

目录标签

目录标签

PythonClaude云端部署模型控制本地部署访问治理审计日志多客户端管理协议桥接

支持客户端

Claude DesktopClaudeVS Code

接入字段

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

stdio

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

token

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

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

0

权限和风险

stdiotoken部署方式未说明

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

安装前确认

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

来源信息

继续浏览同类 MCP