Codex Harness MCP

Codex Harness MCP

Enables MCP-compatible AI clients to invoke CLI-driven agent tools over Streamable HTTP, including shell execution, file operations, patching, image viewing, web search, and nested agent tasks, with permission modes and real-time progress streaming.

Category
访问服务器

README

A Harness MCP — Codex 风格的自主编程 Agent 服务

Python MCP Protocol License

A Harness MCP 是一个基于 Model Context Protocol (MCP) 的本地服务端程序,它将 Codex Harness 的分层上下文、技能系统和自主 Agent 能力以 MCP 工具的形式暴露给外部 AI 客户端(如 Claude Desktop、DeepSeek 等)。通过该服务,外部 AI 可以在您的本地项目中执行代码、读写文件、调用外部工具,并以结构化的方式完成复杂编程任务。

✨ 核心特性

  • 分层上下文装配 —— 借鉴 Codex Harness 设计,将基础行为准则、用户级 AGENTS.md、项目级 AGENTS.md 和技能索引分层叠加,流程约定可由用户自由编辑,不写死在代码中。
  • 技能 (Skill) 系统 —— 支持在项目 .a_harness_mcp/skills/ 目录下定义独立技能,通过 get_skill 工具按需加载完整说明,减少上下文冗余。
  • 内置丰富工具集 —— 提供 shell 命令执行、文件读写、目录浏览、补丁应用、图片查看、网络搜索、MCP 服务器管理等能力。
  • Codex Agent 集成 —— 内置 codex 工具,可直接将复杂编码任务委托给 Codex Agent 执行,支持超时控制和自定义模型。
  • 外部 MCP 服务器代理 —— 通过 mcp_servers.json 配置,可将第三方 MCP 服务器(如 Excel、SSH、高德地图等)统一代理并集成进工具列表。
  • 图形化控制界面 —— 提供 PyQt5 构建的 GUI 程序,可配置项目目录、权限模式、主机端口、模型参数,并实时查看服务日志与 AI 交互记录。
  • 轻量级测试客户端 —— 内置纯标准库实现的 mcp_client_test.py,无需第三方依赖即可验证服务可用性。

🚀 快速开始

启动服务端

# 启动 GUI 控制界面
python codex_mcp_gui.py

# 或直接启动 HTTP 服务(无 GUI)
python codex_mcp_server.py

连接 MCP 客户端

服务默认在 http://127.0.0.1:9999/mcp 提供 MCP Streamable HTTP 端点,支持任意 MCP 兼容客户端连接。

使用冒烟测试客户端验证

# 握手并列出所有可用工具
python mcp_client_test.py

# 调用 shell 工具执行 dir 命令
python mcp_client_test.py --tool shell --args '{"command":"dir"}'

# 调用 codex 工具执行编程任务
python mcp_client_test.py --tool codex --args '{"prompt":"读取当前目录所有 Python 文件并统计总行数"}'

在 Claude Desktop 中配置

在 Claude Desktop 配置文件中添加:

{
  "mcpServers": {
    "a-harness-mcp": {
      "url": "http://127.0.0.1:9999/mcp"
    }
  }
}

📦 可用工具

工具名称 描述
shell 在项目目录中执行 shell 命令(受权限模式约束)
codex 启动 Codex Agent 完成编码任务(嵌套 Agent)
read_file 读取项目内文本文件
write_file 写入项目内文本文件(只读模式下禁用)
list_dir 列出项目内目录内容
apply_patch 应用 git 风格 unified diff 补丁
view_image 查看 base64 编码或项目路径下的图片
web_search 联网搜索(走 DuckDuckGo 网页接口)
harness_context 返回当前注入的完整上下文(流程规则 + 技能索引)
list_skills 列出项目可用的技能
get_skill 按需加载指定技能的完整 SKILL.md 说明
memory_save / update / delete 长期记忆管理(用户偏好、行为纠正、讨论要点等)
skill_draft_create 创建待审阅的自定义 Skill 草稿
memory_import_preview 预览并导入外部记忆数据

🧩 技能系统(Skills)

技能是项目级别的可复用能力单元,存放于 .a_harness_mcp/skills/<技能名>/SKILL.md。

每个技能文件使用 frontmatter 声明元数据:

---
name: pdf-analyzer
description: 提取 PDF 文档中的表格和关键信息,适用于财务报告分析
---

# PDF 分析技能

## 使用场景
...

外部 AI 初始化时只会加载技能的 name 和 description 作为索引,完整正文通过 get_skill 按需获取,大幅压缩上下文窗口占用。

🎛️ 权限模式

模式 说明
workspace-read 只读模式,禁止任何写入操作
workspace-write 允许在工作区内读写和执行命令
workspace-write-all 无额外限制的完整工作区权限

权限模式可通过 GUI 下拉菜单或服务启动参数切换。

📁 分层上下文装配机制

服务启动时自动装配以下上下文,注入给外部 AI 作为初始 instructions:

  1. 基础行为准则 —— 内置 Codex 风格准则(工具规范、自主性、质量要求)
  2. 用户级流程约定 —— ~/.a_harness_mcp/AGENTS.md(首次运行自动生成默认模板,可自由编辑)
  3. 项目级流程约定 —— <项目>/AGENTS.md 或 <项目>/.a_harness_mcp/AGENTS.md(优先级高于用户级)
  4. 技能索引 —— 扫描 .a_harness_mcp/skills/ 目录,汇总所有技能的名称与描述

🔌 外部 MCP 服务器代理

通过 mcp_servers.json 配置文件,可将第三方 MCP 服务器代理到本服务中:

[
  {
    "name": "excel",
    "enabled": true,
    "config": {
      "mcpServers": {
        "excel": {
          "command": "npx",
          "args": ["-y", "@zhiweixu/excel-mcp-server"],
          "env": { "CACHE_MAX_AGE": "1" },
          "type": "stdio"
        }
      }
    }
  }
]

代理后的工具会统一注册到工具列表,外部 AI 可直接调用。

🧪 开发与测试

依赖安装

pip install PyQt5

运行测试

# 启动服务(GUI 或非 GUI 模式)
python codex_mcp_gui.py

# 另开终端执行冒烟测试
python mcp_client_test.py

🗂️ 项目结构

.
├── A Harness MCP.exe       # PyInstaller 打包的可执行文件
├── codex_mcp_gui.py        # PyQt5 GUI 控制界面
├── codex_mcp_server.py     # MCP HTTP 服务核心实现
├── context.py              # 分层上下文装配器
├── mcp_plugins.py          # 外部 MCP 服务器代理与插件管理
├── mcp_client_test.py      # 纯标准库 MCP 客户端冒烟测试
├── mcp_servers.json        # 外部 MCP 服务器配置
└── codex_mcp_gui_config.json # GUI 配置文件(项目目录、端口、权限模式等)

📄 许可证

MIT

🤝 贡献

欢迎提交 Issue 和 Pull Request。在提交代码前,请确保:

  • 遵循现有代码风格
  • 新增功能附带对应的测试用例
  • 更新相关文档

Made with ❤️ for local AI Agent development.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选