mcpField
O
osmcp

osmcp

本地服务
github.com/KrushnaVardhanReddy开发工具011 周前更新

关于 osmcp

osmcp 是一个 MCP 服务,为 AI Agent 提供受策略引擎控制的类型化文件系统、Git 和文本处理工具。它适用于需要限制路径与工具、控制修改、限制输出并记录审计日志的环境。

主要功能

  1. 01文件系统搜索与检查工具
  2. 02Git 状态、差异和历史工具
  3. 03文本转换工具
  4. 04基于策略的路径与工具允许列表
  5. 05修改控制与执行限制
  6. 06仅追加的调用审计日志

适用场景

  1. 01将 Agent 限制在项目目录内
  2. 02只开放指定工具并隐藏其他工具
  3. 03允许检查但阻止文件修改
  4. 04审计 Agent 的工具调用

MCP 相关

osmcp 使用 MCP JSON-RPC over stdio 与 MCP 客户端通信。策略引擎控制工具的展示和调用,并执行文件系统边界及修改规则。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"krushnavardhanreddy-osmcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/krushnavardhanreddy/osmcp:latest"
]
}
}
}
启动命令docker run -i --rm ghcr.io/krushnavardhanreddy/osmcp:latest

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocighcr.io/krushnavardhanreddy/osmcp:latest

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

osmcp — 面向 AI Agent 的操作系统能力

通过 Model Context Protocol(MCP)为 AI Agent 提供类型化、受策略控制的操作系统能力层。

osmcp 向 AI Agent 提供一组经过筛选的安全文件系统、git 和文本处理工具,所有工具均由严格的策略引擎管理,强制执行路径边界、工具允许列表、输出限制、变更控制和不可变审计轨迹。

📖 阅读全面的架构与设计文档,深入了解 osmcp 背后的理念、安全边界和设计决策。

LiteLLM 兼容 Smithery 已验证

功能

类别工具阶段
🔍 搜索grep、find1
📁 文件检查ls、cat、stat、wc、head、tail1
🌳 文件系统tree、du1
🔀 Git 智能分析git_status、git_diff、git_log1
🔧 转换jq、sed、diff1
✍️ 文件变更write_file、append_file、mkdir、rm、mv、cp、patch2
🚀 Git 变更git_add、git_commit、git_checkout、git_branch、git_pull、git_push2

架构

AI Agent (Claude, GPT, etc.)
    │  MCP JSON-RPC (stdio)
    ▼
osmcp binary
    ├── Policy Engine      ← enforces allowed_root, allowed_tools, limits
    ├── Audit Logger       ← append-only NDJSON log of every invocation
    ├── Tool Registry      ← self-registering tools via RegisterMCP()
    └── Envelope Builder   ← typed {ok, data, error, meta} responses

演示

osmcp 演示操作 演示 Claude Desktop 如何通过 osmcp 安全地编辑代码,并由 TOML 策略引擎严格限制操作范围。

快速开始

1. 通过 Homebrew 安装
brew tap KrushnaVardhanReddy/tap
brew install osmcp

也可以从源代码构建:

make build
# Binary: bin/osmcp
2. 配置策略
# policy.toml
[policy]
allowed_root   = "/home/user/myproject"
allowed_tools  = ["grep", "ls", "cat", "git_status", "git_log"]
allow_mutation = false

[limits]
timeout_ms       = 5000
max_output_bytes = 1048576
max_matches      = 100

[audit]
destination = "stderr"   # or "file"
path        = "/var/log/osmcp-audit.ndjson"
3. 运行
bin/osmcp --policy policy.toml

二进制程序通过 stdio 使用 MCP JSON-RPC 进行通信。可连接任何兼容 MCP 的客户端。

客户端集成

Claude Desktop

将以下内容添加到 claude_desktop_config.json:

{
  "mcpServers": {
    "osmcp": {
      "command": "osmcp",
      "args": ["--policy", "/absolute/path/to/policy.toml"]
    }
  }
}
Smithery(npx)

通过 Smithery 自动为 Claude Desktop 安装 osmcp:

npx @smithery/cli install osmcp
LiteLLM

使用 LiteLLM MCP Gateway 将 osmcp 集成到企业级 LLM 代理中。

5. 测试
make test     # unit tests
make e2e      # end-to-end tests against real binary
make lint     # golangci-lint

策略安全模型

  • allowed_root — 所有文件系统路径都会经过验证,确保位于此根目录内。超出此范围的路径遍历会被阻止,并返回 POLICY_DENIED。
  • allowed_tools — 只有此列表中的工具对 MCP 客户端可见。未列出的工具不会出现在 tools/list 中。
  • allow_mutation — 当值为 false 时,所有变更工具(写入、删除、git 提交)都会被全局阻止。
  • 限制 — 每次调用的超时、输出字节数上限和匹配数量上限可防止操作失控。

信封响应格式

所有工具响应都遵循统一的类型化信封格式:

{
  "ok": true,
  "tool": "grep",
  "data": { ... },
  "error": null,
  "meta": {
    "execution_time_ms": 12,
    "truncated": false
  }
}

许可证

MIT

致谢

osmcp 的实现离不开其所依赖的优秀开源库:

  • mcp-go,提供核心 Model Context Protocol SDK。
  • go-git,用于纯 Go 的 git 操作。
  • gojq,用于纯 Go 的 JSON 处理。
  • go-gitdiff,用于解析和应用补丁。
  • grep-go,用于正则表达式搜索。
  • toml,用于解析配置。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。