src/pages/ai/mcp/examples/simple-client.md


title: “Simple MCP Client Example in Python” description: “A walkthrough of using the KirokuForms MCP API with a simple Python client.” layout: ”../../layouts/BaseLayout.astro”

Simple MCP Client Example

This example shows how to use the KirokuForms MCP API to create a form and listen for submissions.

import requests
import json
import time
import sseclient

# API Configuration
API_KEY = "your_api_key"
BASE_URL = "https://kirokuforms.com/api/mcp"

# Helper function for API requests
def api_request(method, endpoint, data=None):
    url = f"{BASE_URL}/{endpoint}"
    headers = {
        "Authorization": f"Bearer {API_KEY}",
        "Content-Type": "application/json"
    }
    
    response = requests.request(
        method=method,
        url=url,
        headers=headers,
        json=data
    )
    
    return response.json()

# 1. Create a simple feedback form
form_data = {
    "name": "Customer Feedback",
    "description": "Please provide your feedback about our service",
    "purpose": "feedback collection",
    "formType": "feedback"
}

print("Creating feedback form...")
result = api_request("POST", "tools/forms/generate", form_data)

if result.get("success"):
    form_id = result["data"]["formId"]
    form_url = result["data"]["formUrl"]
    print(f"Form created successfully!")
    print(f"Form ID: {form_id}")
    print(f"Form URL: {form_url}")
else:
    print(f"Error creating form: {result.get('error', {}).get('message')}")
    exit(1)

# 2. Subscribe to form submission events
print("\nListening for form submissions...")
print(f"Share this URL with users to collect feedback: {form_url}")
print("Press Ctrl+C to stop listening\n")

# Set up SSE client for event streaming
sse_url = f"{BASE_URL}/events/form.submission.new?formId={form_id}"
headers = {"Authorization": f"Bearer {API_KEY}"}
response = requests.get(sse_url, headers=headers, stream=True)
client = sseclient.SSEClient(response)

try:
    for event in client.events():
        if event.event == "form.submission.new":
            data = json.loads(event.data)
            submission_id = data.get("submissionId")
            timestamp = data.get("timestamp")
            
            print(f"New submission received at {timestamp}!")
            print(f"Submission ID: {submission_id}")
            
            # Get submission details
            submission = api_request("GET", f"resources/forms/{form_id}/submissions/{submission_id}")
            if submission.get("success"):
                print("Submission data:")
                for field, value in submission["data"]["fields"].items():
                    print(f"  {field}: {value}")
                print()
except KeyboardInterrupt:
    print("\nStopped listening for events")