The FlexPro Model Context Protocol (MCP) server provides the FlexPro online help—specifically the FPScript function reference—as well as a curated collection of frequently asked questions as a searchable knowledge base for AI agents. It is a remote MCP server and communicates via "streamable HTTP."
Overview
The server makes FlexPro knowledge available to AI agents via the Model Context Protocol. You can ask about FPScript syntax, functions, or concepts using natural language. The server returns the relevant documentation excerpts as context. This allows the knowledge learned by the AI to be linked to FlexPro-specific information and helps you as you work with FlexPro and create formulas using the FPScript programming language.
In addition to questions about FlexPro Help and the function reference, the server searches a collection of frequently asked questions about FlexPro. These entries address real-world scenarios that are not covered—or are only covered in scattered sections—in the product documentation—such as installation and licensing issues or questions about performance. You can identify these results by the source notation "FAQ" followed by the topic category.
Note The server does not have access to FlexPro project databases and cannot modify data in FlexPro. It searches exclusively through a static documentation repository maintained by Weisang and does not process any customer or measurement data.
Tools
The server provides two tools:
Tool |
Purpose |
Access Type |
|---|---|---|
search_docs |
Searches the FlexPro Help, the FPScript Function Reference, and the FAQ for relevant text passages and returns the results along with their sources. Each result is also individually accessible, so that an agent can reload a document in its entirety if necessary.
Parameter:
•Search text — the search query in English. The first 254 tokens are processed; longer requests are truncated, and the server will notify you of this. •Search scope — both (default), functions only, or Help/FAQ only. •Maximum number of hits — 1 to 10 per searched range; default is 3. Values outside this range are set to the limit. •Interface Language — the language of the returned interface terms (English, German, French, Spanish, Japanese, and Simplified Chinese) •Frequently Searched Surface Terms — a list of English terms for which the assistant requests the official translation, even if they do not appear in the search results at all. This allows it to identify terms that the server cannot provide on its own because they could just as easily be common words—such as "diagram," "database," or "format." Requires a response language; a maximum of 20 terms per query; if there are more, the server will indicate how many were looked up. •Level of detail — complete (default) or just the beginning of each match. The abridged version is useful for quickly skimming through several candidates; the server then points this out and provides a link to the full text. |
Read-only |
get_fpscript_syntax |
Provides a complete list of the ways in which FPScript differs from other programming languages: Operators for concatenation, comparison, exponentiation, and modulus; comment characters; line continuation; block terminators; variable declaration; and index, string, and list notation.
Parameters: None. |
Read-only |
Note FPScript is similar to other programming languages, but it is not based on any of them. Syntax borrowed from another language is the most common reason why AI-generated FPScript code fails to compile—especially when the syntax looks familiar. An assistant should therefore call get_fpscript_syntax once before it writes or modifies FPScript.
The tool does not replace looking up functions: Function names, argument order and constant names still come from search_docs with the "Functions" search scope. It also does not check any code; it only states the rules.
In addition, the server makes the documentation repository, including the FAQ, available as individually retrievable entries (Resources). Some AI applications display these or read from them selectively. This access, too, is read-only.
Note The documentation is indexed internally in English only. Search queries return the most reliable results in English, regardless of the language in which the user is conversing with the assistant. If the assistant answers in a different language, it passes that language on as the interface language: The server then additionally supplies the official names of the interface terms that occur—ribbon paths, commands, dialog titles and buttons—in that language, as far as they are unambiguous enough and in a limited number per response, so that the assistant does not translate them itself and thereby invent names that do not exist in your FlexPro user interface. The assistant can also ask specifically about terms that do not appear in the results; for each of the languages named, the server keeps a far larger glossary than a single response reveals.
Official names are currently available for German, French, Spanish, Japanese, and Simplified Chinese. The names come from the same resource files that FlexPro uses to label its user interface; for a term that is not supplied, the assistant gives the original English name and marks it as such.
Server Responses
Situation |
Response |
|---|---|
The search query does not appear to be in English |
A note that the results may be unsuitable despite looking plausible, together with a request to repeat the search in English |
No result picks up a keyword from the query |
A note that the results are probably unsuitable—usually because of an invented or misremembered function name; a recommendation to search for the functionality instead |
The search query was too long |
A note that only the beginning of it was evaluated, with the recommendation to run several short searches instead of one long one |
No glossary is available for the requested interface language |
A note to use the original English terms unchanged and to mark them as such |
A shortened response was requested |
A note that only the beginning of the document is included for each result, stating how the full text can be loaded |
One of the two halves searched lags clearly behind |
If the function reference and Help/FAQ are searched at the same time and one of the two collections performs clearly worse, the server says so and gives both scores: these results probably do not belong to the question. None of them is removed even so—the assistant is simply not meant to adopt them unchecked. |
The response contains an unusually large amount of text |
Size plus a reference to the shortened level of detail — a note, not a limit |
The question touches on a deviating FPScript notation |
A note on the correct form |
An example in the results uses an incorrect notation—such as a file path with a single instead of a double backslash |
A note on the correct form, together with a warning not to adopt the example unchanged |
The response contains function results |
A reference to retrieving the FPScript notations with get_fpscript_syntax before code is written, together with the two forms most frequently gotten wrong |
One of the two halves searched was unable to respond |
A note that the response contains only the other half and that the search is incomplete—the results supplied remain valid |
Note These notes are addressed to the assistant, not to you—whether it follows them is decided by the model in use. If a response seems unsuitable, this question helps: "Did the server supply a warning, and what did it say?"
Establishing a Connection
•AI applications can be used if they support connecting to an MCP server via "streamable http."
•To do this, you must register the MCP server in your AI application. The setting for this has a different name depending on the AI application—it is usually found under a menu item such as "Connectors," sometimes also "Integrations," "Tools," or "MCP Server." Search for "FlexPro." If you do not find an entry, you can also add an entry of your own with the server address: https://mcp.weisang.com/doc
•Connect — no credentials are required; the connection is available immediately after saving.
•Activate the tools (Tools)—if necessary—and use them in a conversation.
Authentication
The server requires No authentication. It searches only documentation maintained by Weisang, has no access to your FlexPro data and does not create any user-related content. There are therefore neither protected collections that would require a login nor personal settings that would require an identifier.
Tips for Better Answers
•Word your question as specifically as possible (e.g. with function or object names)—the more precise the question, the more targeted the search in the documentation.
•Ask the AI explicitly to look up the syntax before it proposes FPScript code—especially when a formula looks "familiar" because it is reminiscent of another programming language.
•Have it show you where an answer comes from (e.g. function name or help topic)—that makes checking easier.
•Always check AI-generated FPScript code in FlexPro itself—the MCP server supplies documentation only, no execution and no validation.
•If an answer does not fit, point the AI to the errors and ask it to check more carefully. Or ask for a repeat search with different search terms (synonyms, English terms instead of German ones)—the documentation is indexed internally in English only.
•It can happen that you have to remind the AI explicitly to use the MCP server.
•The AI model in use has a considerable influence on the result: The server supplies only the documentation—whether and how specifically it is searched is decided by the model. If the answers are consistently unsatisfactory, a more powerful model is often more effective than a reworded question.
Note How well the interaction with the MCP server works depends largely on the AI model in use. The server provides documentation only—whether a search is performed at all, how aptly the search query is worded, whether the passages found are evaluated correctly and whether the assistant looks up the syntax before writing FPScript code is decided by the model alone. More powerful models use the server far more purposefully. Simpler models tend to look things up less often and to answer from their general prior knowledge instead—and that knowledge does not include the FlexPro-specific conventions. If an answer does not get you any further, it is therefore worth switching to a more powerful model as well as asking a more precise question.
Possible Causes of Errors
Error |
Cause and Remedy |
|---|---|
The AI application reports an error when the MCP server is added |
Check the address for typos—it is https://mcp.weisang.com/doc. A trailing slash does no harm. Make sure you use https (with http no connection is established, and without an error message at that). No credentials are needed; the fields for them stay empty. |
The connection is established, but the AI never uses it |
The tool (Tool) may not be activated in the AI application. Otherwise, request its use explicitly: "Please look that up via the FlexPro documentation server." |
Answers are delayed or break off |
With very many simultaneous requests the server limits the rate and asks for a short wait. Common AI applications repeat the request automatically; otherwise another attempt after a few seconds helps. |
The answer names commands that do not exist in your user interface |
Ask for the original English name. The server supplies official names only for the languages named under "Tools" and not for every term that occurs. |
The answer does not fit in terms of content |
See "Tips for Better Answers"—the most frequent cause is a search query that is too unspecific or not in English. |
The AI reports that the server is overloaded or malfunctioning |
With very many simultaneous requests the server throttles and asks for a short wait. Common AI applications repeat the request automatically. |
A browser-based AI application cannot get through (403 / "Forbidden") |
The server accepts only requests without a browser origin header (Origin). It therefore rejects applications that connect directly from the browser—this is intentional and prevents a third-party website from calling the server in the name of your browser. Use a desktop or server application. |
Examples
Question: "Generate FPScript code for me that searches a signal for invalid values and sets them to the value 0."
Answer:
In FlexPro, "invalid values" are called void values (represented as ?). For signals there are the functions SearchVoidValues (finds the positions) and HasVoidValues (checks whether there are any at all)—this is the way verified by the documentation.
// Sets all invalid (void) values in the Y component of a signal to 0
Arguments Signal
If HasVoidValues(Signal.Y) Then
Signal.Y[SearchVoidValues(Signal.Y)] = 0
End
Return Signal
Explanation:
•HasVoidValues(Signal.Y) checks whether the Y component contains any invalid (void) values at all.
•SearchVoidValues(Signal.Y) returns the index positions of these void values.
•Signal.Y[Positions] = 0 overwrites exactly these positions with 0.
Question: "Explain as concisely as possible what an object network is."
Answer:
In FlexPro, an object network denotes the way in which all objects of a project database (data, analyses, diagrams, documents) are linked with one another instead of existing side by side in isolation.
Example chain: Document → diagram in it → analysis object in the diagram → data set with the raw data on which the analysis is based.
These links create a dynamic network of dependencies: If a data set changes, the effect propagates along the chain all the way to the display. FlexPro also uses this network when updating: It analyzes the object network and updates only the affected objects that are no longer up to date—instead of always recalculating everything.
Question: "How can signals with different units be combined in calculations?"
Answer:
In arithmetic operations FlexPro automatically checks the SI dimension of the units involved:
•Addition/Subtraction: Only possible if the units have the same SI dimension (are compatible). Different but compatible units are converted automatically—e.g. 1 V + 500 mV works directly. Incompatible units (e.g. 1 V + 1 A) produce a runtime error.
•Multiplication/Division: Here the units are combined automatically into a new, derived unit—e.g. 3 N * 2 m → 6 Nm.
If signals have to be brought explicitly to a common unit, there are three ways:
•Unit operator: Unit<mV, ms> Signal converts the Y (and optionally X) component into the specified target unit (which must be compatible).
•ChangeUnit(DataSet, [Unit], [UnitX], [UnitZ]) — function for converting a unit or assigning one for the first time, e.g. ChangeUnit(Signal1, "V").
•AdjustUnit(DataSet, [OtherDataSet]) — practical when two signals are to be used together in a calculation: adapts the unit of DataSet automatically to the unit of OtherDataSet, e.g. AdjustUnit(Signal1, Signal2) + Signal2.
If a signal has no unit, or if the unit is to be removed entirely (e.g. in order to continue calculating without a dimension), you simply set an empty string: ChangeUnit(Signal, "").
Question: "List the exact syntax of the FPScript function I can use to form the absolute value."
Answer:
Absolute
Syntax: Absolute(Number)
Parameter: Number: The real number, complex number or time span for which the absolute value is to be formed. Type: numeric.
Return value: For composite structures (e.g. signals), only the Y component is considered. If Number is real, the result has the same data type; for complex numbers the result is of the corresponding real data type.
Examples:
Absolute(-3.5) → 3.5
Absolute((4.0, 3.0)) → 5.0 // Absolute value of a complex number
Absolute(-'1:30') → '1:30:00' // Absolute value of a time span
Question: "How can the X axis of a diagram be rescaled to a unit other than that of the underlying data, e.g. to display seconds as hours? Please also mention the source."
Answer:
FlexPro carries out the rescaling via the output unit of the axis—not via a manual factor:
•Double-click on the axis.
•In the Properties dialog box of the axis, switch to the Scaling tab.
•Under Unit(s), enter the desired output unit (e.g. h) or choose it from the list.
•Close the dialog box with OK.
FlexPro then converts the display automatically; the data itself remains in seconds.
Prerequisites:
•The Unit Manager must be active (basic settings under File > Options, Unit Manager tab, Unit monitoring there).
•The data sets displayed must carry their correct source unit, and the units of all curves on this axis must be compatible.
So that the new unit is also visible, you can add it to the division labeling: Double-click on the division label, Division Labeling tab, option Add unit to division labeling.
Sources (FlexPro Help/FAQ):
•FAQ > Presentation: "How can the X-axis of a diagram be rescaled to a different unit than the underlying data, e.g. showing seconds as hours?"
•Help: Presenting Data > 2D and 3D Diagrams > Working with Axes > Specifying the Output Unit
•Help: Presenting Data > 2D and 3D Diagrams > Working with Axes > Displaying the Unit in the Axis Division
•Help: Data Management > Unit Manager > Working with the Unit Manager > Setting Up the Unit Manager
Data Processing & Privacy
Only technical access data is logged for the operation of the server—for operational monitoring, error analysis, abuse detection and to improve the service. The IP address is not stored at any time. It serves solely as the input value of a cryptographic hash function whose key changes every 24 hours. The client identifier formed from it makes it possible to assign requests within one day to a session; after that it loses this relation, because the same address yields a different identifier on the following day. Even we cannot infer the original address from the identifier. We store this data for a period of 2 years.
The following are logged: Timestamp of the request, anonymized client identifier (hash value) and user agent, MCP method called and tool name, length of the search query, the indication of whether the query appears to be in English, number of hits, best hit score achieved, duration and success status. Not stored are the content of the search query itself, the IP address in plain text, names, accounts or user profiles.
There is no disclosure to third parties.
In addition, Weisang's general Privacy Statement applies.
Note Even though the content of the search query is not stored: It is transmitted to the server, and to the AI assistant, for processing. Therefore do not include any confidential content, measurement data or customer data in the query—a short, factual description of what you are looking for gives better results anyway.
Terms of Use
By using the MCP server you agree to Weisang's General Terms and Conditions.
Support & Contact
You obtain support via the existing support and download channels at www.weisang.com.