Related MCP Server Resources

Explore more AI models, providers, and integration options:

  • Explore AI Models
  • Explore AI Providers
  • Explore MCP Servers
  • LangDB Pricing
  • Documentation
  • AI Industry Blog
  • Powertools MCP Search Server
  • Image Processor MCP Server
  • AWS Knowledge Base Retrieval MCP Server
  • Weekly Weather
  • SQLite MCP Server
Back to MCP Servers
GenAIScript

GenAIScript

Public
microsoft/genaiscript

Programmatically create, manage, and execute JavaScript-based prompts for large language models with seamless Visual Studio Code integration, supporting multiple AI providers, data schemas, and file ingestion for efficient Model Context Protocol workflows.

typescript
0 tools
May 30, 2025
Updated Jun 4, 2025

Supercharge Your AI with GenAIScript

MCP Server

Unlock the full potential of GenAIScript through LangDB's AI Gateway. Get enterprise-grade security, analytics, and seamless integration with zero configuration.

Unified API Access
Complete Tracing
Instant Setup
Get Started Now

Free tier available • No credit card required

Instant Setup
99.9% Uptime
10,000+Monthly Requests

!A yellow square with the word "gen" in lowercase black letters above the uppercase black letters "AI."

GenAIScript

Prompting is Coding

Programmatically assemble prompts for LLMs using JavaScript. Orchestrate LLMs, tools, and data in code.

  • JavaScript toolbox to work with prompts

  • Abstraction to make it easy and productive

  • Seamless Visual Studio Code integration or flexible command line

  • Built-in support for GitHub Copilot and GitHub Models, OpenAI, Azure OpenAI, Anthropic, and more

  • 📄 Read the ONLINE DOCUMENTATION at microsoft.github.io/genaiscript

  • 💬 Join the Discord server

  • 📝 Read the blog for the latest news

  • 📺 Watch Mr. Maeda's Cozy AI Kitchen

  • 🤖 Agents - read the llms-full.txt


Hello world

Say to you want to create an LLM script that generates a 'hello world' poem. You can write the following script:

$`Write a 'hello world' poem.`

The $ function is a template tag that creates a prompt. The prompt is then sent to the LLM (you configured), which generates the poem.

Let's make it more interesting by adding files, data and structured output. Say you want to include a file in the prompt, and then save the output in a file. You can write the following script:

// read files const file = await workspace.readText("data.txt") // include the file content in the prompt in a context-friendly way def("DATA", file) // the task $`Analyze DATA and extract data in JSON in data.json.`

The def function includes the content of the file, and optimizes it if necessary for the target LLM. GenAIScript script also parses the LLM output and will extract the data.json file automatically.


🚀 Quickstart Guide

Get started quickly by installing the Visual Studio Code Extension or using the command line.


✨ Features

🎨 Stylized JavaScript & TypeScript

Build prompts programmatically using JavaScript or TypeScript.

def("FILE", env.files, { endsWith: ".pdf" }) $`Summarize FILE. Today is ${new Date()}.`

🚀 Fast Development Loop

Edit, Debug, Run, and Test your scripts in Visual Studio Code or with the command line.


🔗 Reuse and Share Scripts

Scripts are files! They can be versioned, shared, and forked.

// define the context def("FILE", env.files, { endsWith: ".pdf" }) // structure the data const schema = defSchema("DATA", { type: "array", items: { type: "string" } }) // assign the task $`Analyze FILE and extract data to JSON using the ${schema} schema.`

📋 Data Schemas

Define, validate, and repair data using schemas. Zod support builtin.

const data = defSchema("MY_DATA", { type: "array", items: { ... } }) $`Extract data from files using ${data} schema.`

📄 Ingest Text from PDFs, DOCX, ...

Manipulate PDFs, DOCX, ...

def("PDF", env.files, { endsWith: ".pdf" }) const { pages } = await parsers.PDF(env.files[0])

📊 Ingest Tables from CSV, XLSX, ...

Manipulate tabular data from CSV, XLSX, ...

def("DATA", env.files, { endsWith: ".csv", sliceHead: 100 }) const rows = await parsers.CSV(env.files[0]) defData("ROWS", rows, { sliceHead: 100 })

📝 Generate Files

Extract files and diff from the LLM output. Preview changes in Refactoring UI.

$`Save the result in poem.txt.`
FILE ./poem.txt The quick brown fox jumps over the lazy dog.

🔍 File Search

Grep or fuzz search files.

const { files } = await workspace.grep(/[a-z][a-z0-9]+/, { globs: "*.md" })

Classify

Classify text, images or a mix of all.

const joke = await classify( "Why did the chicken cross the road? To fry in the sun.", { yes: "funny", no: "not funny", } )

LLM Tools

