Skip to main content
Glama
ayushshah31

Claude FileMaker MCP Server

by ayushshah31

Claude FileMaker MCP Server

An MCP server that connects Claude to FileMaker databases via the Data API. Query records, explore layouts, run scripts, and manage data using natural language.

Features

  • Query, create, update, and delete records

  • Explore database layouts and field definitions

  • Run FileMaker scripts with parameters

  • Multi-database support

  • Session caching for performance

  • Self-signed SSL certificate support

Related MCP server: Salesforce MCP Server

Quick Install (Claude Code CLI)

One command to add the FileMaker server to all your Claude Code projects:

claude mcp add -s user \
  filemaker \
  "npx -y github:ayushshah31/Claude-Filemaker-Mcp" \
  -e FM_PROTOCOL=https \
  -e FM_API_VERSION=v1 \
  -e FM_SSL_VERIFY=false \
  -e NODE_TLS_REJECT_UNAUTHORIZED=0 \
  -e FM_SERVER_MYDB=your-filemaker-server.com \
  -e FM_DATABASE_MYDB=YourDatabase \
  -e FM_ACCOUNT_MYDB=your_username \
  -e FM_PASSWORD_MYDB=your_password

Replace the MYDB suffix and values with your own. The suffix is a database identifier -- it can be anything, but must match across all four env vars (FM_SERVER_, FM_DATABASE_, FM_ACCOUNT_, FM_PASSWORD_).

Then restart Claude Code. Run /mcp inside a session to verify the server is connected.

Manual Install (from source)

Prerequisites

  • Node.js 18 or higher

  • FileMaker Server with Data API enabled

  • A FileMaker account with the fmrest extended privilege enabled

Step 1: Clone and install

git clone https://github.com/ayushshah31/Claude-Filemaker-Mcp.git
cd Claude-Filemaker-Mcp
npm install

Step 2: Register the server

Claude Code (CLI) -- works on Linux, macOS, and Windows:

claude mcp add -s user \
  filemaker \
  "node /absolute/path/to/Claude-Filemaker-Mcp/server.js" \
  -e FM_PROTOCOL=https \
  -e FM_API_VERSION=v1 \
  -e FM_SSL_VERIFY=false \
  -e NODE_TLS_REJECT_UNAUTHORIZED=0 \
  -e FM_SERVER_MYDB=your-filemaker-server.com \
  -e FM_DATABASE_MYDB=YourDatabase \
  -e FM_ACCOUNT_MYDB=your_username \
  -e FM_PASSWORD_MYDB=your_password

Claude Desktop:

Go to Settings > Developers > Edit Config to open claude_desktop_config.json and add:

{
  "mcpServers": {
    "filemaker": {
      "command": "node",
      "args": ["/absolute/path/to/Claude-Filemaker-Mcp/server.js"],
      "env": {
        "FM_PROTOCOL": "https",
        "FM_API_VERSION": "v1",
        "FM_SSL_VERIFY": "false",
        "NODE_TLS_REJECT_UNAUTHORIZED": "0",
        "FM_SERVER_MYDB": "your-filemaker-server.com",
        "FM_DATABASE_MYDB": "YourDatabase",
        "FM_ACCOUNT_MYDB": "your_username",
        "FM_PASSWORD_MYDB": "your_password"
      }
    }
  }
}

Windows users: Use backslashes in the path, e.g. "C:\\Users\\you\\Claude-Filemaker-Mcp\\server.js"

Step 3: Restart and test

Restart Claude Code or Claude Desktop, then try:

  • "What layouts are available in my FileMaker database?"

  • "Show me the first 10 records from PatientList"

  • "What scripts are available?"

Multiple Databases

Add more databases by using different suffixes in your env vars:

FM_SERVER_PROD=prod-server.com
FM_DATABASE_PROD=Production
FM_ACCOUNT_PROD=api_user
FM_PASSWORD_PROD=prod_password

FM_SERVER_DEV=dev-server.com
FM_DATABASE_DEV=Development
FM_ACCOUNT_DEV=dev_user
FM_PASSWORD_DEV=dev_password

