1. Conduid
  2. Cloud
  3. Workers AI
MCP server · Cloud

Workers AI

MCP servers sdk for Cloudflare Workers

Unclaimed last commit a year ago cloud
41Fair

Scored 5 months ago · breakdown

About Workers AI

Workers AI is an MCP server published by xtuc in the Cloud category: mCP servers sdk for Cloudflare Workers.

The repository has 6 stars and 1 forks, with the last commit a year ago. Six months or more without a commit doesn't mean the server is broken, but check the open issues before depending on it in production.

Install

From source
git clone https://github.com/xtuc/mcp-workers-ai

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Ask AI

✦

Ask AI about Workers AI

Powered by Claude · Grounded in docs

I know everything about Workers AI. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

Static checks derived from the repository yesterday. Heuristics on the source, not an audit.

  • ✓README presentThe repository ships documentation.
  • !License declaredNo license file. Legally you have no right to use it in a product.
  • !Tests presentNo tests found. Behaviour changes may go unnoticed between versions.
  • !Dependencies pinnedNo lockfile. Installs can pull different code over time.
  • ✓No dynamic code executionSource scan found no eval, dynamic Function, or shell execution.
  • !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.

README

MCP Workers AI

MCP servers sdk for Cloudflare Workers

Usage

Install:

yarn add mcp-workers-ai
# or
npm install -S mcp-workers-ai

Load the MCP server tools:

import { loadTools } from "mcp-workers-ai"

const tools = await loadTools([
  import("@modelcontextprotocol/server-gitlab"),
  import("@modelcontextprotocol/server-slack"),
  ...
]);

// Pass `tools` to the LLM inference request.

Call a tool:

import { callTool } from "mcp-workers-ai"

// Typically the LLM selects a tool to use.
const selected_tool = {
  arguments: {
    project_id: 'svensauleau/test',
    branch: 'main',
    files: [ ... ],
    commit_message: 'added unit tests'
  },
  name: 'push_files'
};

const res = await callTool(selected_tool)

// Pass `res` back into a LLM inference request.

Demo

wrangler configuration:

name = "test"
main = "src/index.ts"

[ai]
binding = "AI"

[vars]
GITLAB_PERSONAL_ACCESS_TOKEN = "glpat-aaaaaaaaaaaaaaaaaaaa"

[alias]
"@modelcontextprotocol/sdk/server/index.js" = "mcp-workers-ai/sdk/server/index.js"
"@modelcontextprotocol/sdk/server/stdio.js" = "mcp-workers-ai/sdk/server/stdio.js"

Worker:

import { loadTools, callTool } from "mcp-workers-ai"

export default {
  async fetch(request: Request, env: any): Promise<Response> {
    // Make sure to set the token before importing the tools
    process.env.GITLAB_PERSONAL_ACCESS_TOKEN = env.GITLAB_PERSONAL_ACCESS_TOKEN;

    const tools = await loadTools([
      import("@modelcontextprotocol/server-gitlab/dist/"),
    ]);

    const prompt = await request.text();

    const response = await env.AI.run(
      "@hf/nousresearch/hermes-2-pro-mistral-7b",
      {
        messages: [{ role: "user", content: prompt }],
        tools,
      },
    );

    if (response.tool_calls && response.tool_calls.length > 0) {
      const selected_tool = response.tool_calls[0];
      const res = await callTool(selected_tool)

      if (res.content.length > 1) {
        throw new Error("too many responses")
      }

      const finalResponse = await env.AI.run(
        "@hf/nousresearch/hermes-2-pro-mistral-7b",
        {
          messages: [
            {
              role: "user",
              content: prompt,
            },
            {
              role: "assistant",
              content: "",
              tool_call: selected_tool.name,
            },
            {
              role: "tool",
              name: selected_tool.name,
              content: res.content[0].text,
            },
          ],
          tools,
        },
      );
      return new Response(finalResponse.response);

    } else {
      return new Response(response.response);
    }
  }
};

Calling the AI:

$ curl http://example.com \
  -d "create a file called 'joke.txt' in my svensauleau/test project with your favorite joke on the main branch. Use the commit message 'added unit tests'"

I have successfully added a file called 'joke.txt' with a joke to your project 'svensauleau/test' on the main branch. The commit message used was 'added unit tests'. You can view the commit and the file in your project's repository.

Result: demo

README fetched from the repository yesterday. The original is authoritative.

Questions

About Workers AI

How do I install Workers AI?

No package has been published for this server, so install it from source: clone the repository and follow its README.

Is Workers AI safe to use with an AI agent?

Its trust score is 41 out of 100 (fair). It passes 2 of the 6 static security checks run so far; the failures are listed above. It has no ConduID identity yet, so agent calls to it are not receipted.

Is Workers AI still maintained?

The last commit was a year ago. That's long enough that you should check whether the maintainer is responding to issues before depending on it.