Register JavaScript functions as tools (with fallback for models that don't support tools). Model Context Protocol (MCP) tools are also supported.

defTool( "weather", "query a weather web api", { location: "string" }, async (args) => await fetch(`https://weather.api.api/?location=${args.location}`) )

LLM Agents

Register JavaScript functions as tools and combine tools + prompt into agents.

defAgent( "git", "Query a repository using Git to accomplish tasks.", `Your are a helpful LLM agent that can use the git tools to query the current repository. Answer the question in QUERY. - The current repository is the same as github repository.`, { model, system: ["system.github_info"], tools: ["git"] } )

then use it as a tool

script({ tools: "agent_git" }) $`Do a statistical analysis of the last commits`

See the git agent source.


🔍 RAG Built-in

Vector search.

const { files } = await retrieval.vectorSearch("cats", "**/*.md")

🐙 GitHub Models and GitHub Copilot

Run models through GitHub Models or GitHub Copilot.

script({ ..., model: "github:gpt-4o" })

💻 Local Models

Run your scripts with Open Source models, like Phi-3, using Ollama, LocalAI.

script({ ..., model: "ollama:phi3" })

🐍 Code Interpreter

Let the LLM run code in a sand-boxed execution environment.

script({ tools: ["python_code_interpreter"] })

🐳 Containers

Run code in Docker containers.

const c = await host.container({ image: "python:alpine" }) const res = await c.exec("python --version")

Video processing

Transcribe and screenshot your videos so that you can feed them efficiently in your LLMs requests.

// transcribe const transcript = await transcript("path/to/audio.mp3") // screenshots at segments const frames = await ffmpeg.extractFrames("path_url_to_video", { transcript }) def("TRANSCRIPT", transcript) def("FRAMES", frames)

🧩 LLM Composition

Run LLMs to build your LLM prompts.

for (const file of env.files) { const { text } = await runPrompt((_) => { _.def("FILE", file) _.$`Summarize the FILE.` }) def("SUMMARY", text) } $`Summarize all the summaries.`

🅿️ Prompty support

Run your Prompty files as well!

--- name: poem --- Write me a poem

Pluggable Secret Scanning

Scan your chats for secrets using secret scanning.

{ "secretPatterns": { ..., "OpenAI API Key": "sk-[A-Za-z0-9]{32,48}" } }

⚙ Automate with CLI or API

Automate using the CLI or API.

npx genaiscript run tlaplus-linter "*.tla"
import { run } from "genaiscript/api" const res = await run("tlaplus-linter", "*.tla")

Safety First!

GenAIScript provides built-in Responsible AI system prompts and Azure Content Safety supports to validate content safety.

script({ ..., system: ["system.safety_harmful_content", ...], contentSafety: "azure" // use azure content safety }) const safety = await host.contentSafety() const res = await safety.detectPromptInjection(env.vars.input)

💬 Pull Request Reviews

Integrate into your Pull Requests checks through comments, reviews, or description updates. Supports GitHub Actions and Azure DevOps pipelines.

npx genaiscript ... --pull-request-reviews

⭐ Tests and Evals

Build reliable prompts using tests and evals powered by promptfoo.

script({ ..., tests: { files: "penguins.csv", rubric: "is a data analysis report", facts: "The data refers about penguin population in Antarctica.", }})

LLM friendly docs

The entire content of the docs is rendered at https://microsoft.github.io/genaiscript/llms-full.txt in markdown. Feed it directly into your favorite RAG system.

If you are an LLM crawler, add the .md suffix to any documentation URLs to get a raw markdown content. For example, https://microsoft.github.io/genaiscript/guides/prompt-as-code.md (note the .md extension)

Contributing

We accept contributions! Checkout the CONTRIBUTING page for details and developer setup.


Trademarks

This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.

Publicly Shared Threads0

Discover shared experiences

Shared threads will appear here, showcasing real-world applications and insights from the community. Check back soon for updates!

Share your threads to help others
Related MCPs5
  • Powertools MCP Search Server
    Powertools MCP Search Server

    Model Context Protocol server enabling efficient local search of AWS Lambda Powertools documentation...

    2 tools
    Added May 30, 2025
  • Image Processor MCP Server
    Image Processor MCP Server

    A TypeScript-based Model Context Protocol server enabling creation, access, and summarization of tex...

    2 tools
    Added May 30, 2025
  • AWS Knowledge Base Retrieval MCP Server
    AWS Knowledge Base Retrieval MCP Server

    Retrieval-Augmented Generation (RAG) server enabling efficient extraction of contextual information ...

    Added May 30, 2025
  • Weekly Weather
    Weekly Weather

    Provides 8-day global weather forecasts and current conditions with detailed hourly and daily data, ...

    Added May 30, 2025
  • SQLite MCP Server
    SQLite MCP Server

    A Model Context Protocol server enabling AI models to execute SQL queries, manage SQLite database sc...

    Added May 30, 2025