İlk kez dron kullandılar, heyecanı doyasıya yaşadılar

Çorum’da 19 Mayıs etkinlikleri kapsamında düzenlenen dron futbolu organizasyonunda çocuklar ve gençler, kafesli sahada dron teknolojisiyle heyecan dolu anlar yaşadı. Türkiye Hava Sporları Federasyonu koordinesinde gerçekleşen etkinlikte birçok vatandaş ilk kez dron kullandı.

PREDICTION-20260518-0006: craft-and-peer-recognition [2026-Q3 through 2027-Q4]

Originally written: 2026-05-18 — this article was backdated to match the prediction log. Dev.to does not support custom publication dates; the original date is preserved here for the record.

From the motivation-pattern-log — a public, dated, falsifiable prediction log for AI-era cybersecurity attack patterns grounded in motivation analysis. Predictions are scored quarterly against stated falsifiers.

PREDICTION-20260518-0006

  • Created: 2026-05-18
  • Pattern: craft-and-peer-recognition
  • Substrate: LLM-agentic vulnerability-discovery frameworks used by professional security researchers (bug bounty hunters, academic vuln researchers, red-team operators at institutionally affiliated firms)
  • Leading indicator observed: UK AI Security Institute formal evaluation finding GPT-5.5 comparable to Anthropic’s restricted Mythos model for vulnerability discovery (Schneier blog, 2026-W21); uGen agentic framework paper demonstrating LLM-generated microarchitectural attack PoCs published at a career-creditable venue (arXiv:2605.15503); compositional jailbreaking paper applying systematic benchmarking norms to offensive capability measurement (arXiv:2605.15598) — together constituting an institutional peer-recognition artifact cluster around AI-augmented offensive capability
  • Predicted window: 2026-Q3 through 2027-Q4
  • Predicted shape: Professional security researchers — bug bounty hunters, academic vulnerability researchers, and red-team operators at firms with institutional affiliations — will routinely incorporate LLM-agentic frameworks for initial vulnerability triage, PoC generation, and attack-surface enumeration into their published work, with authorship and methodology sections explicitly crediting AI-assisted tooling as part of the research workflow. This will be legible in the peer-recognition artifacts: top-tier conference papers (IEEE S&P, CCS, USENIX Security, Black Hat USA) will include AI-augmented discovery pipelines in their methodology; bug bounty disclosure reports submitted to HackerOne and Bugcrowd will reference LLM-assisted enumeration; and at least one publicly disclosed critical vulnerability class (CVSS ≥ 9.0) will have a discovery account in which the credited researcher explicitly attributes initial triage or PoC generation to an LLM-agentic tool. The productivity multiplier will be legible within a craft-and-peer-recognition incentive structure rather than a boredom-with-asymmetric-leverage one: the quality and novelty of reported findings will not decline as volume rises, distinguishing this from commodity scanner abuse.
  • Falsifier: If by end of 2027-Q4 no paper at IEEE S&P, CCS, USENIX Security, or Black Hat USA credits an LLM-agentic pipeline in the discovery methodology for a novel vulnerability class, this prediction is wrong.
  • Confidence: medium
  • Status: open

Reasoning

The craft-and-peer-recognition pattern activates when a productivity multiplier is absorbed into the professional toolkit of an institutionally embedded research community and begins generating career-creditable artifacts. The leading indicators this week converge on exactly that transition: a government evaluation body (UK AISI) treating LLM vulnerability-finding parity as a formally assessable property; academic researchers publishing agentic PoC-generation frameworks at venues with career-crediting norms; and systematic benchmarking of offensive capability appearing in the same venues where professional identity is constructed. These are not underground shares or recipe drops — they are the institutional peer-recognition artifacts that mark tool adoption within a professional community.

The window starts in 2026-Q3 rather than immediately because the gap between a research prototype (uGen) or an institutional evaluation finding (GPT-5.5 parity) and practiced deployment in the professional community’s workflow is typically one to three quarters. Bug bounty hunters and red-team operators adopt tools after they have been validated by the research community, after documentation and APIs stabilize, and after early adopters demonstrate yield. The window extends to 2027-Q4 because the full absorption into publication norms — the point at which methodology sections routinely credit AI-assisted discovery — requires multiple publication cycles at annual venues.

The prediction would fail if the institutional peer-recognition community treats AI-assisted vulnerability discovery as methodologically suspect or professionally discrediting — analogous to how some communities resist automated tools as undermining the craft identity — or if model capability at the relevant tasks stagnates between now and 2027. It would also fail if the primary adopters turn out to be low-skill actors (boredom-with-asymmetric-leverage) rather than professional researchers, producing volume without the career-crediting behavior that is the pattern’s observable signature.

Sources

Addenda

Confidence: medium | Status: open | Scored quarterly. See repo for addenda and scoring rationale.

PREDICTION-20260518-0005: ideology-faith-nation [2026-Q3 through 2027-Q2]

Originally written: 2026-05-18 — this article was backdated to match the prediction log. Dev.to does not support custom publication dates; the original date is preserved here for the record.

From the motivation-pattern-log — a public, dated, falsifiable prediction log for AI-era cybersecurity attack patterns grounded in motivation analysis. Predictions are scored quarterly against stated falsifiers.

PREDICTION-20260518-0005

  • Created: 2026-05-18
  • Pattern: ideology-faith-nation
  • Substrate: Proprietary model weights, pre-training code, and capability evaluation benchmarks held by US-based frontier AI labs (Anthropic, OpenAI, Google DeepMind, Meta FAIR, xAI) — specifically artifacts whose strategic value is acknowledged in US AI export-control policy
  • Leading indicator observed: DOJ prosecution alleging state-directed AI IP theft (United States v. Linwei Ding, N.D. Cal. 2024 — Google engineer charged with exfiltrating AI training infrastructure to PRC-backed companies); FBI/CISA joint advisory warning of PRC-directed collection against AI research targets (2024); China’s New Generation AI Development Plan and successor policies explicitly framing frontier model acquisition as a national strategic priority; US AI export-control expansion toward model weights and associated infrastructure (Executive Order 14110 and follow-on rulemaking, 2023–2026)
  • Predicted window: 2026-Q3 through 2027-Q2
  • Predicted shape: At least one publicly confirmed state-directed collection operation — distinct from opportunistic insider theft motivated by personal grievance or financial gain — targeting model weights, training infrastructure, or capability evaluation benchmarks at a US frontier AI lab will enter the public record through DOJ indictment, joint government attribution statement, or sworn congressional testimony. The incident will carry the institutional signature of the ideology-faith-nation pattern: an asset or operator directed and resourced by a state intelligence service, with at least one attributable public government statement naming both the targeted artifact type and the directing state.
  • Falsifier: If by 2027-Q2 no DOJ indictment or criminal information, no joint governmental attribution statement from two or more governments, and no sworn congressional testimony specifically names a state intelligence service as having directed collection against AI model weights, training pipelines, or capability benchmarks at a named US frontier lab, this prediction is wrong. Cases attributable solely to financially-motivated independent insiders — without publicly established state direction — do not satisfy this falsifier, even if the exfiltrated data subsequently reaches a state actor.
  • Confidence: medium
  • Status: open

