Files
leexi-mcp-server/README.md
T

96 lines
3.1 KiB
Markdown

# leexi-mcp-server
Read-only MCP server for the [Leexi public API](https://docs.public-api.leexi.ai/reference/public-api). Provides access to meeting notes, transcripts, action items, and call metadata.
## Tools
| Tool | Description |
|------|-------------|
| `leexi_list_users` | List workspace users (name, email, UUID, team) |
| `leexi_list_teams` | List workspace teams |
| `leexi_list_calls` | List calls/meetings with filtering (date, owner, source, participant, customer) |
| `leexi_get_call` | Full call details: chapters, tasks, topics, speakers, AI summaries, transcript |
| `leexi_list_meeting_events` | List scheduled meeting events |
| `leexi_get_meeting_event` | Meeting event details with associated call recordings |
All tools support `response_format` parameter: `'markdown'` (default, human-readable) or `'json'` (structured data).
## Setup
### 1. Get API credentials
Generate API keys at https://app.leexi.ai/settings/api_keys
### 2. Build
```bash
cd ~/Workspace/AI/leexi-mcp-server
npm install
npm run build
```
### 3. Configure in OpenCode
Add to `~/.config/opencode/config.json` (or the relevant MCP config):
```json
{
"mcpServers": {
"leexi": {
"command": "node",
"args": ["/home/ssavinel/Workspace/AI/leexi-mcp-server/dist/index.js"],
"env": {
"LEEXI_KEY_ID": "<your-key-id>",
"LEEXI_KEY_SECRET": "<your-key-secret>"
}
}
}
}
```
Or for Claude Code (`~/.claude/claude_desktop_config.json`):
```json
{
"mcpServers": {
"leexi": {
"command": "node",
"args": ["/home/ssavinel/Workspace/AI/leexi-mcp-server/dist/index.js"],
"env": {
"LEEXI_KEY_ID": "<your-key-id>",
"LEEXI_KEY_SECRET": "<your-key-secret>"
}
}
}
}
```
### 4. Test with MCP Inspector (optional)
```bash
LEEXI_KEY_ID=<key> LEEXI_KEY_SECRET=<secret> npx @modelcontextprotocol/inspector node dist/index.js
```
## Data quality notes
- **Leexi AI summaries**: Machine-generated and may be imprecise. The `leexi_get_call` markdown output labels these clearly and suggests using chapters/transcript instead.
- **Speaker names**: In room-based calls, Leexi may use the room/device name as a speaker, representing multiple people. The tool flags speakers without email/phone as potentially being room names.
- **Multi-language transcripts**: Calls mixing languages may have transcript artifacts. The raw data is passed through for the consuming LLM to interpret.
## Architecture
```
src/
├── index.ts # Entry point, McpServer + stdio transport
├── types.ts # TypeScript interfaces for Leexi API responses
├── constants.ts # API base URL, character limit
├── services/
│ └── leexi-client.ts # Shared HTTP client (Basic auth, error handling)
├── schemas/
│ └── input-schemas.ts # Zod input validation for all tools
└── tools/
├── users.ts # leexi_list_users, leexi_list_teams
├── calls.ts # leexi_list_calls, leexi_get_call
└── meetings.ts # leexi_list_meeting_events, leexi_get_meeting_event
```