Available Tools

Tool

Description

fm_list_databases

List all configured databases

fm_test_connection

Test connection to a database

fm_get_metadata

Get all layouts in a database

fm_get_layout_metadata

Get fields and details for a specific layout

fm_query_records

Query records with filtering, sorting, and pagination

fm_create_record

Create a new record

fm_update_record

Update an existing record

fm_delete_record

Delete a record

fm_get_scripts

List all available scripts

fm_run_script

Execute a FileMaker script with optional parameters

fm_clear_cache

Clear data, session, or all caches

SSL Configuration

Setting

Description

FM_SSL_VERIFY=false + NODE_TLS_REJECT_UNAUTHORIZED=0

Accept self-signed certificates (development)

FM_SSL_VERIFY=true + NODE_TLS_REJECT_UNAUTHORIZED=1

Require valid certificates (production)

Troubleshooting

Tools show up but return empty results

  • Make sure NODE_TLS_REJECT_UNAUTHORIZED=0 is set if using a self-signed certificate

  • Verify the FileMaker account has the fmrest extended privilege enabled

"No valid FileMaker database configurations found"

  • Check that all four env vars (FM_SERVER_, FM_DATABASE_, FM_ACCOUNT_, FM_PASSWORD_) use the same suffix

  • Make sure the values are not empty

Connection test works but data calls fail

  • Clear the cache: ask Claude to "clear the FileMaker cache"

  • Restart Claude Code / Claude Desktop

Server not showing in /mcp

  • Run claude mcp list to check registration

  • Verify the path to server.js is absolute

  • Make sure npm install completed successfully

  • Check that Node.js 18+ is installed: node --version

FileMaker Server Requirements

Your FileMaker Server account needs:

  • Data API access enabled on the server

  • An account with the fmrest extended privilege

  • Appropriate privilege set for the operations you need (read-only for queries, full access for create/update/delete)

License

MIT

Available Tools

11 tools
fm_clear_cacheC

Clear cached data

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesType of cache to clear

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full behavioral burden. 'Clear cached data' implies a destructive or refresh action, but the description does not state whether clearing is reversible, what happens to active sessions, performance impacts, or required permissions. This is a significant gap for a mutation-style tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely short and front-loaded, but it is a bare fragment that omits necessary context. It is concise to the point of being under-specified rather than optimally structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and only a minimal three-word description, the definition is incomplete for a tool that clears cache. It does not explain the types of cache available (beyond the enum name), when clearing is safe, or what the result of the operation is.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single 'type' parameter has an enum with a clear schema description. The tool description adds no additional parameter meaning beyond what the schema already provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb (clear) and resource (cached data), so the basic action is unambiguous. However, it does not specify the scope or kind of cache beyond the parameter enum, nor does it differentiate from any sibling (none of which deal with caches).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool, when not to use it, or what alternatives exist. An agent must guess whether clearing cache is appropriate or what side effects it may have.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fm_create_recordC

Create a new record

ParametersJSON Schema
NameRequiredDescriptionDefault
layoutYesLayout name
databaseYesDatabase identifier
fieldDataYesField data for the new record

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full burden of behavioral disclosure. It only states that a record is created, with no mention of persistence, side effects, permissions, required context, or return behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence with no unnecessary words. While it is highly concise, it is also thin enough that it provides little beyond the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description leaves out meaningful context such as how fieldData should be shaped, what happens after creation, and any error conditions. The schema covers parameter names but not usage context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already fully documented. The description adds no additional meaning about database, layout, or fieldData beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('Create a new record'), making the basic intent clear. It does not explicitly distinguish itself from sibling CRUD tools beyond the verb itself, but the action is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus fm_update_record or fm_delete_record. The intended usage must be inferred entirely from the tool name and the create verb.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fm_delete_recordC

Delete a record

ParametersJSON Schema
NameRequiredDescriptionDefault
layoutYesLayout name
databaseYesDatabase identifier
recordIdYesFileMaker record ID