Reasoning

The ideology-faith-nation pattern activates when a state — or national movement acting in its name — identifies a strategic asset held by a defined out-group and tasks institutional resources toward its acquisition. The activation condition is not individual incentive but collective strategic calculation: an operation authorized and resourced above the level of the individual actor. This distinguishes it structurally from both the grievance pattern (prediction-002, individual reclaiming agency) and the boredom pattern (prediction-004, low-skill volume enabled by cheap automation). The actor here answers to an institution, not to personal injury or marginal cost.

Frontier AI model weights meet all three conditions that trigger this pattern historically: they encode strategic capability that rivals cannot reproduce independently on any near-term timeline, they are held by a small number of identifiable custodians in a geopolitically defined rival, and their acquisition offers asymmetric advantage in a competition the collecting state has explicitly framed as existential. The US policy apparatus has confirmed this reading: moving frontier model weights toward export-control coverage is a regulatory signal that the substrate has been formally identified as national security infrastructure — and that designation raises the return on illicit acquisition for any rival state operating below the threshold of legal access.

Historical instantiation of the pattern is substrate-independent and spans decades: nuclear secrets collection (Fuchs, Rosenbergs — ideological loyalty operationalized as state tasking), semiconductor IP theft programs (ASML, Applied Materials, multiple TSMC-related prosecutions — state-directed, not opportunistic), ITAR-controlled defense components (Dongfan Chung case, Boeing B-1 specifications). In each case the defining signature is institutional tasking and strategic target selection, not individual financial motivation. AI model weights are the current-era instance: high information density, portable exfiltration surface, strategically significant, held by a countable number of custodians in a geopolitical rival.

The predicted window begins 2026-Q3 because export-control hardening — which raises the cost of legal acquisition and thereby increases the relative return on illegal acquisition — is now operational, and because post-2025 model generations are the first whose capability delta is large enough to justify the operational risk of state-directed collection. The falsifier is deliberately set at a high bar: it requires public government attribution of institutional direction, not merely the presence of state-linked intermediaries. If only financially-motivated independent insiders appear in the public record within the window, that is a genuine prediction failure — it would mean the ideology-faith-nation pattern had not yet been formally activated for this substrate, and the correct motivation reading remains financial or grievance-based.

Sources

  • United States v. Linwei Ding (N.D. Cal. 2024) — indictment alleging exfiltration of Google AI training infrastructure to PRC-backed companies
  • FBI/CISA Joint Cybersecurity Advisory on PRC-directed threats to AI research and critical technology sectors (2024)
  • China’s New Generation AI Development Plan (国务院, 2017; successor policies through 2025)
  • NSCAI Final Report §IV (2021) — AI as strategic national security priority
  • Executive Order 14110 on Safe, Secure, and Trustworthy AI and follow-on Commerce Department rulemaking on AI export controls (2023–2026)
  • Historical state-directed collection: ASML trade-secret prosecution (2023), Applied Materials IP theft, TSMC-related prosecutions (2022–2024)
  • Historical substrate independence: Fuchs/Rosenbergs (nuclear), Dongfan Chung (Boeing defense specs), multiple semiconductor IP cases

Addenda

Confidence: medium | Status: open | Scored quarterly. See repo for addenda and scoring rationale.

Building Streamable HTTP MCP Servers from Scratch using FastMCP in 2026

MCP Component

If you’ve spent any time wiring up tools for an AI agent, you know the pain: every model vendor has its own function-calling format, every integration is bespoke glue code, and every model upgrade breaks something downstream.

MCP changes this by providing a shared interface for tools, data sources, and AI clients. Instead of rebuilding integrations for every model or app, you expose capabilities once through an MCP server and let compatible clients connect to them.

Anthropic released the Model Context Protocol in November 2024, and by spring 2025, OpenAI, Microsoft, and Google had adopted it. It has quickly become the de facto standard for connecting AI systems to external tools and data. That makes MCP worth learning now.

This guide teaches you how to build an MCP server from scratch, expose it over two transports: stdio and streamable HTTP, connect it to Claude Desktop and Cursor. and provide you with a production checklist for hardening the production MCP servers before shipping them. The full code is available in the companion repo at the end

tl; dr

  • What is MCP
  • MCP Components in Nutshell
  • Build a Local MCP server (tools, resources, and prompts)
  • Connect to Hosted MCP Server (HTTP Streamable)
  • MCP Server Advance Use Case
  • Deployment Notes for Production MCP Servers
  • Conclusion
  • Frequently Asked Questions

Let’s Begin!

What is MCP

An MCP server is a JSON-RPC 2.0 process that exposes three primitives to any compliant MCP client over stdio or streamable HTTP. Those primitives are tools (functions the model can call), resources (data the model can read), and prompts (reusable templates). That’s the whole protocol.

Everything else is an implementation detail as given in the comparison table.

