Skip to main content
Glama
tuanknguyen

Workflow MCP Server

by tuanknguyen

Workflow MCP Server

A Python MCP server that guides agents through structured workflows. This server ensures agents follow predefined steps while maintaining flexibility in execution.

Development Approach

Package Management with UV

This project exclusively uses uv for all package management operations. Always use uv commands for:

  • Virtual environment creation: uv venv

  • Package installation: uv pip install

  • Running Python scripts: uv run python script.py

  • Running tests: uv run pytest

  • Running the application: uv run workflow-mcp

UV provides faster, more reliable package management than traditional tools. If you don't have uv installed, follow instructions at https://github.com/astral-sh/uv

Related MCP server: AI Prompt Guide MCP

Installation

Setting up the environment

# Create a virtual environment
uv venv

# Activate the virtual environment
source .venv/bin/activate  # Linux/macOS
# OR
.venv\Scripts\activate     # Windows

# Install the package
uv pip install -e .

# For development with testing tools
uv pip install -e ".[dev]"

Usage

Running the server

# Using the entry point script
uv run workflow-mcp

# Or directly with module
uv run python -m workflow_mcp_server

With SSE instead of stdio:

uv run workflow-mcp --sse --port 8888

Running tests

uv run pytest

Workflow Definition

Create YAML files in the frameworks directory with the following structure:

name: "Simple Workflow"
description: "A linear workflow with basic steps"
version: "1.0"
steps:
  - id: "step1"
    type: "instruction"
    content: "This is what you need to do first"
    next: "step2"
    
  - id: "step2"
    type: "tool_call"
    tool: "tool_name"
    parameters:
      param1: "value1"
    next: "step3"
    
  - id: "step3"
    type: "end"
    content: "Workflow complete"

Available Tools

  • list_workflows(): Lists available workflow frameworks

  • start_workflow(workflow_id): Start a new workflow session

  • complete_step(session_id, result): Mark current step as complete and get the next step

License

MIT

Available Tools

8 tools
complete_stepB

Complete current step and get next step.

Args: ctx: MCP context for logging and error handling session_id: ID of the session. result: Optional result from executing the current step.

Returns: Dictionary containing next step information.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
resultNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, so the description carries full burden. It states it returns next step info but does not disclose side effects, preconditions (e.g., session must have an active step), or idempotency. The description is too minimal for a tool that likely alters state.

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 concise with a single-sentence purpose and a structured argument docstring. It is front-loaded and earns its sentences, though the docstring format is slightly verbose for the agent.

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 complexity (2 params, output schema exists), the description should explain prerequisites (e.g., session must be active, step must be current) and how output integrates with workflow. Missing these contextual details reduces completeness.

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 0%, so description must compensate. It explains session_id as 'ID of the session' and result as 'optional result from executing the current step'. This adds meaning but lacks details like data types or constraints beyond the schema.

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 tool completes the current step and returns the next step. This distinguishes it from siblings like 'execute_current_step' which likely executes rather than completes. However, the distinction is not explicitly made.

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 usage for transitioning steps but lacks explicit guidance on when to use this tool versus siblings like 'execute_current_step' or 'start_workflow'. No when-not-to-use or alternatives are mentioned.

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

create_frameworkB

Create a new workflow framework.

Args: ctx: MCP context for logging and error handling schema: The framework schema. name: Optional name to use for the framework file.

Returns: The framework ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaYes
nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral traits like side effects, permissions, or error conditions. It only mentions the return value and arguments, omitting important behavioral context for a creation tool.

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 concise and front-loaded with the purpose. The docstring format clearly separates parameter explanations. However, mentioning 'ctx' (not in input schema) slightly distracts from conciseness.

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?

Given the complexity of the 'schema' object parameter, the description provides minimal structure guidance. The return type (framework ID) is noted, but constraints on schema content are missing, making it adequate but not complete.

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?