TDQS

C2.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full responsibility for disclosing behavior. It states 'delete' but omits whether deletion is permanent, whether it requires special permissions, what side effects occur, or what the response/error behavior is. For a destructive operation this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only three words, which is under-specification rather than effective conciseness. It omits critical context about the operation's effects, preconditions, and outcome, so the brevity does not serve the agent well.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has three required parameters, no output schema, and no annotations, yet the description provides no additional context about deletion behavior, success/failure responses, or relation to sibling tools. A destructive tool with this profile needs much more contextual disclosure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with all three parameters clearly described as layout name, database identifier, and FileMaker record ID. The description itself adds no parameter-level meaning, but the baseline of 3 applies because the schema already does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Delete a record' simply restates the tool name fm_delete_record. It identifies the action and object but adds no detail about the target system, scope, or behavior, making it essentially a tautology.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as fm_update_record or fm_query_records. No exclusions, prerequisites, or context for deletion are provided, leaving the agent to infer usage from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fm_get_layout_metadataC

Get detailed metadata for a specific layout

ParametersJSON Schema
NameRequiredDescriptionDefault
layoutYesLayout name
databaseYesDatabase identifier

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure, but it only says 'Get detailed metadata.' It does not mention whether the operation is read-only, what the output looks like, whether it depends on an existing connection, or how errors are surfaced.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no filler, and it front-loads the core action and object. It is under-specified in behavioral terms, but as pure conciseness it is well-formed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema and annotations, plus the existence of an overlapping sibling named fm_get_metadata, this description is too sparse. It does not explain what metadata is returned, how this tool relates to fm_get_metadata, or any preconditions for successful use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the description does not need to repeat parameter details. However, the schema descriptions are terse ('Layout name', 'Database identifier'), and the description adds no extra semantic context about how the parameters relate or affect the result.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action ('Get') and a specific resource ('detailed metadata for a specific layout'), which makes the basic purpose obvious. It does not explicitly distinguish itself from the similarly named sibling fm_get_metadata, so it stops short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus fm_get_metadata, fm_get_scripts, or other siblings. There are no prerequisites, exclusions, or alternative-selection hints, leaving the agent to infer usage solely from the generic purpose sentence.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fm_get_metadataB

Get database metadata (layouts/tables)

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseYesDatabase identifier

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full burden of behavioral disclosure. It only says 'Get', implying a read-only operation, but does not state whether it hits the live system, returns cached data (relevant given the fm_clear_cache sibling), or any side effects. For a metadata fetch, basic read-only intent is implied but not explicit, and no further context is provided.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with a clarifying parenthetical, front-loading the core action and scope. There is no fluff or redundancy—every word earns its place. This is appropriately concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with a single parameter and no output schema, the description is mostly adequate but lacks key context: it does not differentiate from the closely related fm_get_layout_metadata, and it does not describe the return structure. Given the sibling list, an agent could easily confuse this tool with the layout-specific variant, and without an output schema, some indication of the response shape would be beneficial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides full coverage for the single parameter 'database' with an enum and description 'Database identifier'. The tool description does not add any meaning about the parameter beyond what the schema already states. According to the rubric, with high schema coverage, the baseline is 3, and the description offers no extra semantic value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Get database metadata (layouts/tables)' uses a specific verb (Get) and a clear resource (database metadata) with a parenthetical clarifying that it covers layouts and tables. It distinguishes itself from siblings like fm_get_layout_metadata (focused on layout metadata) and fm_list_databases (lists databases). This is precise and non-tautological.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus its alternatives. It does not mention fm_get_layout_metadata for layout-specific queries, nor does it indicate any prerequisites or exclusions. The agent must infer usage solely from the generic name and the phrasing of the tool, which is inadequate given the overlapping sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fm_get_scriptsC

