Skip to main content

What is MCP?

Model Context Protocol (MCP) is an open standard for connecting LLMs to external data sources and tools. Zencoder acts as an MCP client — it connects to MCP servers that expose specific capabilities like database queries, API calls, or browser automation. For basic setup, see Integrations & MCP. This page covers advanced configuration, custom server development, and troubleshooting.

Configuration Reference

MCP servers are configured differently depending on your IDE:
Add servers to your VS Code settings under zencoder.mcpServers:
// .vscode/settings.json or User Settings
"zencoder.mcpServers": {
  "server-name": {
    "command": "executable",
    "args": ["arg1", "arg2"],
    "env": {
      "API_KEY": "your-key"
    }
  }
}

Configuration Properties

PropertyRequiredDescription
commandYes (stdio)The executable to run (e.g., npx, uvx, docker)
argsNoArray of command-line arguments
envNoEnvironment variables passed to the server process
urlYes (HTTP)URL for remote HTTP-based MCP servers

Connection Protocols

Zencoder supports three MCP connection protocols:

stdio (Local Servers)

The server runs as a subprocess on your machine. Communication happens over stdin/stdout.
"zencoder.mcpServers": {
  "filesystem": {
    "command": "npx",
    "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/dir"]
  }
}

Streamable HTTP (Remote Servers)

For servers running on a remote host, use HTTP-based connections:
"zencoder.mcpServers": {
  "remote-db": {
    "url": "https://mcp.example.com/db"
  }
}

OAuth2 (Authenticated Remote Servers)

For third-party services requiring OAuth2 authentication:
"zencoder.mcpServers": {
  "github-mcp": {
    "url": "https://mcp.github.com",
    "auth": "oauth2"
  }
}
Platform Support:
  • JetBrains: Full support for stdio, HTTP, and OAuth2
  • VS Code: Supports stdio. HTTP and OAuth2 support is being rolled out — check the changelog for status.
These servers are available in the built-in MCP Library (Agent Tools → MCP Library):
ServerWhat it doesInstall
GitHubRepos, PRs, issues, code searchnpx @modelcontextprotocol/server-github
PostgreSQLQuery databases, inspect schemasnpx @modelcontextprotocol/server-postgres
FilesystemRead/write files outside workspacenpx @modelcontextprotocol/server-filesystem
SlackRead channels, send messagesnpx @modelcontextprotocol/server-slack
FigmaExtract design data for code generationVia MCP Library
SentryPull error details and stack tracesVia MCP Library
LinearIssues, projects, and workflowsVia MCP Library
Brave SearchWeb search for documentation and APIsnpx @modelcontextprotocol/server-brave-search
Browse 100+ servers in the MCP Library — open Agent Tools from the menu and click MCP Library.

Building a Custom MCP Server

If no existing server fits your needs, you can build your own. MCP servers are lightweight programs that expose tools via the MCP protocol.

Quick Start with Python

# server.py
from mcp.server.fastmcp import FastMCP

mcp = FastMCP("my-tool")

@mcp.tool()
def get_deployment_status(service: str) -> str:
    """Check the deployment status of a service."""
    # Your logic here — query your deployment API
    return f"{service} is running v2.3.1 (healthy)"

if __name__ == "__main__":
    mcp.run()
Register it in your MCP configuration:
"zencoder.mcpServers": {
  "deployments": {
    "command": "python",
    "args": ["path/to/server.py"]
  }
}

Quick Start with TypeScript

// server.ts
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";

const server = new McpServer({ name: "my-tool", version: "1.0.0" });

server.tool("get_deployment_status",
  { service: z.string() },
  async ({ service }) => ({
    content: [{ type: "text", text: `${service} is running v2.3.1 (healthy)` }]
  })
);

const transport = new StdioServerTransport();
await server.connect(transport);

Resources

Tool Permissions

Agents request permission before invoking MCP tools. You control this through the permission prompt:
  • Allow once — permit the tool call for this interaction
  • Always allow — trust this tool for all future calls (configurable in settings)
  • Deny — block the tool call
You can configure trusted tools in Zencoder settings to skip the permission prompt for tools you use frequently.

Troubleshooting

  • Verify the configuration syntax in your settings
  • Check that the command executable is available in your PATH
  • Restart the IDE after adding a new server
  • Look at the Zencoder output panel for error messages
  • Ensure the server implements the MCP protocol correctly
  • Check that required environment variables are set in the env block
  • For Docker-based servers, verify Docker is running
  • Test the server independently: echo '{"jsonrpc":"2.0","method":"tools/list","id":1}' | your-command
  • OAuth2 is fully supported on JetBrains; VS Code support is being rolled out
  • Clear cached tokens and re-authenticate
  • Verify the OAuth2 redirect URL is configured correctly in the service provider
  • Check server logs for unhandled exceptions
  • Ensure the server handles malformed input gracefully
  • For remote servers, verify network connectivity and firewall rules
  • Increase timeout values if your server processes large datasets

Integrations & MCP

Basic MCP setup and the built-in MCP Library

Coding Agent

The primary agent that invokes MCP tools