Feature Model Context Protocol (MCP) Traditional API (REST / GraphQL / gRPC)
Primary purpose Give LLM-based agents a single way to fetch context and invoke side-effecting tools. General machine-to-machine data exchange & business logic.
Integration effort Once an agent speaks MCP, it can talk to any compliant server; only one SDK/wire-spec to learn. Each API exposes its own spec/SDK; you integrate them one by one.
Interaction model Stateful sessions + bidirectional messaging; supports long-running tasks and mid-job progress callbacks. Stateless request/response; usually unidirectional.
Streaming support Standardised via “Streamable HTTP” (SSE/WebSocket). Not part of the REST spec; developers bolt on WebSockets/SSE ad hoc.
Extensibility (adding new capabilities) The server can add new tools/resources without breaking clients; the agent discovers them at runtime. Breaking changes need versioning, or clients must update to use new endpoints/types.
Standardisation/wire format One JSON-Schema-driven spec for inputs & outputs, plus defined transports. Multiple styles (REST, GraphQL, gRPC) with differing auth headers, error shapes, and media types.
Maturity & tooling Rapidly growing, but still early; dozens of open-source servers and early commercial support. Decades of best-practice guides, gateways, SDKs, APM, and monitoring.
Performance path length Extra hop (agent → MCP → underlying API) adds a bit of latency; streaming mitigates waiting for large payloads. Direct call; generally lower overhead for high-QPS, deterministic workloads.
Typical sweet-spot use-cases Autonomous agents chaining multiple tools, dynamic workflows, and user-in-the-loop CRUD data services, stable integrations, high-throughput micro-services.

If you want a deeper conceptual primer, check out the Model Context Protocol explainer, which covers the architecture in detail. For primer, here is how this all works!

MCP Components in Nutshell

MCP Component %}

The Architecture

The MCP architecture consists of several key components that work together to enable seamless integration:

  1. MCP Hosts: Applications that want to use tools or data through MCP. Examples include Claude Desktop, Cursor, or any AI app that supports MCP.
  2. MCP Clients: Client instances created by the host. Each client maintains a dedicated one-to-one connection with a single MCP server.
  3. MCP Servers: Lightweight programs that expose tools, resources, and prompts through the MCP protocol.
  4. Local Data Sources: Files, databases, codebases, or local services that an MCP server can access on the user’s machine.
  5. Remote Services: External APIs or cloud services that an MCP server can call, such as Google Sheets, GitHub, Slack, or Postgres hosted in the cloud.

At a high level, the host does not talk directly to your database, file system, or API. Instead, it talks to an MCP client, which talks to an MCP server, which then talks to the actual data source or service.

This simple diagram might help you understand the flow better:

MCP FLOW

The key point is that MCP servers serve as the integration layer. They hide the messy parts of authentication, API calls, file access, and business logic behind a clean protocol interface.

This separation of concerns makes MCP servers modular and maintainable. The AI app does not need to know how Google Sheets, GitHub, or a local database works. It only needs to know how to call the MCP server.

So how does this all connect?

How The Components Work Together

Let’s understand this with a practical example:

Say you’re using Claude Code (an MCP host) to manage your project’s budget. You want to update a budget report in Google Sheets and send a summary of the changes to your team via Slack.

  • Claude Code (MCP host) initiates a request to the MCP client to update the budget report in Google Sheets and send a Slack notification.
  • The MCP client connects to two MCP servers: one for Google Sheets and one for Slack.
  • The Google Sheets MCP server calls the Google Sheets API (remote service) to update the budget report.
  • The Slack MCP server interacts with the Slack API (remote service) to send a notification.
  • MCP servers send responses back to the MCP client.
  • The MCP client forwards these responses to Cursor, which displays the result to the user.

This process happens seamlessly, allowing Cursor to integrate with multiple services through a standardized interface.

That’s the working in a nutshell. From here on, we will focus on building.

Build Local Stremable HTTP MCP Servers

We’ll build something you’d actually deploy: a GitHub issue search server that lets your AI assistant search issues, fetch issue details, and pull recent pull requests from any repository. [subject to change]

We will follow a series of steps to make sure things go smoothly. This is also industry standard, so it’s best to follow along.

Prequires

Before anything else, ensure you complete the prerequisites, as they will be the foundation for any MCP implementation we do.

You’ll need:

  • Python 3.10+
  • Node.js 18+ for TypeScript (if you choose to build with TypeScript)
  • Claude Desktop or Cursor for testing

A common question users often ask: when should you pick Python vs. TypeScript? Here is an honest review:

  • Python with FastMCP is faster for prototyping and works well for stdio servers.
  • TypeScript shines for HTTP servers deployed to Cloudflare Workers, Vercel Edge, or any Node-based stack due to its type safety.

In case you are wondering, Composio is the ultimate integration platform, empowering developers to seamlessly connect AI agents with external tools, servers, and APIs with just a single line of code.

With the fully managed MCP Servers, developers can rapidly build powerful AI applications without the hassle of managing complex integrations.

In a nutshell: Composio handles the infrastructure so developers can focus on innovation.

Next, let’s set up the working environment.

Work Environment Setup

We start by creating a project directory.

Navigate to your working folder and create a folder named MCP, or u can use the terminal command:

mkdir mcp_servers
cd mcp_servers

Next, create a virtual environment using:

python3 -m venv .venv

Now activate the environment with:

# Windows:
.venvScriptsactivate

# Linux/Mac:
source .venv/bin/activate

Ensure you see (.venv) in Front of the terminal cwd path.

Finally, install the FastMCP package

pip install FastMCP

Writing Server Code

Server code is where the entire MCP server logic lives. Create a new server.py file and inside it paste the code below:

# server.py

# imports
import base64
import os
import uuid

from typing import List
from fastmcp import FastMCP

mcp = FastMCP("Utility MCP Server")

# generate password utility
@mcp.tool()
def generate_password() -> str:

    """
    Generate a pseudo-random password for development use.

    This function creates a password by encoding a UUID4 string in base64
    and then reversing the resulting string. It's intended for use in
    development or testing environments where cryptographic security is not
    critical.

    Returns:
        str: A reversed base64-encoded UUID4 string, typically around 48 characters.
        May include alphanumeric characters, '+', '/', and '=' padding.

    Security Notes:
        - Uses the string form of UUID4 (not raw bytes), so effective entropy is lower (~190 bits of input chars)
        - Suitable for temporary or development credentials.
        - NOT recommended for production use.
        - For higher security, consider using secrets.token_urlsafe().

    Example:
        >>> generate_password()
        '==dGM0ZTcwLTI0ZTUtNDJlZC05Y2I1LTk3OGJjODAxMDAwNw=='
    """

    uuid_string = str(uuid.uuid4()).encode()
    base64_encoded = base64.b64encode(uuid_string).decode()
    return base64_encoded [::-1]