Get list of available scripts

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseYesDatabase identifier

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavior. It implies a read operation but doesn't state that explicitly, nor does it mention scope (database-specific) or any restrictions. Lacks details on authentication requirements or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single short sentence, no redundancy, front-loaded with the core action. Perfectly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description doesn't explain the return format (list of script names? IDs?). It also doesn't mention that 'database' is required, though schema covers that. The tool is simple but lacks clarity on what an agent should do with the results, especially for chaining with fm_run_script.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (the 'database' parameter is fully described with enum and description). The tool description adds no additional parameter insights, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb (Get) and resource (list of available scripts). It's distinct from siblings like fm_run_script (which executes scripts) and fm_list_databases (which lists databases), though it doesn't explicitly name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool compared to alternatives like fm_get_metadata or fm_run_script. The description simply states what it does without context on prerequisites or typical usage flow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fm_list_databasesB

List all configured FileMaker databases

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure, and it says nothing about side effects, permissions, or connection prerequisites. It does not even confirm the implied read-only nature of 'List'. For a tool with zero annotation coverage this is a notable gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One efficient sentence with the verb and resource front-loaded and no wasted words. It is terse to the point of under-specification, but nothing is padded or buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter list tool the statement of intent is sufficient to invoke, but with no output schema the description never indicates what a database entry looks like (name, ID, path) or how many to expect. Minimal but adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, which is the baseline-4 case. There is nothing for the description to clarify beyond the name of the resource being listed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('List') and resource ('configured FileMaker databases'), making the operation legible at a glance. It is clearly distinct in subject matter from record-oriented siblings like fm_query_records, though it never explicitly contrasts itself with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to call this tool versus alternatives such as fm_get_metadata or fm_test_connection, nor any stated precondition or follow-up. The agent must infer that this is a discovery call.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fm_query_recordsB

Query records with advanced filtering and sorting

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort array
limitNoMax records to return
queryNoFind requests array
layoutYesLayout name
offsetNoRecords to skip
databaseYesDatabase identifier

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It adds little beyond the tool name: 'Query records with advanced filtering and sorting' does not explain return behavior, pagination, read-only guarantees, or how the query array is interpreted, leaving important behavior implicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no wasted words. It is appropriately short, though 'advanced' is somewhat filler and adds little concrete meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is too thin for a tool with six parameters, no annotations, and no output schema. The most important parameter, query, is an open object with only 'Find requests array' as schema documentation, and the description does not clarify how to construct valid query objects or what the returned records look like.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does not meaningfully refine parameter meanings; 'advanced filtering and sorting' only loosely maps to the query and sort parameters without explaining their structure.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a clear verb-resource pair: 'Query records' with filtering and sorting. It distinguishes itself from the CRUD, metadata, and script siblings because it is the only one focused on reading records with filter/sort behavior, though 'advanced' is vague.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool is for retrieving records rather than creating, updating, deleting, or inspecting metadata. However, it gives no explicit when-to-use or when-not-to-use guidance and does not reference any alternative tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fm_run_scriptD

Execute a FileMaker script

ParametersJSON Schema
NameRequiredDescriptionDefault
layoutYesLayout context
scriptYesScript name
databaseYesDatabase identifier
parameterNoScript parameter

TDQS

D1.9/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states 'Execute a FileMaker script' – it does not disclose whether execution may mutate data, what permissions are required, what happens on success or failure, or whether any return value is produced. This is a severe gap for a script executor that likely has side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is concise, but it is under-specified rather than appropriately sized. It does not front-load any key information or elaborate on the action. It earns its place only as a minimal restatement; there is no additional content that aids understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 4 parameters (3 required), no output schema, and no annotations. The description does not explain what the tool returns, how the parameters interact, or any side effects. For a script execution tool, this is completely inadequate – an agent cannot predict behavior or results from the description alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds no meaning beyond the schema's own terse parameter descriptions (e.g., 'Layout context', 'Script parameter'). Since it does not clarify or enrich these, it remains at baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Execute a FileMaker script' essentially restates the tool name 'fm_run_script' – 'run' and 'execute' are synonyms, and 'script' is already in the name. It adds no specificity about what execution entails (e.g., runs in a specific database/layout, passes a parameter) and does not differentiate from siblings like fm_get_scripts, which also deals with scripts. It is a tautology.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. There is no mention of prerequisites (e.g., needing to know script names, which could be obtained via fm_get_scripts), no conditions for when it should be used, and no exclusions. An agent receives no help in selecting this tool over the other FileMaker tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fm_test_connectionB

