MCP_RCC_SP
Enables interaction with FileMaker databases via the Model Context Protocol, providing dynamic script discovery, full CRUD operations, and OData query capabilities with flexible authentication.
README
FileMaker MCP Server - RCC Starting Point
A Model Context Protocol (MCP) server for FileMaker databases, providing comprehensive database access through dynamic script discovery, full CRUD operations, and OData query capabilities with flexible authentication methods.
Features
🎯 Core Capabilities
- Dynamic Script Discovery: Automatically discovers and exposes FileMaker scripts using the GetToolList pattern
- Full CRUD Operations: Create, Read, Update, Delete records across any layout
- OData Support: Advanced querying with filtering, sorting, and pagination
- Flexible Authentication: Supports API key, basic auth, and Otto proxy authentication
- Multi-Database Ready: Configurable for any FileMaker server deployment
🔧 Key Advantages
- Graceful Degradation: Works with or without GetToolList script - CRUD always available
- TypeScript First: Full type safety and modern development experience
- Caching & Performance: Intelligent caching for sessions, data, and script discovery
- Production Ready: Comprehensive error handling, logging, and configuration validation
- Web App Ready: Designed for integration with web applications and chatbots
Quick Start
Prerequisites
- Node.js 18+
- Access to a FileMaker Server with Data API enabled
- Valid authentication credentials (API key, username/password, or Otto proxy)
Installation
# Install dependencies
npm install
# Copy and configure environment variables
cp .env.example .env
# Edit .env with your FileMaker server details
# Build and start
npm run build
npm start
Configuration
The MCP server is configured via environment variables in the .env file:
# Example Database Configuration
FM_NAME=YourDatabase
FM_HOST=https://your-filemaker-server.com
FM_DATABASE=YourDatabaseName
# Authentication (choose one method)
FM_AUTH_TYPE=basic
FM_USERNAME=your_username
FM_PASSWORD=your_password
# Or use API key authentication
# FM_AUTH_TYPE=apikey
# FM_API_KEY=your-api-key-here
# Layouts and Features
FM_LAYOUTS=API_Client,API_Project,API_Task
FM_DEFAULT_LAYOUT=API_Client
FM_ENABLE_SCRIPT_DISCOVERY=true
FM_ENABLE_ODATA=true
FM_DEFAULT_API=data_api
# Logging and MCP Settings
LOG_LEVEL=info
MCP_CLEAR_CACHE_ON_STARTUP=true
GetToolList Script Implementation
For dynamic script discovery, implement this FileMaker script named "GetToolList":
# GetToolList Script (FileMaker)
# Purpose: Return JSON describing available scripts for MCP
Exit Script [
Text Result:
"{
\"tools\": [
{
\"name\": \"send_email\",
\"description\": \"Send email notification to client\",
\"parameters\": [
{\"name\": \"client_id\", \"type\": \"string\", \"required\": true, \"description\": \"Client record ID\"},
{\"name\": \"message\", \"type\": \"string\", \"required\": true, \"description\": \"Email message content\"},
{\"name\": \"urgent\", \"type\": \"boolean\", \"required\": false, \"description\": \"Mark as urgent\"}
]
},
{
\"name\": \"generate_report\",
\"description\": \"Generate project status report\",
\"parameters\": [
{\"name\": \"project_id\", \"type\": \"string\", \"required\": true, \"description\": \"Project ID\"},
{\"name\": \"include_financials\", \"type\": \"boolean\", \"required\": false, \"description\": \"Include financial data\"}
]
}
]
}"
]
Usage Examples
With Claude Desktop
Add to your Claude Desktop MCP settings:
{
"mcpServers": {
"filemaker-enhanced": {
"command": "node",
"args": ["/path/to/MCP-Claude-FileMaker-Enhanced/dist/index.js"],
"env": {
"MCP_CONFIG_FILE": "/path/to/config/databases.json"
}
}
}
}
Available MCP Tools
The server automatically provides these tools to Claude:
CRUD Operations
fm_find_records- Search and retrieve recordsfm_get_record- Get single record by IDfm_create_record- Create new recordfm_update_record- Update existing recordfm_delete_record- Delete record
OData Queries (if enabled)
fm_odata_query- Advanced filtering and sortingfm_odata_metadata- Get database schema info
Dynamic Scripts (via GetToolList)
- Custom script tools based on your GetToolList implementation
- Parameters automatically validated and typed
Management Tools
fm_list_layouts- Get available layoutsfm_get_database_info- Database metadatafm_health_check- Connection status
Advanced Configuration
Authentication Methods
# Basic Authentication
FM_AUTH_TYPE=basic
FM_USERNAME=username
FM_PASSWORD=password
# API Key Authentication
FM_AUTH_TYPE=apikey
FM_API_KEY=your-api-key
# Otto Proxy Authentication
FM_AUTH_TYPE=otto
FM_OTTO_URL=https://otto-proxy.com
Caching Configuration
# Session cache (13 minutes default)
SESSION_TTL=780
# Data cache (14 minutes default)
DATA_TTL=840
# Script discovery cache (30 minutes default)
SCRIPT_TTL=1800
Logging Options
# Log level: error, warn, info, debug
LOG_LEVEL=info
# Optional log file (defaults to console)
LOG_FILE=/var/log/filemaker-mcp.log
Architecture Overview
┌─────────────────────────────────────────────────────────────┐
│ Enhanced FileMaker MCP │
├─────────────────────────────────────────────────────────────┤
│ Claude Desktop ←→ MCP Protocol ←→ FileMaker Server │
├─────────────────────────────────────────────────────────────┤
│ Components │
│ • ConfigManager - Multi-database configuration │
│ • AuthManager - Flexible authentication │
│ • DataClient - CRUD operations with caching │
│ • ODataClient - Advanced querying capabilities │
│ • ScriptDiscovery - Dynamic tool generation │
│ • Logger - Comprehensive logging │
└─────────────────────────────────────────────────────────────┘
Key Design Decisions
- GetToolList Pattern: Curated script exposure with graceful fallback
- TypeScript First: Full type safety throughout the codebase
- Caching Strategy: Multi-level caching for optimal performance
- Error Resilience: Comprehensive error handling and recovery
- Configuration Flexibility: Support for simple and complex deployments
Troubleshooting
Common Issues
Connection Errors
# Check FileMaker Server status
curl -k https://your-server.com/fmi/data/v1/databases
# Verify credentials
npm run test -- --grep "authentication"
Script Discovery Issues
# Test GetToolList script directly in FileMaker
# Should return valid JSON with tools array
# Check script discovery cache
LOG_LEVEL=debug npm start
Performance Issues
# Enable query logging
DEBUG_FILEMAKER_QUERIES=true npm start
# Check cache hit rates
LOG_LEVEL=info npm start | grep "cache"
Development
Project Structure
src/
├── core/
│ ├── auth.ts # Authentication management
│ ├── config.ts # Configuration loading/validation
│ ├── data-client.ts # FileMaker Data API client
│ └── logger.ts # Logging utilities
├── adapters/
│ ├── odata.ts # OData query adapter
│ └── script-discovery.ts # Dynamic script discovery
├── types/
│ └── filemaker.ts # TypeScript type definitions
└── index.ts # Main MCP server
config/
├── databases.json # Multi-database configuration
└── sample-*.json # Configuration examples
docs/
├── getToolList.md # GetToolList implementation guide
└── examples/ # Usage examples and FileMaker scripts
Building and Testing
# Development with hot reload
npm run dev
# Build for production
npm run build
# Run tests
npm test
# Lint and format
npm run lint
npm run format
Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Support
- Documentation: Full docs in the
/docsfolder - Issues: GitHub Issues
- Discussions: GitHub Discussions
Acknowledgments
- Anthropic for the Model Context Protocol specification
- FileMaker Community for FileMaker Data API best practices
- ProofGeist for FileMaker API patterns and inspiration
- Original MCP Contributors for foundational MCP implementation patterns
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。