Initial commit: Leexi MCP server (read-only, 6 tools)
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
# 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
|
||||
```
|
||||
Reference in New Issue
Block a user