#!/usr/bin/env node
/**
* Feishu MCP Server
*
* A Model Context Protocol server for Feishu document integration.
* Supports reading, creating, and editing Feishu documents with AI assistants.
*
* Features:
* - Read document content (Markdown or JSON format)
* - Create new documents with content
* - Append/update document content
* - Insert Mermaid diagrams
* - List and manage document blocks
*
* Usage:
* node dist/index.js
*
* Environment Variables:
* FEISHU_APP_ID - Feishu app ID
* FEISHU_APP_SECRET - Feishu app secret
*/
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
import { registerDocumentTools } from './tools/document.js'
import { registerBlockTools } from './tools/block.js'
import { registerTableTools } from './tools/table.js'
import { registerSpreadsheetTools } from './tools/spreadsheet.js'
import { registerBitableTools } from './tools/bitable.js'
import { registerMediaTools } from './tools/media.js'
const server = new McpServer({
name: 'feishu-mcp-server',
version: '1.0.0',
})
// Register all tools
registerDocumentTools(server)
registerBlockTools(server)
registerTableTools(server)
registerSpreadsheetTools(server)
registerBitableTools(server)
registerMediaTools(server)
// Start server
async function main() {
const transport = new StdioServerTransport()
await server.connect(transport)
console.error('Feishu MCP Server running via stdio')
console.error('Tools: feishu_read_document, feishu_create_document, feishu_append_content, feishu_update_content, feishu_get_document_info, feishu_insert_diagram, feishu_insert_table, feishu_list_blocks, feishu_delete_block, feishu_create_spreadsheet, feishu_write_spreadsheet, feishu_read_spreadsheet, feishu_create_bitable, feishu_add_bitable_records, feishu_read_bitable, feishu_insert_callout, feishu_insert_image')
}
main().catch((error) => {
console.error('Failed to start Feishu MCP Server:', error)
process.exit(1)
})