Schema coverage is 0%, so the description's parameter documentation adds essential meaning: 'schema: The framework schema' and 'name: Optional name for the file.' This compensates for the bare schema, though 'schema' could be further detailed.

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 'Create a new workflow framework,' which clearly identifies the verb and resource. However, it does not differentiate from sibling tools like start_workflow or list_workflows, lacking context for when to use this specific tool.

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 on when to use create_framework versus alternatives. There is no mention of prerequisites, scenarios, or exclusions, leaving the agent to infer usage context.

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

delete_sessionB

Delete a workflow session.

Args: ctx: MCP context for logging and error handling session_id: ID of the session to delete.

Returns: True if the session was deleted, False if it didn't exist.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/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. It adds a key behavioral detail: returns True if deleted, False if nonexistent, implying idempotency. However, it omits information on side effects, permissions, or error conditions beyond absence.

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 relatively short but includes an 'Args: ctx' line that is absent from the input schema, creating potential confusion. The return behavior line is useful. Overall, it is adequately concise but contains a minor extraneous detail.

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?

The tool is simple (one parameter, no nested objects) and the description covers the primary action and return value. However, it lacks a description of the parameter's semantics and any edge cases. The output schema is present but not shown; given the simplicity, this is acceptable but not thorough.

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?

With 0% schema description coverage, the description must add meaning. It states 'session_id: ID of the session to delete,' clarifying the parameter's purpose. However, it does not specify format, constraints, or validation rules, providing only minimal context.

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 explicitly states 'Delete a workflow session,' providing a clear verb (delete) and resource (workflow session). This distinguishes it from sibling tools like get_session_info, list_sessions, and start_workflow, which have different actions.

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, such as when deletion is appropriate or what prerequisites exist. This leaves the agent without context for tool selection.

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

execute_current_stepC

Execute the current step automatically.

Args: ctx: MCP context for logging and error handling session_id: ID of the session.

Returns: Dictionary containing next step information.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.3/5.0
Behavior2/5

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

No annotations exist, so the description carries full burden. It claims 'automatically' but discloses no behavioral traits—no mention of mutation, side effects, state changes, or error handling. The mention of 'ctx' in Args but not in the schema suggests inconsistency.

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 short but not well-structured; it includes an 'Args' section with 'ctx' that does not appear in the schema, causing confusion. The purpose statement is front-loaded, but the overall structure is inconsistent.

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?

Even with an output schema existing, the description lacks context about workflow state, prerequisites, error conditions, and the meaning of 'next step'. The mention of return type is helpful but insufficient for an agent to safely invoke the tool.

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

Parameters2/5

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

With 0% schema description coverage, the description adds minimal value: 'ID of the session' essentially repeats the property name 'session_id'. No format, constraints, or examples are provided.

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

Purpose3/5

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

The description states the verb 'execute' and resource 'current step', but does not define what 'current step' means in the context of a workflow. It lacks differentiation from sibling 'complete_step', leaving ambiguity about the tool's unique role.

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 on when to use this tool versus alternatives like 'complete_step'. The description does not mention prerequisites, context, or scenarios where automatic execution is or is not appropriate.

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

get_session_infoC

Get information about a workflow session.

Args: ctx: MCP context for logging and error handling session_id: ID of the session.

Returns: Dictionary containing session information.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are present. The description claims to 'get information' implying idempotency and safety, but does not explicitly state side effects, permissions, or rate limits. For a tool with no annotations, more behavioral disclosure is needed.

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 short and front-loaded with the purpose. The docstring-style 'Args:' and 'Returns:' sections are standard but could be omitted for conciseness. Overall, it is efficient without wasting words.

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 a single parameter and the existence of an output schema (unseen), the description should clarify the scope of returned information. 'Dictionary containing session information' is vague; it does not specify what fields or overall purpose the session info serves, leaving gaps for the agent.

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

Parameters2/5

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

The description adds minimal value over the schema: 'session_id: ID of the session.' The schema already has the property name and type. No format, constraints, or examples are provided. Schema description coverage is 0%, so the description should compensate but does not.

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 verb 'Get' and resource 'information about a workflow session,' indicating a retrieval operation for a single session. While it distinguishes from siblings like 'list_sessions' by specifying a single session ID, it does not explicitly contrast with other tools.

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 on when to use this tool versus alternatives (e.g., list_sessions, start_workflow). The description lacks usage context, prerequisites, or exclusion criteria.

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