Test connection to a FileMaker database

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseYesDatabase identifier to test

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states only the action, not whether the test is read-only, what it returns on success or failure, whether authentication/session state changes, or whether it has side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler, and the main action is front-loaded. It is appropriately sized for a trivial one-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one enum parameter and no output schema, the description plus schema provides enough to make the call. A minor gap is the absence of any indication of what a successful test returns, but this is not critical for such a straightforward operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%: the single parameter is fully documented with a type, enum, and description. The description adds no further parameter meaning, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('test connection') and resource ('FileMaker database'), and this is readily distinguishable from sibling record/query/metadata operations. However, it does not elaborate on what 'test' entails or explicitly differentiate from fm_list_databases or fm_get_metadata.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives, no mention of preconditions, and no suggestion to run it before other operations. The agent gets no context about appropriate usage scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fm_update_recordC

Update an existing record

ParametersJSON Schema
NameRequiredDescriptionDefault
layoutYesLayout name
databaseYesDatabase identifier
recordIdYesFileMaker record ID
fieldDataYesField data to update

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only restates the operation without explaining whether the update is partial or full replacement, whether the record must already exist, what permissions are needed, or what the response contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single clear sentence with no redundant words, and the core action is front-loaded. It is appropriately sized, though it could be slightly more informative without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description is too thin for a mutating operation. It does not clarify crucial behavior such as whether unspecified fields are cleared, what happens if the record ID is invalid, or what the tool returns on success or failure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% – each parameter has a text description (e.g., 'Field data to update', 'FileMaker record ID'). The description itself adds no extra parameter semantics, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Update an existing record' states a specific verb (update) and resource (record), and the distinction from sibling create/delete tools is clear. However, it does not name the domain or explicitly differentiate from alternatives beyond the verb, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus create_record, delete_record, or query_records. The word 'existing' implies it is not for new records, but there is no explicit statement of prerequisites, alternatives, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 11 tool updatesv1.0.0
    • First observedfm_clear_cache
    • First observedfm_create_record
    • First observedfm_delete_record
    • First observedfm_get_layout_metadata
    • First observedfm_get_metadata
    • First observedfm_get_scripts
    • First observedfm_list_databases
    • First observedfm_query_records
    • First observedfm_run_script
    • First observedfm_test_connection
    • First observedfm_update_record

TDQS

B3.1/5.0

Scored across 11 tools

Disambiguation5/5

Each tool targets a distinct operation: listing databases, testing connections, fetching metadata at database or layout level, querying, creating/updating/deleting records, running scripts, listing scripts, and clearing cache. No two tools have overlapping purposes.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with the fm_ prefix, e.g., list_databases, get_metadata, query_records, create_record, run_script. Even compound names like get_layout_metadata fit the pattern.

Tool Count5/5

11 tools is well-scoped for a FileMaker MCP server, covering connection, metadata, CRUD, scripting, and cache management without redundancy or bloat.

Completeness4/5

The tool surface covers core CRUD, metadata retrieval, script execution, and connection testing. A minor gap is the absence of a dedicated 'get record by ID' but query_records can handle that via filters, so no critical dead ends.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    An MCP server implementation that integrates Claude with Salesforce, enabling natural language interactions with Salesforce data and metadata for querying, modifying, and managing objects and records.
    15
    1,582 npm
    168
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP server for FileMaker Server OData 4.01 API integration, enabling AI assistants to discover databases, perform CRUD operations, and manage connections.
    178 npm
    12
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    MCP server for Claude that connects to MySQL, MariaDB, and SQLite databases. Query your databases using natural language.
    3
    MIT