Features: - Direct conversations (1-to-1) auto-created and permanent - Group conversations with leave/archive support - Real-time messaging via long-polling - Offline notifications via CLAUDE.md - Auto-registration on MCP startup Architecture: - Broker: Express HTTP server + SQLite - MCP Partner: Modular tools (one file per tool) - Full documentation and API reference
79 lines
1.6 KiB
Markdown
79 lines
1.6 KiB
Markdown
# Contributing to MCP Claude Duo
|
|
|
|
Thanks for your interest in contributing!
|
|
|
|
## Getting Started
|
|
|
|
1. Fork the repository
|
|
2. Clone your fork
|
|
3. Install dependencies: `npm install`
|
|
4. Start the broker: `npm run broker`
|
|
|
|
## Development
|
|
|
|
### Project Structure
|
|
|
|
```
|
|
mcp-claude-duo/
|
|
├── broker/ # HTTP server + SQLite
|
|
│ ├── index.js # Express routes
|
|
│ └── db.js # Database layer
|
|
├── mcp-partner/ # MCP server for Claude Code
|
|
│ ├── index.js # Entry point
|
|
│ ├── shared.js # Shared utilities
|
|
│ └── tools/ # One file per MCP tool
|
|
└── docs/ # Documentation
|
|
```
|
|
|
|
### Adding a New Tool
|
|
|
|
1. Create a new file in `mcp-partner/tools/`
|
|
2. Export `definition` (tool schema) and `handler` (async function)
|
|
3. Import and register in `mcp-partner/index.js`
|
|
|
|
Example:
|
|
```javascript
|
|
import { brokerFetch, myId, ensureRegistered } from "../shared.js";
|
|
|
|
export const definition = {
|
|
name: "my_tool",
|
|
description: "Description of my tool",
|
|
inputSchema: {
|
|
type: "object",
|
|
properties: {
|
|
param: { type: "string", description: "A parameter" }
|
|
},
|
|
required: ["param"]
|
|
}
|
|
};
|
|
|
|
export async function handler(args) {
|
|
await ensureRegistered();
|
|
// Your logic here
|
|
return {
|
|
content: [{ type: "text", text: "Result" }]
|
|
};
|
|
}
|
|
```
|
|
|
|
### Testing
|
|
|
|
```bash
|
|
# Start broker
|
|
npm run broker
|
|
|
|
# Test with curl
|
|
curl http://localhost:3210/health
|
|
```
|
|
|
|
## Pull Requests
|
|
|
|
1. Create a feature branch
|
|
2. Make your changes
|
|
3. Test locally
|
|
4. Submit a PR with a clear description
|
|
|
|
## Issues
|
|
|
|
Feel free to open issues for bugs, feature requests, or questions.
|