list_sessionsB

List all available workflow sessions.

Returns: List of session metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries full burden for behavioral disclosure. It indicates a read operation ('List') but omits potential traits like pagination, session count limits, or any side effects. Minimal transparency.

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 short and front-loaded, stating the purpose and return value in two clear sentences. No wasted words, but could include a usage suggestion for improved structure.

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?

Given the tool's simplicity (no parameters, output schema exists), the description covers the action and return value. The output schema handles return details, so completeness is adequate. However, adding a brief note on scope ('all sessions') would strengthen it.

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?

Input schema has zero parameters, so schema coverage is 100%. The description does not need to add parameter details; baseline for 0 parameters is 4. It correctly implies no inputs needed.

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 it lists all available workflow sessions, with a specific verb and resource. It distinguishes from siblings like get_session_info (detailed view) and delete_session (mutate), though not explicitly. The purpose is clear but could be more precise about metadata contents.

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 versus alternatives. Siblings like get_session_info or delete_session exist but the description does not provide context, prerequisites, or exclusions.

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

list_workflowsA

List all available workflows.

Returns: List of available workflow metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral traits. It states it returns metadata but doesn't mention idempotency, safety, or any side effects, relying solely on the word 'list' to imply read-only.

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 extremely concise with two short sentences that front-load the purpose. Every word is earned.

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?

Given no parameters and an output schema, the description adequately states the function and return type. However, it could note that it lists all workflows without filtering, which is implicit.

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?

There are no parameters, so the description does not need to add meaning beyond the schema. Baseline 4 is appropriate.

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 clearly states the action ('List all available workflows') and the resource ('workflows'), and is distinct from sibling tools like complete_step or create_framework.

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 on when to use this tool vs alternatives, such as list_sessions or get_session_info. The usage is implied but not explicit.

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

start_workflowA

Start a new workflow.

Args: ctx: MCP context for logging and error handling workflow_id: ID of the workflow to start.

Returns: Dictionary containing session ID and first step.

ParametersJSON Schema
NameRequiredDescriptionDefault
workflow_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It indicates a new session is created (returns session ID) but does not disclose side effects, permissions, or whether starting a running workflow causes issues.

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?

Very concise: one sentence plus Args/Returns. Every part is useful 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?

The description covers purpose, parameter, and return format, but lacks usage context and behavioral details. Given the simplicity, it is adequate but not comprehensive.

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?

With 0% schema description coverage, the description adds essential meaning by stating workflow_id is the ID of the workflow to start, which is not evident from the schema alone.

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?

Start a new workflow is a specific verb+resource combination, and it is clearly distinguished from sibling tools like complete_step, list_sessions, etc.

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?

No explicit when-to-use or when-not-to-use guidance; it is implied that it is used to start a workflow given a workflow_id, but no alternatives are mentioned.

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. Dates show when Glama detected each change.

  1. 8 tool updatesv0.1.0
    • First observedcomplete_step
    • First observedcreate_framework
    • First observeddelete_session
    • First observedexecute_current_step
    • First observedget_session_info
    • First observedlist_sessions
    • First observedlist_workflows
    • First observedstart_workflow

TDQS

B3.2/5.0
Disambiguation4/5

Tools are largely distinct, focusing on framework creation, session management, and step execution. The only potential confusion is between complete_step and execute_current_step, but their descriptions clarify different actions: completing vs executing steps.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., create_framework, list_sessions, complete_step). The pattern is uniform and predictable.

Tool Count5/5

With 8 tools, the server covers core workflow operations without being excessive. The number is appropriate for a workflow management server's typical needs.

Completeness3/5

The tool set covers basic lifecycle (create framework, start, execute steps, manage sessions), but lacks tools for editing workflow definitions, listing steps, or pausing/aborting sessions, which are notable gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tuanknguyen/workflow-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server