# list all the files in the directory
@mcp.tool()
def list_files(directory: str = ".") -> List[str]:
    """
    List all files and directories in a specified path.

    This tool allows the AI to explore the file system by returning a list 
    of names of the entries in the directory given by path.

    Args:
        directory (str): The path to the directory to list. Defaults to the 
        current working directory (".").

    Returns:
        List[str]: A list of filenames and directory names. If an error 
        occurs (e.g., directory not found), returns a list containing 
        the error message.
    """
    try:
        return os.listdir(directory)
    except Exception as e:
        return [f"Error: {str(e)}"]


# read the given file
@mcp.tool()
def read_file(filename: str) -> str:
    """
    Read and return the full text content of a file.

    This tool enables the AI to analyze the contents of specific text files 
    within the accessible file system.

    Args:
        filename (str): The path to the file that needs to be read.

    Returns:
        str: The complete string content of the file encoded in UTF-8. 
        If the file cannot be read, returns an error message starting 
        with "Error reading file:".
    """
    try:
        with open(filename, 'r', encoding='utf-8') as file:
            return file.read()
    except Exception as e:
        return f"Error reading file: {str(e)}"

# system info (resource)
@mcp.resource("data://sys-info")
def get_system_info() -> str:
    """
    Get a comprehensive system snapshot including time, hardware specs, 
    and real-time health metrics.
    """
    import platform
    import psutil
    import subprocess
    from datetime import datetime

    now = datetime.now()
    timestamp = now.strftime("%Y-%m-%d %H:%M:%S")
    day_name = now.strftime("%A")


    boot_time = datetime.fromtimestamp(psutil.boot_time())
    uptime = str(now - boot_time).split('.')[0]

    sys_type = platform.system()
    machine = platform.machine()
    cpu_count = psutil.cpu_count(logical=False)
    try:
        gpu_info = subprocess.check_output(
            ["nvidia-smi", "--query-gpu=gpu_name", "--format=csv,noheader"], 
            encoding="utf-8"
        ).strip()
    except Exception:
        gpu_info = "N/A (NVIDIA-SMI not found)"

    cpu_usage = psutil.cpu_percent(interval=None)
    memory = psutil.virtual_memory()
    disk = psutil.disk_usage('C:\')

    return f"""
             --- Hardware Specs ---
            OS:        {sys_type} ({machine})
            CPU:       {cpu_count} Physical Cores
            GPU:       {gpu_info}

            --- Temporal Context ---
            Date/Time: {timestamp}
            Day:       {day_name}
            Uptime:    {uptime}

            --- Resource Utilization ---
            CPU Load:  {cpu_usage}%
            RAM Usage: {memory.percent}% ({memory.used // (1024**2)}MB / {memory.total // (1024**2)}MB)
            Disk (C:): {disk.percent}% Used ({disk.free // (1024**3)}GB Free)
            """

# general prompt
@mcp.prompt()
def helper_prompt(task: str, context: str = "") -> str:
    """General purpose prompt for any task with optional context."""
    base_prompt = f"""
Task: {task}

Please approach this systematically:
1. Break down the problem
2. Consider multiple solutions
3. Explain your reasoning
4. Provide clear, actionable steps
"""

    if context:
        base_prompt += f"nnAdditional context: {context}"

    return base_prompt

# api-design rules prompt
@mcp.prompt()
def api_endpoint_design_prompt(endpoint_name: str, purpose: str) -> str:
    """Specific prompt for designing RESTful API endpoints."""
    return f"""
Design a RESTful API endpoint: {endpoint_name}
Purpose: {purpose}

Please provide:
1. HTTP method and URL pattern
2. Request/response schemas with examples
3. Status codes and error handling
4. Authentication requirements
5. Rate limiting considerations
6. OpenAPI/Swagger documentation snippet

Follow REST conventions and include proper validation.
Use JSON for data exchange and meaningful HTTP status codes.
"""

# Run MCP server
# if __name__ == "__main__":
    # mcp.run()

# Run stremable http MCP Server (can be deployed / hosted)
if __name__ == "__main__":
   mcp.run(transport="streamable-http", host="0.0.0.0", port=8000)

Key points from the code:

  • mcp : It’s the Fast MCP object named as provided. Important to initialize at the start.
  • @mcp.tool() : Decorator wraps the entire function underneath and exposes it as a tool to the MCP client. Docstrings are very important; a good docstring leads to fewer model failures. Includes generate_password , list_files, read_filetools.
  • @mcp.resource("data://sys-info") : Decorator wraps the entire function and exposes it as a resource file that the client can use to fetch data. The path to the created resource is defined in () . Includes get_system_info resource
  • @mcp.prompt() : Decorator wraps the entire function and exposes it to the client as a prompt builder, useful when the task requires a specific use-case prompt. Docstrings are important here. Includes helper_prompt , api_endpoint_design_prompt
  • mcp.run(transport="streamable-http", host="0.0.0.0", port=8000) : Runs the MCP server.in a streamable HTTP mode. For stdio MCP server, use mcp.run()

Overall, we are wrapping different functions and exposing them to the client as the MCP tool, resources, and server.

However, to use it with the client, additional config is required, so let’s set that up. I am using a cursor for the demo.

Head to the Cursor and create a new folder .cursor , inside it creates a new file mcp.json (the config file) and paste the following setup.


{
    "mcpServers": {
        "utility-server": {
            "url": "http://localhost:8000/mcp"
        }
    }
}

In case you have used mcp.run() then you will see the below configuration

{
    "mcpServers": {
        "utility_server": {
            "type": "stdio",
            "command": "your-python-exe-path",
            "args": ["your file path"]
        }
    }
}

In general I use local stdio based servers and then when all test and specifications are met, I switch to Streamble HTTP approach.

Quick Tip: To verify this works is by pasting the command and args together; if they start the server, you are good to go; else, provide the full path. I usually go for path of .venv’s python.exe

Open Cursor Settings, then click Tools & MCPs. You will see your local MCP name. Click Enable,

To check, open the terminal, switch to the Output tab, select the MCP server, and check for the connected message.

CURSOR

Now we can test our MCP Server by opening the chat/agents window and invoking any of the defined tools via the prompt. I invoked the password-generator, as I often find myself asking Claude to “think of a 16-character password” (which is terrible).

Generate password + show mcp tool usage

Here is the output:

MCP

Saw that Ran command, it means the MCP server asked me for permission. I kept it that way, as you never want to let an agent touch your system files.

Note: If docstring is poor, the mcp client might fall back to cli approach, the easiest way to fix this is add a rule to only use mcp servers for the task. You will find a similar approach in the project github repo as well.

All this is great, but setting it up for testing a local MCP server is a hassle. Let’s look at an easier approach, MCP Inspector.

Test with MCP Inspector

To test the MCP server’s functionality, we will use the Fast MCP Inspector, a browser-based tool that connects to the server and lets us call tools directly, without an LLM layer.

Run MCP Inspector, with:

npx @modelcontextprotocol/inspector python server.py

You’ll see a localhost URL. Open it in your browser, click Connect, and you should see your server respond.

Now you can run and test your tools, resources, prompts, and more right from the browser, quite handy for developers testing MCP servers’ performance and understanding response schemas. Check out the MCP Inspector Guide to learn more.

Personally, I find it best for testing prompts’ responses. Here is the response it generated:

MCP INSPECTOR

Local servers are great for simple use cases, but for most industry use cases, they don’t provide the required infrastructure. Let’s explore better use cases.

Connect to Hosted Streamable HTTP MCP Server

Having a local server is good, but not as great as the one used in production. Usually, these are hosted, secured by design, and optimized for multiple tool calls.

Usually, these are servers written by expert developers, integrated with the app’s internal mechanisms, and intended to serve as connectors.

But here lies the issue: connecting to 30+ MCP servers for a single project is a pain. Composio solves this.

Let’s look at how you can connect to the hosted Composio MCP server. You connect it once and use 1K+ tools directly, all secure, optimized tool calls.

Connect to Composio MCP Servers (Streamable HTTP )

Integrating with Composio MCP is incredibly simple and takes just 5 steps.

  1. Visit the Composio MCP page. Ensure you are logged in, or else sign up

step1

  1. In the dashboard, head to the Install Section

step2

  1. Select Cursor from the list, and click on Install.

step3

  1. In the redirected page, click on “Install in Cursor”.

step4

  1. You will be redirected to Cursor, and in the MCP server Page, click Install

step5

Once installed, click on Needs Authentication, then Authorize at redirect, and done!

step6

You can connect to apps in advance in the Connect Apps section; most of them use OAuth. (optional). If you don’t, the agent will prompt you to connect at runtime.

step7

To test the integration, open the Composer, establish a connection to the app, and ask it to perform actions.

But how did all this happen?

It turns out that if you go to your cursor MCP & Tools Page, select the ✏️ icon, and see the configuration as:

{
  "mcpServers": {
    "composio": {
        "type":"http",
      "url": "https://connect.composio.dev/mcp",
      "headers": {}
    }
  }
}

The http here means a streamable HTTP server. This allows the MCP server to operate as a normal web server (accessible via a URL) rather than as a local subprocess on your machine (for local MCP servers)

And interestingly, for any MCP to run in HTTP streamable mode, you have to replace:

if __name__ == "__main__":
    mcp.run()

to

if __name__ == "__main__":
    mcp.run(transport="streamable-http", host="0.0.0.0", port=8000)

And you are done, pretty handy, isn’t it?

Now, let’s look at an advanced use case to see where Composio MCP helps.

Using HTTP Streamable MCP Servers for Advanced Use Case (Financial Agent)

Current financial institutions struggle with manual, time-intensive investment research that keeps analysts buried in data entry for weeks, delays critical decisions by days, lacks real-time risk visibility, creates compliance blind spots, and demands hiring more analysts just to manage portfolio volume – all while losing talent and clients

Let’s see how the analyst can build financial agents and leverage Composio MCP to connect to 10-15 financial data sources (Yahoo Finance, SEC filings, Google Sheets, Bloomberg, etc.) and enrich their analysis by aggregating structured APIs, unstructured web scraping, and internal data warehouses.

The financial analyst agent will:

  • Aggregate financial data (Yahoo Finance, Google Sheets with company data, SEC filings via web scraping),
  • Run Claude analysis to generate investment thesis.
  • Create formatted reports in Google Docs,
  • Track portfolio changes (pull from Excel sheet),
  • and send Executive Summaries to stakeholders via email with embedded tables. (HTML format)

All done in parallel!

Web Scraping (composio & search api) + Google Sheets (composio) → Claude Analysis → Google Docs (composio) → Gmail (composio)

Prerequisites

  • Claude Code / Cursor / VS Code. I am going with Claude
  • Composio Account, login/signup

Assuming you have pre-requisites met, let’s set up Composio on Claude.

Set up Composio MCP in Claude

To get started:

  • Visit the Composio MCP page. Ensure you are logged in, or else sign up
  • In the dashboard, head to the Install Section
  • Select Claude from the list, and click on Install.
  • On the next page, select the MCP tab, then copy the command & paste it into the shell/terminal.

    claude mcp add --scope user --transport http composio https://connect.composio.dev/mcp
    

Ensure /mcp shows composio as an option. It might require authentication, so authenticate once

terminal-mcp

(Optional ) Once done, head to the Connect Apps page and click on Connect to connect Gmail, Google Drive, Google Sheets, and Google Docs. In case you ignore, agent will ask for these connections on runtime.

Perfect, we only need to configure the document in the workspace

Set up Workspace for Agent

We will use Google Drive as our workspace to make the file accessible from everywhere:

  • Head to drive, create a new folder named financial_data & from the URL, copy the folder ID.
  • Inside, add an Excel file in the format & fill the data as:
    • Companies: List of all targeted companies with their analysis
    • Portfolio Performance: How the portfolio is performing over time, all metrics for targeted companies
    • Contact: List of all internal contacts: Portfolio Managers, Limited Partners, Investors, Board Managers, and more
    • Report Archive: Past report filing (sec)
  • Then add a Google Doc template for an investment report.

Make sure to copy the ID / URL of both files

Easiest way is to use the template given in the GitHub Repo and let any AI Agent turn them in the above given format. Then copy paste that in newly created google sheet & google doc file.

Now is the time to run the agent.

Run Financial Analyst Agent

To run the agent, open Claude Code and paste the financial_agent_prompt. You will be prompted to fill in the details with the copied values from earlier, and add your email address:

GOOGLE_SHEETS_ID: [your value]
GOOGLE_DOC_TEMPLATE_ID: [your value]
GOOGLE_DRIVE_FOLDER_ID: [optional]
GMAIL_SENDER_ADDRESS: [your gmail]

Once done, the agent handles the rest. Here is a demo of what it looks like, in production.

The agent also works on multiple portfolio reports. I am testing it with six different portfolios; you can adjust the count as needed.

Same setup, but with multiple portfolio data. Make sure to copy each one’s ID, and use the financial_agent_prompt_for_multiple portfolio for the job.

Note that, despite explicitly stating that Claude never created a subagent, this is because composio already has parallel execution enabled and, behind the scenes, uses subagents.

Hope this gave you an idea of how hosted MCP servers work, and tools like Composio MCP provide a universal tooling layer.

However, deploying a hosted MCP server for production is a different game. Let’s look at a few rules to help ensure the servers don’t break in real-world use.

Deployment Notes for Production MCP Servers

Though we didn’t cover a hosted MCP server build, if you want to build your hosted MCP server (local + later deployed), follow the production checklist before you deploy & put an MCP server in front of real users:

  • Logging to stderr or files only, never stdout for stdio servers
  • Errors caught on every tool: return a clean error message, don’t let exceptions kill the connection
  • Inputs validated: type hints (Python) or Zod (TypeScript) catch most issues; add explicit checks for things like SQL injection or path traversal if you’re doing database/file operations
  • External API calls are rate-limited / Use Composio MCP: your tool runs whenever the LLM decides to call it, which can be a lot. Let Composio MCP handle it.
  • Secrets in environment variables, never hardcode in servers, never commit in production.
  • Tool descriptions for the LLM: Write specific, one-purpose per tool. Five small tools beat one giant tool. The approach we followed.
  • Schema versioning: when you change a tool’s signature, bump your server’s version so clients can adapt. Think API versioning.
  • Health check endpoint: for HTTP servers, expose /health for your load balancer. Provides transparency to users.
  • Auth on production HTTP servers: Use Bearer for internal, OAuth for public. But never both for the same for public/internal (private)

With this, we have come to the end of this comprehensive guide. Here is what matters the most.

Conclusion

As AI transforms software development, MCP will play an increasingly important role in creating seamless, integrated experiences.

Whether you’re building custom MCP servers or leveraging pre-built solutions like stremable http servers like Composio MCP, the protocol enables powerful enhancements to AI capabilities through external tools and data sources.

In case you need a few ideas, check out how to build an MCP client that talks to your server, or move up the stack and build an MCP-powered agent that orchestrates multiple servers at once. Happy building.

I hope you had a great learning experience – happy building with Composio! 🚀

PREDICTION-20260512-0004: boredom-with-asymmetric-leverage [2026-Q3 through 2027-Q1]

Originally written: 2026-05-12 — this article was backdated to match the prediction log. Dev.to does not support custom publication dates; the original date is preserved here for the record.

From the motivation-pattern-log — a public, dated, falsifiable prediction log for AI-era cybersecurity attack patterns grounded in motivation analysis. Predictions are scored quarterly against stated falsifiers.

PREDICTION-20260512-0004

  • Created: 2026-05-12
  • Pattern: boredom-with-asymmetric-leverage
  • Substrate: Public open-source package registries (npm, PyPI, RubyGems, crates.io, Go module proxy) and the unattended maintainer / CI ecosystems that depend on them
  • Leading indicator observed: Snyk, Sonatype, Phylum, and Socket malicious-package quarterly reports through 2024–2025 showing accelerating year-over-year growth in malicious package publications; inference cost per million tokens for capable open-weight and hosted models declining roughly an order of magnitude across 2024–2026 (Llama 3.x derivatives, Claude Haiku, GPT-4o-mini, Mistral small); documented incidents of LLM-generated typosquats and dependency-confusion packages with fluent READMEs and plausible-looking source (e.g., the 2024 huggingface-cli-style and chimera-sandbox campaigns); public sharing of “package-farming” automation tooling and prompt recipes on offensive-tooling forums and Telegram channels
  • Predicted window: 2026-Q3 through 2027-Q1
  • Predicted shape: A measurable surge — at least 2× year-over-year by 2027-Q1 — in the volume of malicious package publications across npm and PyPI, dominated not by skilled APT-style supply-chain operators but by low-skill, high-volume commodity actors using LLMs to generate plausible package metadata, READMEs, install scripts, and code bodies at near-zero marginal cost. The wave will be characterised by short-lived accounts, mass-produced typosquat clusters around popular package names, and post-install or test-time payloads that exfiltrate credentials, environment variables, and CI tokens. Public reporting from registry security teams or third-party scanners (Snyk, Sonatype, Phylum, Socket, GitHub Security Lab) will name LLM-augmented commodity actors — i.e., low-skill, high-volume, automation-driven publishers, distinct from organised threat groups — as the primary or co-primary driver of the growth, not merely as one factor among many.
  • Falsifier: If by 2027-Q1 fewer than two of {Snyk, Sonatype, Phylum, Socket, GitHub Security Lab, npm Security, PyPI Security} have published a public ecosystem or threat report covering the 2026 calendar year that identifies LLM-augmented commodity actor activity — i.e., non-APT, low-skill, high-volume, automation-driven publication — as the primary or co-primary driver of year-over-year growth in malicious package publications across npm or PyPI, this prediction is wrong. The volume leg (≥2× YoY) is supporting context, not part of the falsifier: if growth is large but attribution narratives in the named reports continue to be dominated by organised threat-group framing, this prediction fails.
  • Confidence: medium
  • Status: open

Reasoning

The boredom-with-asymmetric-leverage pattern activates whenever a previously skill-gated attack class becomes cheap enough that low-motivation actors can run it at scale. The pattern’s historical instantiations — script kiddies riding Metasploit modules, spam economies riding bulk-mail tooling, credential-stuffing economies riding combo lists — share a structure: a once-craft activity gets a multiplier that strips the craft requirement, and the marginal attacker is no longer the marginal skilled adversary but the marginal bored teenager or low-wage operator with a cheap GPU. The leverage multiplier here is the 2024–2026 collapse in inference cost for capable models. A worker who five years ago needed to convincingly fake a package README, hand-write a believable post-install script, and seed a plausible commit history now generates all of that from a single prompt, in any natural language, in seconds, for fractions of a cent.

The substrate is open-source package registries because they exhibit the three conditions the pattern needs: (1) trivial publication friction (no review for most ecosystems; create an account, push, your package is live and reachable by any CI job typoing the name), (2) high payoff per successful install (CI environments routinely expose long-lived secrets, cloud credentials, and lateral access into developer workstations), and (3) detection that has historically relied on heuristics (suspicious install scripts, typo-distance to popular names, low account age) which LLM-generated content explicitly defeats by producing plausible, varied, idiomatic surface features. This differs from prediction-001 (transgressive-status, skill-gated MCP exploits) and prediction-003 (craft-and-peer-recognition, peer-reviewed adversarial-ML papers) precisely because the actor here is not seeking status or recognition — successful campaigns are anonymous, churn-and-burn, and indistinguishable in published incident reports.

The predicted window starts 2026-Q3 because the cost curve has already crossed the threshold where a single operator with a small budget can publish thousands of plausible packages per week; what remains is the operational learning curve and the diffusion of working recipes through low-skill communities, both of which are observably underway through Q1–Q2 2026. The window closes at 2027-Q1 to give registry operators one realistic reporting cycle to publish 2026 calendar-year statistics. The load-bearing claim is the motivation reading, not the volume reading: this prediction fails if the named registry and scanner reports do not identify LLM-augmented commodity actors as the primary or co-primary driver of 2026 growth, regardless of how large that growth turns out to be. Volume growth without that attribution would mean technique-extrapolation got the direction right while the motivation reading missed — and the framework’s value-add is the motivation reading.

Sources

  • Sonatype State of the Software Supply Chain reports (2023, 2024, 2025) — annual malicious-package volume trend
  • Snyk State of Open Source Security reports (2024, 2025) — registry-level threat reporting
  • Phylum and Socket public quarterly malicious-package advisories (2024–2026)
  • ReversingLabs “Software Supply Chain Security Report” (2024) — LLM-generated package surface trends
  • Documented LLM-augmented typosquat campaigns: huggingface-cli typosquats (2024), chimera-sandbox style PyPI campaigns (2024–2025)
  • Inference cost trend data: Artificial Analysis llm-pricing index, OpenRouter pricing history, Anthropic and OpenAI public pricing pages (2023–2026)
  • Historical pattern: bulk-spam economies (2003–2008, Storm/Rustock era), credential-stuffing economies (2016–2020, post–Collection #1)

Addenda

Confidence: medium | Status: open | Scored quarterly. See repo for addenda and scoring rationale.

PREDICTION-20260503-0003: craft-and-peer-recognition [2026-Q2 through 2026-Q4]

Originally written: 2026-05-03 — this article was backdated to match the prediction log. Dev.to does not support custom publication dates; the original date is preserved here for the record.

From the motivation-pattern-log — a public, dated, falsifiable prediction log for AI-era cybersecurity attack patterns grounded in motivation analysis. Predictions are scored quarterly against stated falsifiers.

PREDICTION-20260503-0003

  • Created: 2026-05-03
  • Pattern: craft-and-peer-recognition
  • Substrate: Open-source adversarial ML frameworks and robustness evaluation platforms used by academic and industrial safety teams
  • Leading indicator observed: Rapid growth of safety-focused ML research (adversarial testing, alignment evaluation, robustness benchmarks) across academic institutions and corporate AI safety teams (2024-2026); emergence of peer-reviewed safety-focused hacking competitions (DEFCON AI, autonomous vehicle robustness challenges); increased hiring of security researchers into ML safety roles at major labs; publications on novel evasion and poisoning techniques in top-tier venues
  • Predicted window: 2026-Q2 through 2026-Q4
  • Predicted shape: A sustained wave of high-quality published techniques for adversarial attacks, dataset poisoning, and model extraction targeting open-source safety evaluation frameworks (e.g., Robustness Gym, Adversarial Robustness Toolbox, HELM) — not training pipelines or deployed models. The techniques will be authored by researchers with established peer recognition (institutional affiliation, publication track record) seeking professional advancement within academic and corporate ML security communities, and will be characterized by novel methodologies, strong empirical validation, and implementation artifacts shared via GitHub or arXiv preprints.
  • Falsifier: If by 2026-Q4 fewer than five papers accepted at NeurIPS, ICML, IEEE S&P, USENIX Security, or ACM CCS describe novel adversarial, poisoning, or extraction attacks specifically against open-source ML safety evaluation frameworks (e.g., Adversarial Robustness Toolbox, Robustness Gym, HELM, or comparable benchmarks), with at least one author holding a verifiable academic or corporate institutional affiliation, this prediction is wrong.
  • Confidence: medium
  • Status: open

Reasoning

The craft-and-peer-recognition pattern activates when a technical domain becomes professionalized and status-accruing. ML safety is undergoing this transition right now: it was a fringe concern in 2018, but by 2025-2026 it has become a legitimate research focus with funding, academic positions, and industry roles. Researchers in this space earn status through novel technical contributions, not through transgressive peer-group recognition but through institutional and academic peer review.

The substrate—open-source safety evaluation frameworks—is ideal for this pattern because (1) it is visible and auditable by the community, (2) attacking it requires genuine technical skill and novelty (not commodity exploits), and (3) the work becomes publishable once it demonstrates a gap in the framework’s threat model. This differs fundamentally from the MCP prediction (0001, transgressive status) and the insider-threat prediction (0002, grievance status): here the motivation is professional standing within a legitimized research community. A prior instantiation: web security (2005–2010) and cloud security (2012–2016) both went through the same transition from hacker-culture norms to publish-or-perish dynamics, with the same observable signature — institutional affiliation, novel methodology, peer-reviewed venues.

The predicted window starts now (Q2 2026) because the substrate maturity has reached the point where high-signal research papers on framework weaknesses generate career credit. Major labs (OpenAI, Anthropic, Google DeepMind, Meta) have publicly prioritized adversarial robustness, and academic conferences (NeurIPS, ICML, ACM CCS) are accepting papers that demonstrate vulnerabilities in safety evaluation tooling. The feedback loop—publish, gain peer recognition, secure funding or positions—is now operational.

Sources

  • NeurIPS, ICML, ACM CCS publications on adversarial ML and robustness (2024-2026)
  • Funding announcements from AI safety organizations (Future of Humanity Institute, Center for AI Safety, CHAI) for robustness research
  • Job postings for “ML Security Researcher” and “Adversarial Robustness” roles at major AI labs (2025-2026)
  • Open-source framework adoption metrics (GitHub stars, academic citations for Adversarial Robustness Toolbox, Robustness Gym, CARLA)

Addenda

Confidence: medium | Status: open | Scored quarterly. See repo for addenda and scoring rationale.

PREDICTION-20260427-0002: grievance-and-humiliation-reversal [2026-Q2 through 2026-Q4]

Originally written: 2026-04-27 — this article was backdated to match the prediction log. Dev.to does not support custom publication dates; the original date is preserved here for the record.

From the motivation-pattern-log — a public, dated, falsifiable prediction log for AI-era cybersecurity attack patterns grounded in motivation analysis. Predictions are scored quarterly against stated falsifiers.

PREDICTION-20260427-0002

  • Created: 2026-04-27
  • Pattern: grievance-and-humiliation-reversal
  • Substrate: Model weight repositories, internal API credential stores, and proprietary training data at cloud providers and AI labs that conducted significant workforce reductions during 2025–2026
  • Leading indicator observed: Tech sector layoffs continuing through 2025-2026 (Google, Meta, Microsoft, Amazon, and AI labs); social media discourse framing AI advancement as displacement of technical workers; emergence of “tech worker solidarity” and “AI accountability” narratives on platforms like Bluesky, LinkedIn, and private tech-worker forums
  • Predicted window: 2026-Q2 through 2026-Q4
  • Predicted shape: At least three publicly disclosed insider-threat incidents at major cloud providers or AI labs where departing employees exfiltrated proprietary data, model weights, or customer information, with the motivation attributed to layoffs, perceived mistreatment, or ethical objection to AI deployment by security researchers, investigators, or credible journalism.
  • Falsifier: If by 2026-Q4 fewer than three publicly disclosed insider-threat incidents at major cloud providers or AI labs are attributed to grievance motivation (layoffs, mistreatment, or ethical objection to AI deployment) by security researchers, investigators, or credible journalism, this prediction is wrong.
  • Confidence: medium
  • Status: open

Reasoning

The grievance-and-humiliation-reversal pattern activates when perceived systemic wrongs create a motivation to reclaim agency through transgressive acts. The tech sector’s 2023-2026 layoff waves—particularly at AI labs where workers may feel their own labor contributed to systems now displacing colleagues—create fertile ground for this pattern. The substrate (model weight repositories, API credential stores, proprietary training data) holds concentrated value, and departing employees often retain access during notice periods or through poorly revoked credentials.

This prediction specifically targets the intersection of mass layoffs and ethical grievance, not routine insider threats for financial gain. The pattern requires observable grievance-framing to distinguish it from pure financial motivation or espionage. Historical instantiation includes the 2018 Tesla insider sabotage (employee publicly cited mistreatment as motivation) and the 2022 Uber breach, where a contractor’s access was weaponised and framed in terms of inadequate compensation.

Sources

  • Tech layoff tracking data (layoffs.fyi, 2025-2026)
  • Social media discourse analysis on tech-worker platforms regarding AI displacement
  • Historical pattern: 2018 Tesla insider sabotage (grievance-motivated, perpetrator stated grievance publicly)
  • Historical pattern: 2022 Uber security incident and whistleblower dynamics

Addenda

Confidence: medium | Status: open | Scored quarterly. See repo for addenda and scoring rationale.

PREDICTION-20260422-0001: status-in-transgressive-subculture [2026-Q3 through 2027-Q1]

Originally written: 2026-04-22 — this article was backdated to match the prediction log. Dev.to does not support custom publication dates; the original date is preserved here for the record.

From the motivation-pattern-log — a public, dated, falsifiable prediction log for AI-era cybersecurity attack patterns grounded in motivation analysis. Predictions are scored quarterly against stated falsifiers.

PREDICTION-20260422-0001

  • Created: 2026-04-22
  • Pattern: status-in-transgressive-subculture
  • Substrate: MCP (Model Context Protocol) servers exposed by personal and enterprise AI assistants
  • Leading indicator observed: Rapid MCP adoption by major AI platforms (Anthropic Claude, OpenAI, Cursor, etc.) through 2025-2026; concurrent emergence of “agent hacking” threads on offensive-security forums and jailbreak Discord servers; public MCP server registries listing hundreds of community servers with minimal authentication
  • Predicted window: 2026-Q3 through 2027-Q1
  • Predicted shape: A wave of public proof-of-concept exploits targeting MCP server implementations will emerge from transgressive security subcultures, focusing on tool-description prompt injection, credential theft via malicious tool servers, and cross-server data exfiltration. The exploits will be shared primarily for peer recognition (conference talks, blog posts, leaderboard-style tracking) rather than direct financial gain, and will outpace vendor patching by at least one quarter.
  • Falsifier: If by 2027-Q1 fewer than three independent public disclosures of MCP-specific attack techniques have been published by individuals or groups identifiable as part of offensive-security or jailbreak subcultures, this prediction is wrong.
  • Confidence: medium
  • Status: open

Reasoning

MCP adoption is following the pattern of every previous protocol that gained rapid developer adoption before security hardening: broad surface area, enthusiastic early deployment, minimal authentication defaults, and trust assumptions inherited from the LLM context window. The protocol exposes tool descriptions that are consumed by language models, creating a novel prompt-injection vector that is distinct from prior web or API attack surfaces.

The motivation pattern here is status-in-transgressive-subculture, not boredom-with-asymmetric-leverage, because the initial wave of MCP exploits will require genuine skill and novelty — this is a new protocol, not a commodity target. The actors most likely to invest that skill for non-financial reward are those seeking peer recognition in offensive-security and jailbreak communities, which have already demonstrated substrate independence across phreaking, web defacement, zero-day drops, and LLM jailbreaks.

The predicted window starts Q3 2026 because MCP deployment density needs another quarter to reach the threshold where exploit development becomes status-rewarding. If adoption stalls or major platforms withdraw MCP support, the substrate disappears and the prediction fails on structural grounds rather than motivational ones.

Sources

  • Anthropic MCP specification and adoption announcements (2024-2025)
  • Growth of MCP server registries (mcp.so, Smithery, GitHub awesome-mcp-servers)
  • Offensive-security forum threads on agent and tool-use attack surfaces (2025-2026)
  • Historical pattern: early HTTP/CGI exploit culture (1995-1998), early smart-contract exploit culture (2016-2018)

Addenda

Confidence: medium | Status: open | Scored quarterly. See repo for addenda and scoring rationale.