About Use Acp
Use Acp is an MCP server published by marimo-team in the Developer Tools category: react hooks for connecting to Agent Client Protocol (ACP) servers.
The repository has 69 stars and 10 forks, with the last commit 7 hours ago. Recent commit activity is the strongest signal that reported issues will get attention.
Install
git clone https://github.com/marimo-team/use-acpThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Ask AI
Ask AI about Use Acp
Powered by Claude · Grounded in docs
Security checks
Static checks derived from the repository 6 hours ago. Heuristics on the source, not an audit.
- ✓README presentThe repository ships documentation.
- ✓License declaredUsable under a stated license.
- ✓Tests presentA test suite exists in the repository.
- ✓Dependencies pinnedA lockfile pins dependency versions.
- ✓No dynamic code executionSource scan found no eval, dynamic Function, or shell execution.
- !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.
Releases
README
use-acp
React hooks for Agent Client Protocol (ACP) over WebSockets.
Features
- WebSocket connection management
- Reactive state management
- Notifications timeline for ACP events
- Permission request/response handling
- Full TypeScript support
Installation
npm install use-acp
# or
pnpm add use-acp
Usage
Basic Usage
import { useAcpClient } from 'use-acp';
function App() {
const {
connect,
disconnect,
connectionState,
notifications,
pendingPermission,
resolvePermission,
} = useAcpClient({
wsUrl: 'ws://localhost:8080',
autoConnect: true
});
return (
<div>
<div>Status: {connectionState.status}</div>
<button onClick={connectionState.status === 'connected' ? disconnect : connect}>
{connectionState.status === 'connected' ? 'Disconnect' : 'Connect'}
</button>
{pendingPermission && (
<div>
<h3>Permission Request</h3>
{pendingPermission.options.map((option) => (
<button key={option.optionId} onClick={() => resolvePermission(option)}>
{option.name}
</button>
))}
</div>
)}
<div>Notifications: {notifications.length}</div>
<ul>
{notifications.map((notification) => (
<li key={notification.id}>{JSON.stringify(notification)}</li>
))}
</ul>
</div>
);
}
API Reference
useAcpClient({ wsUrl, autoConnect?, reconnectAttempts?, reconnectDelay? })
Returns: { connect(), disconnect(), connectionState, notifications, clearNotifications(), pendingPermission, resolvePermission(), rejectPermission(), agent }
Utils
import { groupNotifications, mergeToolCalls } from 'use-acp';
// Group notifications by their type
// This helps when displaying notifications in a timeline
const groupedNotifications = groupNotifications(notifications);
// Merge tool calls with the same toolCallId
const mergedToolCalls = mergeToolCalls(toolCalls);
Development
pnpm install
pnpm test # run tests
pnpm build # build library
pnpm dev # run demo, http://localhost:5173
Example Agents
# Gemini ACP
npx -y stdio-to-ws "npx @google/gemini-cli --experimental-acp"
# Claude Code ACP
npx -y stdio-to-ws "npx @zed-industries/claude-code-acp"
# Codex ACP
npx -y stdio-to-ws "npx @zed-industries/codex-acp"
License
Apache 2.0
README fetched from the repository 6 hours ago. The original is authoritative.