MCP_RCC_SP

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.

Category
访问服务器

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 records
  • fm_get_record - Get single record by ID
  • fm_create_record - Create new record
  • fm_update_record - Update existing record
  • fm_delete_record - Delete record

OData Queries (if enabled)

  • fm_odata_query - Advanced filtering and sorting
  • fm_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 layouts
  • fm_get_database_info - Database metadata
  • fm_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

  1. GetToolList Pattern: Curated script exposure with graceful fallback
  2. TypeScript First: Full type safety throughout the codebase
  3. Caching Strategy: Multi-level caching for optimal performance
  4. Error Resilience: Comprehensive error handling and recovery
  5. 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

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

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

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选