conduit-mcp

conduit-mcp

A governance-layer MCP server that gates AI writes to systems of record, requiring human signatures and providing a tamper-evident audit trail. It offers read, propose, approve, commit, and audit tools, with demo and Xero backends.

Category
访问服务器

README

conduit-mcp

tests

A governance-layer MCP server. An AI agent's writes into a system of record are gated, four-eyes signed, and written to a tamper-evident audit trail. Reads are open; writes are not. Zero dependencies, on purpose: there is nothing to trust but this package and its lib/, which is Conduit's own thesis (trust the proof, not the pipe) applied to the server itself.

It runs out of the box against an in-memory demo backend (a Guidewire-style claims store), so you can connect a client and try it with no credentials or config.

What it exposes

Seven tools over the standard MCP stdio transport:

Tool What it does
get_record Read one record. Open.
search_records Search a resource by free text. Open.
propose_change Draft a numeric change. Never writes. Returns the gate decision (auto / signoff / dual) and how many distinct human signatures are required.
approve Record one human signature on a proposal. Four-eyes enforced.
commit_change Gated. Writes only if the proposal has the required distinct signatures, otherwise refuses and says what is missing.
get_audit_trail The hash-chained audit trail (reads, gate decisions, signatures, commits) with reasoning attached and an integrity check.
set_policy Adjust the auto-adjust ceiling and dual-control threshold for the session.

The point: an agent that calls propose_change then commit_change on a high-value write is stopped. It must route through human sign-off. Every step is on the record.

Run

node server.mjs        # speaks MCP JSON-RPC on stdio (demo backend)
npm test               # drives the server end to end over both backends (17 checks)

Backends

The governance (gate, four-eyes, audit) is backend-agnostic. Pick the system of record with CONDUIT_BACKEND:

Backend Select Notes
demo (default) (none) In-memory Guidewire-style claims store. Zero config.
xero CONDUIT_BACKEND=xero The Xero accounting adapter. A committed change reclassifies an amount by posting a balancing ManualJournal. Uses a mock transport unless XERO_ACCESS_TOKEN + XERO_TENANT_ID are set, then it posts to the live Xero API.
CONDUIT_BACKEND=xero node server.mjs
# over Xero, propose_change bankTransaction/BT-5521.reclassified_amount, then approve x2, then commit

Connect a client

Claude Code

claude mcp add conduit -- node /absolute/path/to/mcp-server/server.mjs

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "conduit": { "command": "node", "args": ["/absolute/path/to/mcp-server/server.mjs"] }
  }
}

OpenAI Agents SDK (Python) points at the same stdio server:

from agents.mcp import MCPServerStdio
conduit = MCPServerStdio(params={"command": "node", "args": ["/absolute/path/to/server.mjs"]})

Once published to npm you can use npx conduit-mcp in place of the absolute path.

Try it (from any connected client)

  1. get_record claim CLM-5510-19 (settlement is null)
  2. propose_change settlement to 612000 (gate: dual, needs 2 signatures)
  3. commit_change -> refused, no signatures
  4. approve as usr_thabo, then approve as usr_naledi (two distinct humans)
  5. commit_change -> written, returns a tx
  6. get_record again -> settlement is now 612000
  7. get_audit_trail -> the whole chain, integrity ok

Design

The write path is the governance ladder from the Conduit project (proven by the test suite (npm test, 17 checks): propose_change runs the gate; below the auto-adjust ceiling a change auto-clears, at or above the dual-control threshold it needs two distinct human signers, otherwise one. commit_change verifies signatures before it writes. The audit chain (lib/audit.mjs) is append-only and hash-linked, so altering any past entry breaks verification.

This server is a working reference. The demo backend is in-memory; a production adapter (the Xero adapter here, CONDUIT_BACKEND=xero) swaps in behind the same tools.

Publish and list

An MCP server is not "submitted to" a model. Any MCP client connects to it. To get it in front of Claude and OpenAI users you publish it and list it, then their clients can find it.

1. Publish to npm (needs your npm login; a public name claim, so do it deliberately):

cd mcp-server
npm login
npm view conduit-mcp version    # confirm the name is free (E404 = free)
npm publish --access public

If conduit-mcp is taken, set "name": "@yourscope/conduit-mcp" in package.json first, then npm publish --access public.

2. List in the MCP Registry (registry.modelcontextprotocol.io). The io.github.iumvuyo/* namespace in server.json is verified through GitHub, so you publish as the repo owner:

# get the mcp-publisher CLI from the modelcontextprotocol/registry releases
mcp-publisher login github      # OAuth as IUMvuyo, verifies the namespace
mcp-publisher publish           # reads server.json, creates the listing

Publish to npm first; the registry entry references the npm package.

3. Clients. Once listed, Claude Desktop and Claude Code users add it by name; the OpenAI Agents SDK and ChatGPT developer-mode connectors point at npx conduit-mcp. A PR to the community list at github.com/modelcontextprotocol/servers is optional and curated.

Honest readiness. The server is real and it now ships two backends: the zero-config demo, and the Xero accounting adapter that posts a genuine balancing ManualJournal. The remaining gap is live credentials and a real-org shakedown (multi-currency, tracking categories, real lock dates): the xero backend runs on a mock transport until XERO_ACCESS_TOKEN + XERO_TENANT_ID are supplied. Publishing now is legitimate as a reference governance server with a real (mock-by-default) adapter; a "verified against a live org" claim needs those creds and a design partner first.

MIT licensed. Part of Conduit.

推荐服务器

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 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

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

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

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

官方
精选
Python
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 模型以安全和受控的方式获取实时的网络信息。

官方
精选